文档章节

微服务、容器与容器云-从入门到放弃

Soi
 Soi
发布于 2017/09/11 09:10
字数 1115
阅读 8
收藏 1

前言

驱动技术的,从来都不应该是技术,也不是情怀,应该是不断变化的诉求。

在过去的不知道多少年前,我们的应用和数据库,还部署在一台机器上,大概如下:

+----------+                   +--------------+
|          |                   |              |
|          |                   |              |
|          |                   |  +--------+  |
|          +--------------------> |        |  |
|          |                   |  |  App   |  |
|          | <------------------+ | ^    + |  |
|  Client  |                   |  +--------+  |
|          |                   |    |    |    |
|          |                   |  +--------+  |
|          |                   |  | +    v |  |
|          |                   |  |   DB   |  |
|          |                   |  |        |  |
|          |                   |  +--------+  |
|          |                   |              |
|          |                   |     Server   |
+----------+                   +--------------+

随着业务的增长,这样的架构已经不能满足大量的请求,这时候架构也随之改变,把应用与数据库拆分开来:

+--------+               +---------+             +-------+
|        |               |         |             |       |
|        +-------------> |         +-----------> |       |
| Client |               |   App   |             |   DB  |
|        | <-------------+         | <-----------+       |
|        |               |         |             |       |
+--------+               +---------+             +-------+

当然,业务是不停的增长的,而上述这样的也会发生变化,可以把应用与数据库进行集群部署。

然后...

不搭的后语

而如今,技术与架构,在业务的驱动下,早已发生了巨大的变化。

在最近两年,最火的,莫过于服务化,容器化与云化。

微服务

微服务架构,它把软件围绕业务功能结构进行划分、拆解成服务,以服务构建应用,而服务可以独立部署、独立扩展,服务也可以提供模块化的边界,并且不同的使用也可以使用不同的开发语言。

微服务风格的特性:

  • 组件与服务
  • 围绕业务功能进行组织
  • 产品不是项目
  • 强化终端及弱化通道
  • 分散治理
  • 分散数据管理
  • 基础设施自动化
  • 容错性设计
  • 设计改进

容器

容器,另一个热门的话题,而在这个话题中,我们能够快速想到的,应该是Docker。

Docker 最初是 dotCloud 公司创始人 Solomon Hykes 在法国期间发起的一个公司内部项目,它是基于 dotCloud 公司多年云服务技术的一次革新,并于 2013 年 3月以 Apache 2.0 授权协议开源。

Docker包括三个基本概念镜像、容器、仓库。镜像和容器的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实例;容器可以被创建、启动、停止、删除、暂停等;而仓库,则是用来统一存储镜像,进行版本控制。

使用容器技术,带来了以下好处:

  • 持续部署与测试
  • 跨云平台支持
  • 环境标准化和版本控制
  • 高资源利用率与隔离
  • 简单易用
  • ...

容器云

容器云是以容器为资源分割和调度的基本单位,封装整个软件运行时环境,为开发者和系统管理员提供用于构建、发布和运行分布式运用的平台。

当容器云专注于资源共享与隔离、容器编排与部署时,它更接近传统的IaaS;当容器云渗透到应用支撑与运行时环境时,它更接近传统的PaaS。

使用容器云,带来了以下好处:

  • 更高效的利用系统资源
  • 更快速的启动时间
  • 一致的运行环境
  • 持续交付和部署
  • 更轻松的迁移
  • 更轻松的维护和扩展。

服务化,容器化与云化

当软件服务化后,我们的架构看起来应该是这样的:

+-------+  +--------------------------------------+ +--------------------------+
|       |  |                                      | |                          |
|       |  |                WebUI                 | |         App              |
|       |  |                                      | |                          |
|       |  +--------------------------------------+ +--------------------------+
|       |
|       |  +-------------------------------------------------------------------+
|       |  |                                                                   |
|       |  |                            RESTful API                            |
|       |  +-------------------------------------------------------------------+
|       |
|       |  +-----------+  +-----------------------------------+  +-------------+
|       |  |           |  |  +-----------+    +------------+  |  |             |
|Monitor|  | Registry  |  |  | Ser^ice1  |    |  Ser^ice2  |  |  |  Configure  |
|       |  | &         |  |  +-----------+    +------------+  |  |             |
|       |  | Dsco^ery  |  |                                   |  |             |
|       |  |           |  |  +-----------+                    |  |             |
|       |  |           |  |  |   ...     |     Ser^ices       |  |             |
|       |  |           |  |  +-----------+                    |  |             |
|       |  |           |  |                                   |  |             |
|       |  |           |  |                                   |  |             |
|       |  +-----------+  +-----------------------------------+  +-------------+
|       |
|       |  +-------------------------------------------------------------------+
|       |  |  +-------------+   +------------+    +----------+                 |
|       |  |  |     DB      |   |     MQ     |    |    ...   |                 |
|       |  |  +-------------+   +------------+    +----------+                 |
+-------+  +-------------------------------------------------------------------+

众多的服务给运维带来极大的挑战,要求能够快速地发布与容错处理,而如果再使用人肉运维的方式再也无法满足。

这时候,一个借助于CI/CD的研发流水线的开发方式,渐渐进入了视野:

    +--------------+           +------------+ Re^iew  +--------------+
    |              |           |            +-------> |              |
    |  Developer   |  Push     |            |         |  Maintainer  |
    |              +-------->  |   Repo     | Merge   |              |
    |              |           |            | <----+  |              |
    +------+-------+           +-----+------+         +--------------+
           ^                         |
           |                         |
           |                         v  Trigger
           |
           |                   +------------+
    Feedback                   |            |
           |         CI        |            |     CD
           |        +----------+   CI/CD    +-------------+
           |        |          |            |             |
           |        v          +------------+             v
           |
+-------------------------------+        +--------------------------------------+
|-------+ +-------+ +--------+  |        |                                      |
||Build +-> Unit  +->Analyze +-+|        | +---------+ +---------+ +---------+  |
|-------+ +-------+ +--------+ ||        | |Test Env | |UAT Env  | |Production  |
|-------+ +-------+ +--------+ ||        | |         | |         | |         |  |
||Deploy<-+Package<-+  Test  <-+|        | +---------+ +---------+ +---------+  |
|-------+ +-------+ +--------+  |        |                                      |
+-------------------------------+        +--------------------------------------+

可以借助容器与容器云,将服务进行持续集成、持续部署与交付,最终达到自动化。

放弃

服务化是未来吗?容器是未来吗?容器云是未来吗?

谁知道呢?未来,还没来!

只是现在,作为一枚面向搜索引擎复制粘贴的开发者,在不停的学习中,开拓自己的视野,积累自己的经验,为后来的业务需求打下坚实的基础也是势在必行。


参考:

微服务(Microservices)

《Docker——容器与容器云》试读:1.3 进化:从容器到容器云

本文转载自:https://ronggle.com/2017/05/22/microservice-container-and-container-cloud/

共有 人打赏支持
Soi

Soi

粉丝 16
博文 11
码字总数 4845
作品 0
江北
Docker学习路线图 (持续更新中)

Docker学习路线图 最近很多阿里内部的同学和客户私信来咨询如何学习 Docker 技术。为此,我们列了一个路线图供大家学习Docker和阿里云容器服务。这个列表包含了一些社区的优秀资料和我们的原...

易立
2016/05/09
0
0
2017 年,开启了 IT 架构的新纪元

今年,微服务,容器和云非常普遍。6月份,Evans Data Corp 进行的一项调查显示,几乎一半的云开发人员正在使用不可变的架构和微服务。有几项新服务是用于管理微服务,包括一些大的科技公司的...

周其
2017/12/28
3K
4
微服务、容器和云开启了IT架构的新纪元

  【IT168 资讯】今年非常流行微服务、容器和云。Evans Data Corp在6月份进行的一项调查显示,近半数的云开发人员正在使用不可变的架构和微服务。包括Google、IBM、Lyft和Apache等大型科技...

it168网站
2017/12/28
0
0
聚焦“微服务与容器云” 2017CIO时代线下CIO沙龙顺利举行

2017年2月23日下午,CIO时代2017年第一场线下CIO沙龙在上海复旦大学老逸夫楼顺利举行。本次活动主题聚焦“微服务与容器云”,来自复旦大学、CIO时代学院、上海电气、上海汽车、港中旅华贸货运...

玄学酱
04/18
0
0
【干货整理】Docker,从入门说起……

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不...

慕课网官方_运营中心
07/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

WinDbg

参考来自:http://www.cnit.net.cn/?id=225 SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols ctrl + d to open dump_file Microsoft (R) Windows Debugger Version 6.12.0002.633......

xueyuse0012
今天
2
0
OSChina 周五乱弹 —— 想不想把92年的萝莉退货

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @罗马的王:分享松澤由美的单曲《地球ぎ》 很久没看圣斗士星矢了 《地球ぎ》- 松澤由美 手机党少年们想听歌,请使劲儿戳(这里) @开源中国首...

小小编辑
今天
14
2
springBoot条件配置

本篇介绍下,如何通过springboot的条件配置,控制Bean的创建 介绍下开发环境 JDK版本1.8 springboot版本是1.5.2 开发工具为 intellij idea(2018.2) 开发环境为 15款MacBook Pro 前言 很多时候,...

贺小五
今天
1
0
javascript source map 的使用

之前发现VS.NET会为压缩的js文添加一个与文件名同名的.map文件,一直没有搞懂他是用来做什么的,直接删除掉运行时浏览器又会报错,后来google了一直才真正搞懂了这个小小的map文件背后的巨大...

粒子数反转
昨天
1
0
谈谈如何学Linux和它在如今社会的影响

昨天,还在农耕脑力社会,今天已经人工智能技术、大数据、信息技术的科技社会了,高速开展并迅速浸透到当今科技社会的各个方面,Linux日益成为人们信息时代的到来,更加考验我们对信息的处理程...

linux-tao
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部