【干貨】從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.