【干貨】從Google的PaaS平臺說起,解析中美Docker生態(tài)圈
作者:王璞
本文選自清華大數(shù)據(jù)產(chǎn)業(yè)聯(lián)合會會員、數(shù)人云CEO王璞博士在5月18日第八屆中國云計(jì)算大會上主題為“中美容器之融合與變革”的分享,以下是演講實(shí)錄:
容器VS虛擬化

容器的技術(shù)發(fā)展歷程



云計(jì)算分為三層,SaaS、PaaS、IaaS,這三層隨著云計(jì)算發(fā)展得到不同程度的發(fā)展,比如說SaaS的發(fā)展,由于各行各業(yè)的互聯(lián)網(wǎng)相關(guān)業(yè)務(wù)發(fā)展,SaaS以服務(wù)為中心,SaaS提供各種各樣的服務(wù),各種互聯(lián)網(wǎng)業(yè)務(wù)型的,HR、財(cái)務(wù)、CRM等等,這些不同的服務(wù),企業(yè)應(yīng)用的服務(wù)都可以以SaaS方式交付這些都有彈性特征。另外一方面云計(jì)算發(fā)展以后對于大規(guī)模數(shù)據(jù)中心的需求越來越旺盛,數(shù)據(jù)中心規(guī)模越來越大,數(shù)據(jù)中心相對管理負(fù)責(zé)度也增加很多,跟數(shù)據(jù)中心相關(guān)就是IaaS和PaaS,數(shù)據(jù)中心是云計(jì)算云端真正計(jì)算的載體。比如說IaaS以資源為中心,IaaS要提供資源彈性,數(shù)據(jù)中心里面IaaS管理整個(gè)數(shù)據(jù)中心資源,讓整個(gè)資源以彈性方式提供出來。PaaS在數(shù)據(jù)中心以應(yīng)用為中心,PaaS提供應(yīng)用的彈性,這是云計(jì)算的三層,都得到不同程度的發(fā)展。但是跟IaaS和SaaS相比PaaS發(fā)展其實(shí)是相對滯后的。比如說上一代PaaS沒有解決好本身復(fù)雜度的問題,后面我簡單介紹一下。
Docker催生的新一代PaaS
2014年前后上一代PaaS基本上是市場的最低點(diǎn),我2014年回國跟國內(nèi)同行討論我們?nèi)绾巫鲆粋€(gè)PaaS,PaaS有沒有前景,2014年國內(nèi)同行都對PaaS持懷疑的態(tài)度,Docker2013年在美國誕生的,Docker出來以后催生新一代的PaaS,很重要一點(diǎn)Docker出來以后形成事實(shí)上應(yīng)用交付的標(biāo)準(zhǔn),未來大家普遍這樣認(rèn)為,未來企業(yè)級應(yīng)用都會以容器Docker的形式進(jìn)行交付。這樣很好的一點(diǎn)Docker定義了企業(yè)級客戶和PaaS之間的一個(gè)邊界,這個(gè)邊界怎么理解?就是企業(yè)只需要關(guān)心自己的業(yè)務(wù)應(yīng)用、業(yè)務(wù)程序,企業(yè)業(yè)務(wù)程序分裝在容器里面,PaaS只需要提供標(biāo)準(zhǔn)的容器運(yùn)行環(huán)境,有了清晰邊界以后PaaS復(fù)雜度大大降低,PaaS作為一個(gè)標(biāo)準(zhǔn),之前沒有容器的時(shí)候PaaS和企業(yè)客戶之間邊界在哪里?邊界在于程序編程語言這個(gè)層面,比如說Heroku等需要支持各樣的開發(fā)語言,上一代的PaaS復(fù)雜度非常高,新一代的PaaS由于Docker定義一個(gè)標(biāo)準(zhǔn),新一代PaaS可以不用管業(yè)務(wù)應(yīng)用拿java還是其他語言寫的,解決Docker運(yùn)行所需要的CPU、網(wǎng)絡(luò)、負(fù)載均衡、報(bào)警等常見的企業(yè)內(nèi)部的需求,這樣新一代PaaS復(fù)雜度大大降低,這個(gè)也就是我說為什么Docker出現(xiàn)催生了新一代的PaaS。
很重要一點(diǎn)中國和美國在新一代PaaS發(fā)展方向是齊頭并進(jìn)的。
新一代PaaS平臺在中美落地情況

Google 的 PaaS
講到PaaS不得不講一下谷歌的PaaS,其中一個(gè)原因有很大影響力,尤其是谷歌內(nèi)部的PaaS非常復(fù)雜、功能無比的強(qiáng)大,我之前在谷歌工作過,我見過谷歌的PaaS是怎么運(yùn)作的。首先幾個(gè)特點(diǎn),谷歌內(nèi)部的PaaS分層的,PaaS管理東西很多,PaaS只管理應(yīng)用,跟應(yīng)用相關(guān)還有很多東西,資源分配,任務(wù)調(diào)動等等,谷歌PaaS以一種容器方式分裝分發(fā),谷歌有著名的分布式文件系統(tǒng),還有各種各樣數(shù)據(jù)管理的數(shù)據(jù),還有Big Table、 MapReduce,這是谷歌分布式應(yīng)用編程的范式,這是PaaS提供的能力。
谷歌PaaS的特點(diǎn)是什么?就是輕量,輕量怎么理解?PaaS支撐應(yīng)用快速迭代快速上線,大家提的持續(xù)交付持續(xù)集成的概念。谷歌PaaS是以應(yīng)用為中心的,PaaS平臺一定提供應(yīng)用彈性能力,讓各種各樣應(yīng)用按需使用資源,PaaS平臺提供容錯能力把開發(fā)運(yùn)維復(fù)雜度降低,這三點(diǎn)我稱之為應(yīng)用PaaS平臺的輕量特性。

基于Docker的新一代PaaS
這里面我主要把新一代PaaS的特性給它勾勒了出來,跟谷歌的PaaS有相似的地方,新一代PaaS基于微服務(wù)理念打造的,特別是像谷歌的PaaS分層管理。新一代PaaS也有輕量的特性,介紹谷歌PaaS的輕量特性,應(yīng)用要具有彈性要分布發(fā)布,再一個(gè)容錯性強(qiáng)、易于維護(hù),PaaS也要對計(jì)算資源故障進(jìn)行容錯。這里面特別強(qiáng)調(diào)一點(diǎn)大規(guī)模數(shù)據(jù)中心或者現(xiàn)在這種數(shù)據(jù)中心對于硬件管理方式有兩種,一種上一代的寵物型管理方式,另外是放養(yǎng)型的。對于寵物型的數(shù)據(jù)中心管理方式其實(shí)是很常見的,比如說對于數(shù)據(jù)庫服務(wù)器,一般企業(yè)里面數(shù)據(jù)庫服務(wù)器絕對不允許宕機(jī),數(shù)據(jù)庫宕機(jī)所有應(yīng)用全部宕了,所以要有人為維護(hù),DBA,人圍機(jī)器去轉(zhuǎn),這是寵物型對數(shù)據(jù)中心的管理,一旦數(shù)據(jù)庫宕機(jī)人馬上去修。另外是放養(yǎng)型跟寵物型相反,放養(yǎng)型什么意思?比如說谷歌這樣的量級中心,兩百萬臺服務(wù)器不可能保證每一臺服務(wù)器都是處于工作狀態(tài),一定有一些服務(wù)器處于故障狀態(tài),要通過軟件PaaS平臺保證上面應(yīng)用服務(wù)不宕機(jī),PaaS對于軟硬件都要有很強(qiáng)的容錯能力,放養(yǎng)型的工作管理必然極大降低對數(shù)據(jù)中心維護(hù),包括PaaS本身,維護(hù)成本運(yùn)維成本都會大大降低,這是新一代PaaS很重要的特性主要就是輕量。
數(shù)人云的新一代PaaS實(shí)現(xiàn)

我們實(shí)現(xiàn)新一代云計(jì)算平臺首先有一個(gè)是核心模塊,核心模塊本身也是分好幾個(gè)層面的,核心模塊基本上圍繞運(yùn)行時(shí)的基本管理提供比如說容器運(yùn)行的標(biāo)準(zhǔn)環(huán)境,這個(gè)核心模塊包括幾個(gè)層面,首先應(yīng)用的封裝用到的是Docker的技術(shù),這是很火的容器技術(shù)。光有應(yīng)用封裝不夠的,應(yīng)用封裝完應(yīng)用運(yùn)行還有別的需求,需要CPU、內(nèi)存需求等等,資源分配核心模塊里面功能我們基于Apache來做的,應(yīng)用不是運(yùn)行在一臺服務(wù)器,大規(guī)模數(shù)據(jù)中心有成百上千臺服務(wù)器,對于大規(guī)模的集群里面應(yīng)用該怎么調(diào)度這是很關(guān)鍵的模塊,我們用的是任務(wù)調(diào)度模塊做的。比如說應(yīng)用分發(fā),涉及到應(yīng)用的更新上線等等,比如說老版本的應(yīng)用已經(jīng)運(yùn)行了,新版本應(yīng)用程序我要分發(fā)下去,新版本應(yīng)用我要有一個(gè)分發(fā)的倉庫存在什么地方,這時(shí)Docker的鏡像倉庫用于應(yīng)用分發(fā)。
核心模塊還要管理網(wǎng)絡(luò),我們很多客戶提出來不同應(yīng)用之間的網(wǎng)絡(luò)要進(jìn)行應(yīng)用隔離,有些應(yīng)用可達(dá)有些應(yīng)用不可達(dá),這都需要對容器之間網(wǎng)絡(luò)進(jìn)行有效管理。我們通過Calico來實(shí)現(xiàn)網(wǎng)絡(luò)管理。
還有服務(wù)發(fā)現(xiàn),容器運(yùn)行環(huán)境在大規(guī)模數(shù)據(jù)中心里面,對于容器調(diào)度不是靜態(tài)調(diào)度,不是一個(gè)容器應(yīng)用就跑到一臺服務(wù)器上,它是動態(tài)調(diào)度的,不同應(yīng)用之間我有通信需求,我應(yīng)用A怎么找到應(yīng)用B就需要有應(yīng)用發(fā)現(xiàn)的需求,這是核心模塊的基本功能。
周邊模塊支撐應(yīng)用運(yùn)行方便應(yīng)用運(yùn)維,周邊模塊體現(xiàn)出新一代PaaS平臺的應(yīng)用度。

再一個(gè)彈性伸縮這也是互聯(lián)網(wǎng)帶來新業(yè)務(wù)的特點(diǎn),互聯(lián)網(wǎng)業(yè)務(wù)最大特點(diǎn)就是集中爆發(fā),很經(jīng)典例子就是淘寶雙十一,12306大家訂票,彈性伸縮是PaaS平臺必須提供的性能,沒有彈性面對集中爆發(fā)的業(yè)務(wù)需求這個(gè)后臺支撐不了,彈性伸縮我們用API實(shí)現(xiàn)的。再一個(gè)監(jiān)控報(bào)警,任何企業(yè)生產(chǎn)環(huán)境系統(tǒng)不是孤立存在的,一定有各種各樣的監(jiān)控報(bào)警,生產(chǎn)系統(tǒng)誰也不能保證100%的正常。
再一個(gè)日志的處理,這是企業(yè)很強(qiáng)的需求,生產(chǎn)環(huán)境里面各種各樣的業(yè)務(wù)都有,生產(chǎn)環(huán)境都是比較大規(guī)模的集群環(huán)境,不同應(yīng)用產(chǎn)生的日志留在不同的服務(wù)器上,怎么把這些日志在分布式環(huán)境下進(jìn)行統(tǒng)一收集查詢統(tǒng)一處理,需要有日志統(tǒng)一管理,我們主要用的是ELK這個(gè)模式。
再一點(diǎn)就是文件存儲,企業(yè)生產(chǎn)環(huán)境數(shù)據(jù)中心里面業(yè)務(wù)應(yīng)用必然有一些數(shù)據(jù)存下來,就要存在文件系統(tǒng)上,文件存儲我們用的是Hadoop的文件系統(tǒng)。再有對于數(shù)據(jù)的管理,多個(gè)應(yīng)用要對數(shù)據(jù)同時(shí)進(jìn)行讀寫操作,對于數(shù)據(jù)訪問管理等等這些我們用的是HDFS。還有我們用Kafka消息隊(duì)列來處理不同應(yīng)用之間的異步通訊需求,未來Kafka可以替代企業(yè)服務(wù)總線。還有數(shù)據(jù)處理,現(xiàn)在企業(yè)對于大數(shù)據(jù)處理有很強(qiáng)的需求,大家用Hadoop還有Spark這些,我們主要用Spark做大數(shù)據(jù)處理更快。

這個(gè)背景圖其實(shí)就是黑客帝國電影的主題圖。黑客帝國里邊講的是未來人類生活在虛擬軟件定義世界里面。這個(gè)軟件定義世界正在發(fā)生,每個(gè)人現(xiàn)在每天都要大量跟各種各樣的軟件打交道。隨著云計(jì)算新一代PaaS平臺普及,隨著容器技術(shù)如火如荼的發(fā)展和推廣,下一步就是不僅僅是軟件定義世界了,我們最后會達(dá)到容器定義的世界,所有的軟件都是以容器形式交付運(yùn)行的,歡迎大家來到容器定義的世界。
via:數(shù)據(jù)派
End.