【干货】从Google的PaaS平台说起,解析中美Docker生态圈
作者:王璞
本文选自清华大数据产业联合会会员、数人云CEO王璞博士在5月18日第八届中国云计算大会上主题为“中美容器之融合与变革”的分享,以下是演讲实录:
容器VS虚拟化
容器的技术发展历程
云计算分为三层,SaaS、PaaS、IaaS,这三层随着云计算发展得到不同程度的发展,比如说SaaS的发展,由于各行各业的互联网相关业务发展,SaaS以服务为中心,SaaS提供各种各样的服务,各种互联网业务型的,HR、财务、CRM等等,这些不同的服务,企业应用的服务都可以以SaaS方式交付这些都有弹性特征。另外一方面云计算发展以后对于大规模数据中心的需求越来越旺盛,数据中心规模越来越大,数据中心相对管理负责度也增加很多,跟数据中心相关就是IaaS和PaaS,数据中心是云计算云端真正计算的载体。比如说IaaS以资源为中心,IaaS要提供资源弹性,数据中心里面IaaS管理整个数据中心资源,让整个资源以弹性方式提供出来。PaaS在数据中心以应用为中心,PaaS提供应用的弹性,这是云计算的三层,都得到不同程度的发展。但是跟IaaS和SaaS相比PaaS发展其实是相对滞后的。比如说上一代PaaS没有解决好本身复杂度的问题,后面我简单介绍一下。
Docker催生的新一代PaaS
2014年前后上一代PaaS基本上是市场的最低点,我2014年回国跟国内同行讨论我们如何做一个PaaS,PaaS有没有前景,2014年国内同行都对PaaS持怀疑的态度,Docker2013年在美国诞生的,Docker出来以后催生新一代的PaaS,很重要一点Docker出来以后形成事实上应用交付的标准,未来大家普遍这样认为,未来企业级应用都会以容器Docker的形式进行交付。这样很好的一点Docker定义了企业级客户和PaaS之间的一个边界,这个边界怎么理解?就是企业只需要关心自己的业务应用、业务程序,企业业务程序分装在容器里面,PaaS只需要提供标准的容器运行环境,有了清晰边界以后PaaS复杂度大大降低,PaaS作为一个标准,之前没有容器的时候PaaS和企业客户之间边界在哪里?边界在于程序编程语言这个层面,比如说Heroku等需要支持各样的开发语言,上一代的PaaS复杂度非常高,新一代的PaaS由于Docker定义一个标准,新一代PaaS可以不用管业务应用拿java还是其他语言写的,解决Docker运行所需要的CPU、网络、负载均衡、报警等常见的企业内部的需求,这样新一代PaaS复杂度大大降低,这个也就是我说为什么Docker出现催生了新一代的PaaS。
很重要一点中国和美国在新一代PaaS发展方向是齐头并进的。
新一代PaaS平台在中美落地情况
Google 的 PaaS
讲到PaaS不得不讲一下谷歌的PaaS,其中一个原因有很大影响力,尤其是谷歌内部的PaaS非常复杂、功能无比的强大,我之前在谷歌工作过,我见过谷歌的PaaS是怎么运作的。首先几个特点,谷歌内部的PaaS分层的,PaaS管理东西很多,PaaS只管理应用,跟应用相关还有很多东西,资源分配,任务调动等等,谷歌PaaS以一种容器方式分装分发,谷歌有著名的分布式文件系统,还有各种各样数据管理的数据,还有Big Table、 MapReduce,这是谷歌分布式应用编程的范式,这是PaaS提供的能力。
谷歌PaaS的特点是什么?就是轻量,轻量怎么理解?PaaS支撑应用快速迭代快速上线,大家提的持续交付持续集成的概念。谷歌PaaS是以应用为中心的,PaaS平台一定提供应用弹性能力,让各种各样应用按需使用资源,PaaS平台提供容错能力把开发运维复杂度降低,这三点我称之为应用PaaS平台的轻量特性。
基于Docker的新一代PaaS
这里面我主要把新一代PaaS的特性给它勾勒了出来,跟谷歌的PaaS有相似的地方,新一代PaaS基于微服务理念打造的,特别是像谷歌的PaaS分层管理。新一代PaaS也有轻量的特性,介绍谷歌PaaS的轻量特性,应用要具有弹性要分布发布,再一个容错性强、易于维护,PaaS也要对计算资源故障进行容错。这里面特别强调一点大规模数据中心或者现在这种数据中心对于硬件管理方式有两种,一种上一代的宠物型管理方式,另外是放养型的。对于宠物型的数据中心管理方式其实是很常见的,比如说对于数据库服务器,一般企业里面数据库服务器绝对不允许宕机,数据库宕机所有应用全部宕了,所以要有人为维护,DBA,人围机器去转,这是宠物型对数据中心的管理,一旦数据库宕机人马上去修。另外是放养型跟宠物型相反,放养型什么意思?比如说谷歌这样的量级中心,两百万台服务器不可能保证每一台服务器都是处于工作状态,一定有一些服务器处于故障状态,要通过软件PaaS平台保证上面应用服务不宕机,PaaS对于软硬件都要有很强的容错能力,放养型的工作管理必然极大降低对数据中心维护,包括PaaS本身,维护成本运维成本都会大大降低,这是新一代PaaS很重要的特性主要就是轻量。
数人云的新一代PaaS实现
我们实现新一代云计算平台首先有一个是核心模块,核心模块本身也是分好几个层面的,核心模块基本上围绕运行时的基本管理提供比如说容器运行的标准环境,这个核心模块包括几个层面,首先应用的封装用到的是Docker的技术,这是很火的容器技术。光有应用封装不够的,应用封装完应用运行还有别的需求,需要CPU、内存需求等等,资源分配核心模块里面功能我们基于Apache来做的,应用不是运行在一台服务器,大规模数据中心有成百上千台服务器,对于大规模的集群里面应用该怎么调度这是很关键的模块,我们用的是任务调度模块做的。比如说应用分发,涉及到应用的更新上线等等,比如说老版本的应用已经运行了,新版本应用程序我要分发下去,新版本应用我要有一个分发的仓库存在什么地方,这时Docker的镜像仓库用于应用分发。
核心模块还要管理网络,我们很多客户提出来不同应用之间的网络要进行应用隔离,有些应用可达有些应用不可达,这都需要对容器之间网络进行有效管理。我们通过Calico来实现网络管理。
还有服务发现,容器运行环境在大规模数据中心里面,对于容器调度不是静态调度,不是一个容器应用就跑到一台服务器上,它是动态调度的,不同应用之间我有通信需求,我应用A怎么找到应用B就需要有应用发现的需求,这是核心模块的基本功能。
周边模块支撑应用运行方便应用运维,周边模块体现出新一代PaaS平台的应用度。
再一个弹性伸缩这也是互联网带来新业务的特点,互联网业务最大特点就是集中爆发,很经典例子就是淘宝双十一,12306大家订票,弹性伸缩是PaaS平台必须提供的性能,没有弹性面对集中爆发的业务需求这个后台支撑不了,弹性伸缩我们用API实现的。再一个监控报警,任何企业生产环境系统不是孤立存在的,一定有各种各样的监控报警,生产系统谁也不能保证100%的正常。
再一个日志的处理,这是企业很强的需求,生产环境里面各种各样的业务都有,生产环境都是比较大规模的集群环境,不同应用产生的日志留在不同的服务器上,怎么把这些日志在分布式环境下进行统一收集查询统一处理,需要有日志统一管理,我们主要用的是ELK这个模式。
再一点就是文件存储,企业生产环境数据中心里面业务应用必然有一些数据存下来,就要存在文件系统上,文件存储我们用的是Hadoop的文件系统。再有对于数据的管理,多个应用要对数据同时进行读写操作,对于数据访问管理等等这些我们用的是HDFS。还有我们用Kafka消息队列来处理不同应用之间的异步通讯需求,未来Kafka可以替代企业服务总线。还有数据处理,现在企业对于大数据处理有很强的需求,大家用Hadoop还有Spark这些,我们主要用Spark做大数据处理更快。
这个背景图其实就是黑客帝国电影的主题图。黑客帝国里边讲的是未来人类生活在虚拟软件定义世界里面。这个软件定义世界正在发生,每个人现在每天都要大量跟各种各样的软件打交道。随着云计算新一代PaaS平台普及,随着容器技术如火如荼的发展和推广,下一步就是不仅仅是软件定义世界了,我们最后会达到容器定义的世界,所有的软件都是以容器形式交付运行的,欢迎大家来到容器定义的世界。
via:数据派
End.