王璞
容器技術(shù)本身已經(jīng)有十幾年的發(fā)展歷史,Docker作為容器技術(shù)的一種,在云計(jì)算大規(guī)模的發(fā)展推動(dòng)下,日益火熱。
容器技術(shù)其實(shí)本身并不是什么嶄新的技術(shù),倒推到2000年Free BSD的Jail,2005年出現(xiàn)的Solaris Containers,這些都是容器技術(shù)的早期實(shí)現(xiàn)方式。很多人會(huì)把容器技術(shù)跟虛擬化技術(shù)相比較。比較通俗的說(shuō)法是,容器是極度輕量的虛擬機(jī)。虛擬機(jī)是物理服務(wù)器里裝操作系統(tǒng),再裝上虛擬機(jī)管理軟件,生成很多虛擬機(jī),然后虛擬機(jī)再裝操作系統(tǒng)和各種各樣的應(yīng)用。容器是,物理服務(wù)器里裝操作系統(tǒng),絕大多數(shù)情況下,容器基于的操作系統(tǒng)是Linux操作系統(tǒng),然后Linux里裝一個(gè)容器軟件,最常見(jiàn)的是Docker,用Docker運(yùn)行各種各樣的容器,容器里不需要再裝一次操作系統(tǒng),只裝各種各樣的應(yīng)用。如此比較,容器的最大優(yōu)勢(shì)就是輕量。另外,用容器封裝應(yīng)用時(shí),會(huì)把程序本身和依賴(lài)庫(kù)都打包在一起,這樣容器應(yīng)用具有可移植性,在不同的Linux環(huán)境下都可運(yùn)行,而不需要再安裝依賴(lài)庫(kù)。
Docker屬于容器技術(shù)的一種。Docker有鏡像的概念,Docker鏡像和虛擬機(jī)鏡像不一樣的特點(diǎn)就是Docker的鏡像是分層的,最下面是基礎(chǔ)的鏡像,是基礎(chǔ)Linux環(huán)境,上面每一層鏡像裝不同應(yīng)用。
Docker鏡像分層最大的好處就是應(yīng)用分發(fā)很方便,每次分發(fā)Docker應(yīng)用的時(shí)候,只需要下載更新部分的鏡像,而不用重新下載整個(gè)鏡像,實(shí)現(xiàn)應(yīng)用增量分發(fā)更新。容器本身用于封裝各種應(yīng)用,容器之外還有各種管理需求。
目前美國(guó)的容器技術(shù)已經(jīng)形成了一個(gè)相對(duì)完整的生態(tài)圈,各種各樣的廠商,大約近百家。但中國(guó)現(xiàn)在還畫(huà)不出像美國(guó)一樣豐富的Docker生態(tài)圈,不過(guò)我相信未來(lái)兩三年時(shí)間我們不斷的追趕,同樣能夠畫(huà)出非常豐富的Docker生態(tài)圈。
Docker催生新一代PaaS
眾所周知,云計(jì)算分為三層,SaaS、PaaS、IaaS,這三層隨著云計(jì)算整體的發(fā)展也得到了不同程度的發(fā)展。SaaS的發(fā)展,由于各行各業(yè)的互聯(lián)網(wǎng)相關(guān)業(yè)務(wù)的發(fā)展,SaaS以服務(wù)為中心,向客戶提供各種各樣的服務(wù),包括HR、財(cái)務(wù)、CRM等業(yè)務(wù)類(lèi)型的服務(wù),這些企業(yè)應(yīng)用的服務(wù)都可以SaaS方式交付。
此外,云計(jì)算的不斷發(fā)展也對(duì)大規(guī)模數(shù)據(jù)中心的需求越來(lái)越旺盛,數(shù)據(jù)中心是云計(jì)算云端真正計(jì)算的載體。數(shù)據(jù)中心規(guī)模越來(lái)越大,但數(shù)據(jù)中心相對(duì)管理的復(fù)雜度也日益增加,與數(shù)據(jù)中心相關(guān)的就是IaaS和PaaS,比如說(shuō)IaaS以資源為中心,IaaS提供資源彈性,數(shù)據(jù)中心里面IaaS管理整個(gè)數(shù)據(jù)中心資源,讓整個(gè)資源以彈性方式提供出來(lái)。PaaS在數(shù)據(jù)中心中以應(yīng)用為中心,PaaS提供應(yīng)用的彈性。
PaaS、SaaS、IaaS作為云計(jì)算的三層,都得到了不同程度的發(fā)展。但與IaaS和SaaS相比,PaaS發(fā)展其實(shí)是相對(duì)滯后的。比如說(shuō)上一代PaaS沒(méi)有解決好本身復(fù)雜度的問(wèn)題。
2014年前后,上一代PaaS的發(fā)展基本上到了市場(chǎng)的最低點(diǎn),國(guó)內(nèi)同行都對(duì)PaaS持懷疑的態(tài)度。Docker是2013年在美國(guó)誕生的,很重要一點(diǎn)是Docker出來(lái)以后形成事實(shí)上應(yīng)用交付的標(biāo)準(zhǔn),未來(lái)大家普遍這樣認(rèn)為,未來(lái)企業(yè)級(jí)應(yīng)用都會(huì)以容器Docker的形式進(jìn)行交付。因此,Docker定義了企業(yè)級(jí)客戶和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ù)雜度大大降低。
那么之前沒(méi)有容器的時(shí)候,PaaS和企業(yè)客戶之間邊界在哪里?邊界在于程序編程語(yǔ)言這個(gè)層面,比如說(shuō)Heroku等需要支持各樣的開(kāi)發(fā)語(yǔ)言,上一代的PaaS復(fù)雜度非常高,新一代的PaaS由于Docker定義一個(gè)標(biāo)準(zhǔn),新一代PaaS可以不用管業(yè)務(wù)應(yīng)用是用Java還是其他語(yǔ)言寫(xiě)的,解決Docker運(yùn)行所需要的CPU、網(wǎng)絡(luò)、負(fù)載均衡、報(bào)警等常見(jiàn)的企業(yè)內(nèi)部的需求即可,這樣新一代PaaS的復(fù)雜度就大大降低了。這也是說(shuō),為什么Docker的出現(xiàn)催生了新一代的PaaS。
新一代PaaS平臺(tái)在中美落地情況
對(duì)比新一代PaaS在中美兩國(guó)落地的情況,基本上可以看出,新一代PaaS落地從互聯(lián)網(wǎng)公司、到IT巨頭再到傳統(tǒng)行業(yè),各種各樣的落地形式都有。所以從發(fā)展勢(shì)頭上來(lái),中美兩國(guó)是齊頭并進(jìn)的。
那么,講到PaaS不得不講一下谷歌的PaaS,其中一個(gè)重要的原因是谷歌內(nèi)部的PaaS非常復(fù)雜、功能強(qiáng)大,對(duì)業(yè)界的PaaS平臺(tái)有很大影響。
谷歌PaaS的特點(diǎn)是什么?就是輕量,怎么理解輕量?PaaS支撐應(yīng)用快速迭代、快速上線,也就是大家所倡導(dǎo)的持續(xù)交付、持續(xù)集成的概念。
谷歌PaaS是以應(yīng)用為中心的,PaaS平臺(tái)一定具備提供應(yīng)用彈性的能力,讓各種各樣的應(yīng)用按需使用資源。同時(shí),PaaS平臺(tái)提供的容錯(cuò)能力,可把開(kāi)發(fā)運(yùn)維的復(fù)雜度降低,這三點(diǎn)稱(chēng)之為應(yīng)用PaaS平臺(tái)的輕量特性。
另外,谷歌內(nèi)部的PaaS非常強(qiáng)大,谷歌資源管理和任務(wù)調(diào)動(dòng)數(shù)據(jù),可以對(duì)谷歌兩百多臺(tái)服務(wù)器統(tǒng)一進(jìn)行管理。而大規(guī)模的數(shù)據(jù)中心其實(shí)硬件故障頻率很高:如一年至少有一個(gè)機(jī)架做挪動(dòng),至少有一次機(jī)架進(jìn)行排線,一年可能有12次路由器重啟,3次路由器故障,每年大概有上千次服務(wù)器宕機(jī),由硬件故障造成的宕機(jī),一年有數(shù)千次的硬盤(pán)損壞。
目前大規(guī)模數(shù)據(jù)中心基本都是用X86服務(wù)器,都不是像大型機(jī)或小型機(jī)這樣的高可靠硬件?;赬86服務(wù)器的數(shù)據(jù)中心怎么應(yīng)對(duì)這些硬件故障,保障應(yīng)用服務(wù)的高可靠,這是PaaS和IaaS一起要做的工作。
基于Docker的新一代PaaS
新一代PaaS是基于微服務(wù)理念打造的,特別是像谷歌的PaaS分層管理。新一代PaaS也有輕量的特性,介紹谷歌PaaS的輕量特性,應(yīng)用要具有彈性要分布發(fā)布,容錯(cuò)性強(qiáng)、易于維護(hù),PaaS也要對(duì)計(jì)算資源故障進(jìn)行容錯(cuò)。
目前來(lái)看,大規(guī)模數(shù)據(jù)中心或者很多企業(yè)的數(shù)據(jù)中心對(duì)于硬件的管理方式有兩種,一種是上一代的管理方式—寵物型管理方式,另外一種是放養(yǎng)型的管理方式。
寵物型數(shù)據(jù)中心管理方式其實(shí)是很常見(jiàn)的,比如說(shuō)對(duì)于數(shù)據(jù)庫(kù)服務(wù)器,一般企業(yè)里數(shù)據(jù)庫(kù)服務(wù)器絕對(duì)不允許宕機(jī),數(shù)據(jù)庫(kù)宕機(jī)會(huì)導(dǎo)致所有應(yīng)用全部宕機(jī),所以必須要有人為維護(hù),人圍著機(jī)器去轉(zhuǎn),這是寵物型管理方式對(duì)數(shù)據(jù)中心的管理,一旦數(shù)據(jù)庫(kù)有問(wèn)題,人會(huì)馬上去修。
而放養(yǎng)型管理方式與寵物型管理方式相反,放養(yǎng)型管理又有什么特點(diǎn)呢?比如說(shuō)谷歌這樣量級(jí)的數(shù)據(jù)中心,兩百萬(wàn)臺(tái)服務(wù)器不可能保證每一臺(tái)服務(wù)器都是處于正常的工作狀態(tài),一定會(huì)有一些服務(wù)器處于故障狀態(tài),要通過(guò)軟件PaaS平臺(tái)保證上面的應(yīng)用服務(wù)不宕機(jī)。PaaS對(duì)于軟硬件都有很強(qiáng)的容錯(cuò)能力,放養(yǎng)型的工作管理必然極大降低對(duì)數(shù)據(jù)中心維護(hù),包括PaaS本身,維護(hù)成本運(yùn)維成本都會(huì)降低,這是新一代PaaS最大的特點(diǎn)—輕量級(jí)。
其實(shí),目前中美在新一代PaaS發(fā)展和落地方面幾乎齊頭并進(jìn)。使用基于Docker的新一代PaaS應(yīng)用的公司,在美國(guó)不僅有Twitter、Airbnb和eBay這些互聯(lián)網(wǎng)公司,也有Intel、Microsoft這樣的IT巨頭,以及AT&T這樣的傳統(tǒng)電信運(yùn)營(yíng)商;與之相比,國(guó)內(nèi)的互聯(lián)網(wǎng)公司愛(ài)奇藝、去哪兒網(wǎng),IT巨頭華為,以及浙江移動(dòng)、等這樣的企業(yè)級(jí)客戶,實(shí)踐這項(xiàng)新技術(shù)。
作為新一代輕量級(jí)PaaS,數(shù)人云基于開(kāi)源技術(shù)領(lǐng)域的實(shí)踐,采用以Docker為代表的容器技術(shù)對(duì)應(yīng)用進(jìn)行封裝,具有彈性擴(kuò)縮、灰度發(fā)布、監(jiān)控報(bào)警等特性,可部署在公有云、私有云以及混合云上,幫助用戶在云端快速建立并穩(wěn)定運(yùn)行一個(gè)高性能生產(chǎn)環(huán)境,實(shí)現(xiàn)一站式的微服務(wù)架構(gòu)集群系統(tǒng)。