王璞
容器技术本身已经有十几年的发展历史,Docker作为容器技术的一种,在云计算大规模的发展推动下,日益火热。
容器技术其实本身并不是什么崭新的技术,倒推到2000年Free BSD的Jail,2005年出现的Solaris Containers,这些都是容器技术的早期实现方式。很多人会把容器技术跟虚拟化技术相比较。比较通俗的说法是,容器是极度轻量的虚拟机。虚拟机是物理服务器里装操作系统,再装上虚拟机管理软件,生成很多虚拟机,然后虚拟机再装操作系统和各种各样的应用。容器是,物理服务器里装操作系统,绝大多数情况下,容器基于的操作系统是Linux操作系统,然后Linux里装一个容器软件,最常见的是Docker,用Docker运行各种各样的容器,容器里不需要再装一次操作系统,只装各种各样的应用。如此比较,容器的最大优势就是轻量。另外,用容器封装应用时,会把程序本身和依赖库都打包在一起,这样容器应用具有可移植性,在不同的Linux环境下都可运行,而不需要再安装依赖库。
Docker属于容器技术的一种。Docker有镜像的概念,Docker镜像和虚拟机镜像不一样的特点就是Docker的镜像是分层的,最下面是基础的镜像,是基础Linux环境,上面每一层镜像装不同应用。
Docker镜像分层最大的好处就是应用分发很方便,每次分发Docker应用的时候,只需要下载更新部分的镜像,而不用重新下载整个镜像,实现应用增量分发更新。容器本身用于封装各种应用,容器之外还有各种管理需求。
目前美国的容器技术已经形成了一个相对完整的生态圈,各种各样的厂商,大约近百家。但中国现在还画不出像美国一样丰富的Docker生态圈,不过我相信未来两三年时间我们不断的追赶,同样能够画出非常丰富的Docker生态圈。
Docker催生新一代PaaS
众所周知,云计算分为三层,SaaS、PaaS、IaaS,这三层随着云计算整体的发展也得到了不同程度的发展。SaaS的发展,由于各行各业的互联网相关业务的发展,SaaS以服务为中心,向客户提供各种各样的服务,包括HR、财务、CRM等业务类型的服务,这些企业应用的服务都可以SaaS方式交付。
此外,云计算的不断发展也对大规模数据中心的需求越来越旺盛,数据中心是云计算云端真正计算的载体。数据中心规模越来越大,但数据中心相对管理的复杂度也日益增加,与数据中心相关的就是IaaS和PaaS,比如说IaaS以资源为中心,IaaS提供资源弹性,数据中心里面IaaS管理整个数据中心资源,让整个资源以弹性方式提供出来。PaaS在数据中心中以应用为中心,PaaS提供应用的弹性。
PaaS、SaaS、IaaS作为云计算的三层,都得到了不同程度的发展。但与IaaS和SaaS相比,PaaS发展其实是相对滞后的。比如说上一代PaaS没有解决好本身复杂度的问题。
2014年前后,上一代PaaS的发展基本上到了市场的最低点,国内同行都对PaaS持怀疑的态度。Docker是2013年在美国诞生的,很重要一点是Docker出来以后形成事实上应用交付的标准,未来大家普遍这样认为,未来企业级应用都会以容器Docker的形式进行交付。因此,Docker定义了企业级客户和PaaS之间的一个边界,那么怎么理解这个边界?
企业只需要关心自己的业务应用、业务程序,企业业务程序分装在容器里面,PaaS只需要提供标准的容器运行环境,有了清晰边界以后,PaaS的复杂度大大降低。
那么之前没有容器的时候,PaaS和企业客户之间边界在哪里?边界在于程序编程语言这个层面,比如说Heroku等需要支持各样的开发语言,上一代的PaaS复杂度非常高,新一代的PaaS由于Docker定义一个标准,新一代PaaS可以不用管业务应用是用Java还是其他语言写的,解决Docker运行所需要的CPU、网络、负载均衡、报警等常见的企业内部的需求即可,这样新一代PaaS的复杂度就大大降低了。这也是说,为什么Docker的出现催生了新一代的PaaS。
新一代PaaS平台在中美落地情况
对比新一代PaaS在中美两国落地的情况,基本上可以看出,新一代PaaS落地从互联网公司、到IT巨头再到传统行业,各种各样的落地形式都有。所以从发展势头上来,中美两国是齐头并进的。
那么,讲到PaaS不得不讲一下谷歌的PaaS,其中一个重要的原因是谷歌内部的PaaS非常复杂、功能强大,对业界的PaaS平台有很大影响。
谷歌PaaS的特点是什么?就是轻量,怎么理解轻量?PaaS支撑应用快速迭代、快速上线,也就是大家所倡导的持续交付、持续集成的概念。
谷歌PaaS是以应用为中心的,PaaS平台一定具备提供应用弹性的能力,让各种各样的应用按需使用资源。同时,PaaS平台提供的容错能力,可把开发运维的复杂度降低,这三点称之为应用PaaS平台的轻量特性。
另外,谷歌内部的PaaS非常强大,谷歌资源管理和任务调动数据,可以对谷歌两百多台服务器统一进行管理。而大规模的数据中心其实硬件故障频率很高:如一年至少有一个机架做挪动,至少有一次机架进行排线,一年可能有12次路由器重启,3次路由器故障,每年大概有上千次服务器宕机,由硬件故障造成的宕机,一年有数千次的硬盘损坏。
目前大规模数据中心基本都是用X86服务器,都不是像大型机或小型机这样的高可靠硬件。基于X86服务器的数据中心怎么应对这些硬件故障,保障应用服务的高可靠,这是PaaS和IaaS一起要做的工作。
基于Docker的新一代PaaS
新一代PaaS是基于微服务理念打造的,特别是像谷歌的PaaS分层管理。新一代PaaS也有轻量的特性,介绍谷歌PaaS的轻量特性,应用要具有弹性要分布发布,容错性强、易于维护,PaaS也要对计算资源故障进行容错。
目前来看,大规模数据中心或者很多企业的数据中心对于硬件的管理方式有两种,一种是上一代的管理方式—宠物型管理方式,另外一种是放养型的管理方式。
宠物型数据中心管理方式其实是很常见的,比如说对于数据库服务器,一般企业里数据库服务器绝对不允许宕机,数据库宕机会导致所有应用全部宕机,所以必须要有人为维护,人围着机器去转,这是宠物型管理方式对数据中心的管理,一旦数据库有问题,人会马上去修。
而放养型管理方式与宠物型管理方式相反,放养型管理又有什么特点呢?比如说谷歌这样量级的数据中心,两百万台服务器不可能保证每一台服务器都是处于正常的工作状态,一定会有一些服务器处于故障状态,要通过软件PaaS平台保证上面的应用服务不宕机。PaaS对于软硬件都有很强的容错能力,放养型的工作管理必然极大降低对数据中心维护,包括PaaS本身,维护成本运维成本都会降低,这是新一代PaaS最大的特点—轻量级。
其实,目前中美在新一代PaaS发展和落地方面几乎齐头并进。使用基于Docker的新一代PaaS应用的公司,在美国不仅有Twitter、Airbnb和eBay这些互联网公司,也有Intel、Microsoft这样的IT巨头,以及AT&T这样的传统电信运营商;与之相比,国内的互联网公司爱奇艺、去哪儿网,IT巨头华为,以及浙江移动、等这样的企业级客户,实践这项新技术。
作为新一代轻量级PaaS,数人云基于开源技术领域的实践,采用以Docker为代表的容器技术对应用进行封装,具有弹性扩缩、灰度发布、监控报警等特性,可部署在公有云、私有云以及混合云上,帮助用户在云端快速建立并稳定运行一个高性能生产环境,实现一站式的微服务架构集群系统。