如何將 Google 神秘的數(shù)據(jù)中心管理系統(tǒng)搬回家
原創(chuàng)大家知道,云計算技術(shù)、分布式技術(shù)為Google提供了巨大的價值,并已成為其核心競爭力之一?,F(xiàn)在,越來越多的人開始通過互聯(lián)網(wǎng)獲取服務(wù),越來越多的互聯(lián)網(wǎng)公司像Google一樣需要成百上千的服務(wù)器來支撐他們的在線業(yè)務(wù)。
曾在Google工作三年的王璞堅信,享用云計算技術(shù)、分布式計算技術(shù)和大數(shù)據(jù)處理技術(shù)是每個企業(yè)的權(quán)利,而不再是Google等互聯(lián)網(wǎng)巨頭的特權(quán)。為了幫助每個企業(yè)開啟云的力量,王璞在2014年毅然決定放棄硅谷的高薪和舒適的工作環(huán)境,回國創(chuàng)立了數(shù)人科技,希望幫助企業(yè)簡便、高效地享用云平臺的高性能、高可靠服務(wù),以創(chuàng)造屬于他們的價值。
王璞,數(shù)人科技創(chuàng)始人兼CEO, 2011年獲得美國George Mason大學(xué)計算機博士學(xué)位,在美國硅谷先后供職于StumbleUpon、Groupon和Google等互聯(lián)網(wǎng)公司,期間負責(zé)海量數(shù)據(jù)處理、分布式計算以及大規(guī)模機器學(xué)習(xí)等相關(guān)工作,并在Google互聯(lián)網(wǎng)廣告部門負責(zé)每秒請求量高達60萬次的數(shù)據(jù)處理服務(wù)器。擅長分布式計算、大規(guī)模機器學(xué)習(xí)、海量數(shù)據(jù)處理,在眾多專業(yè)期刊會議上發(fā)表論文十余篇。
如何復(fù)制Google的秘密武器
在Google就職期間,王璞***的收獲是接觸到業(yè)界到***大、***進的分布式計算技術(shù),為他回國創(chuàng)業(yè)積累寶貴的資本。Google這個互聯(lián)網(wǎng)帝國擁有幾千萬臺服務(wù)器,而業(yè)務(wù)運維團隊不過幾千人,平均每人要運維差不多一萬臺服務(wù)器上的業(yè)務(wù)。反觀國內(nèi)市場,大家卻被分布式集群的高運維成本和壓力所束縛。為什么在Google,工程師可以很容易的將一個任務(wù)跑在幾千臺服務(wù)器上?究竟它的秘密武器是什么呢?
圖注:由于使用了伯格和后續(xù)的Omega系統(tǒng),谷歌可以將所有的東西放在一個服務(wù)器群組上運行,擺脫在不同的服務(wù)器群組上運行各自的軟件系統(tǒng)。
答案就是Borg。Google通過Borg對其數(shù)據(jù)中心幾千萬臺服務(wù)器進行統(tǒng)一管理,Borg能讓工程師像使用一臺電腦一樣使用數(shù)據(jù)中心的所有服務(wù)器,這樣每個工程師都能很方便地從Google數(shù)據(jù)中心獲取龐大的計算資源并應(yīng)用起來,極大地提高了工程師的生產(chǎn)力。Borg被視為Google最為強大的技術(shù),使得Google可以持續(xù)地獲得商業(yè)競爭優(yōu)勢。但是,或者說當(dāng)然,Google不會愿意將Borg與外界分享。
提升業(yè)務(wù)效率、降低IT管理復(fù)雜度和維護成本,對于任何一個企業(yè)來說都是最為切實的需求。王璞希望把從Google學(xué)到的關(guān)于云計算、分布式計算理念帶回國,推動中國企業(yè)級云展。雖然不可能把Google的技術(shù)原封不動照搬回來,但王璞一直在探索,如何利用開源技術(shù)打造類似Borg的產(chǎn)品。終于,王璞將目光鎖定在Apache旗下的開源技術(shù)Mesos。
Mesos:生產(chǎn)環(huán)境下Docker的“黃金搭檔”
Mesos誕生于UC Berkeley的一個研究項目,與Google內(nèi)部的數(shù)據(jù)中心管理平臺Borg有異曲同工之妙,并對Docker提供原生支持,現(xiàn)已成為Apache旗下***開源項目。目前已經(jīng)有很多知名互聯(lián)網(wǎng)公司在使用Mesos管理其數(shù)據(jù)中心,比如國外的Twitter、Airbnb,國內(nèi)的愛奇藝,等等。
2014年開始,借著Docker的大火,Mesos也越來越多地走入人們的視線。Docker解決的最直接問題是方便企業(yè)的應(yīng)用開發(fā)、測試、部署,它的秘訣在于極大的增強了容器的易用性,讓開發(fā)人員極其容易地打包、封裝、分發(fā)容器應(yīng)用?,F(xiàn)在,是否部署Docker對企業(yè)來說已經(jīng)不再是一個問題。當(dāng)Docker越來越熱,可用性、規(guī)模和性能等方面面臨非常深層次的挑戰(zhàn),使其在生產(chǎn)環(huán)境大規(guī)模部署并不容易,這已逐漸成為企業(yè)使用Docker的剛性需求。而這恰好是Mesos的用武之地。雖然Mesos起初并不只為Docker而生,但它幾個顯著的特性決定了Mesos勢必成為如Docker公司CTO所說的“生產(chǎn)環(huán)境大規(guī)模運行Docker的黃金搭檔” 。
#p#
Mesos特性
1.資源管理策略Dominant Resource Fairness (DRF),這是Mesos的核心。Mesos 專注的是對分布式集群資源進行分配,從而保證所有用戶平等地使用集群內(nèi)的資源,比如CPU、內(nèi)存、磁盤等等。
去年夏天,Google開源了Docker容器集群管理系統(tǒng)Kubernetes,經(jīng)常有人將Mesos和Kubernetes放在一起加以比較。王璞告訴我們,實際上二者還是有差異的。通常,集群管理平臺需要負責(zé)資源分配和任務(wù)管理。Kubernetes最擅長的是管理Docker任務(wù),對Docker任務(wù)進行調(diào)度,比如處理多個Docker任務(wù)之間的依賴、編排,自動容錯恢復(fù)Docker任務(wù),等等,這些是Kubernetes的強項。當(dāng)然Kubernetes也可以來分配集群資源。相比Kubernetes,Mesos只負責(zé)集群資源分配,Mesos本身沒有任務(wù)管理功能,需要靠其他模塊來實現(xiàn)任務(wù)管理。Kubernetes可以基于Mesos,由Mesos來分配資源,然后Kubernetes來負責(zé)任務(wù)管理。
2.輕量級。因為Mesos只負責(zé)分配資源,并不涉及到任務(wù)管理層面,因此Mesos從自身構(gòu)架到實現(xiàn)都很輕量。分布式環(huán)境一般由大量軟硬件模塊集合而成,是非常龐雜的系統(tǒng),涉及大量關(guān)于容錯、可靠性、穩(wěn)定性的考慮。輕量的模塊容易維護,不易出錯,更加穩(wěn)定。這也是在云計算、分布式環(huán)境下,大家推崇輕量級設(shè)計的原因所在。
因此,對于現(xiàn)在有人提出的Docker+Yarn的方案,王璞并不認為是一個好的方向。雖然Yarn在企業(yè)的使用比Mesos廣泛,但Yarn在功能設(shè)計之初是為了支持Hadoop的任務(wù)管理需求。隨著Hadoop的發(fā)展壯大,內(nèi)部組件越來越多,這使原本就非常龐大的Hadoop體系變得越來越重,所以基于重量級的Hadoop運行輕量級的Docker結(jié)合,不是個明智的選擇。
基于Mesos和Docker之上構(gòu)建的分布式系統(tǒng)的每個組件量級更輕,這種構(gòu)架比較容易實現(xiàn)高可靠,降低維護成本,也符合現(xiàn)在“微服務(wù)”的流行趨勢。與Mesos的結(jié)合使Docker在生產(chǎn)環(huán)境下的大規(guī)模部署變得非常容易實現(xiàn)。開發(fā)人員可以通過Mesos將Docker容器輕松地部署到云端,而不給運維人員增添負擔(dān),降低云端開發(fā)和運維復(fù)雜度。
3.通用的集群管理、資源管理平臺。目前來講,與Kubernetes特定面向Docker、Yarn特定面向Hadoop不同的是,Mesos是比較通用的平臺。到現(xiàn)在為止,Mesos支持的分布式軟件平臺是最多的,這個也是王璞為什么選擇Mesos的原因。數(shù)人科技希望能基于Mesos給客戶提供一個比較豐富的分布式軟件平臺,而如果只基于Yarn和Kubernetes,目前還做不到。
所以,數(shù)人科技區(qū)別于其他圍繞Docker技術(shù)的服務(wù)商之處在于,數(shù)人科技的產(chǎn)品不僅支持Docker,還支持其常見開源分布式軟件,諸如Hadoop、Spark、Kafka、Cassandra,等等,目的是為了滿足企業(yè)生產(chǎn)環(huán)境各種各樣不同的需求。
最適合的應(yīng)用場景
王璞將Docker+Mesos最適用的應(yīng)用場景總結(jié)為以下三個方面:
1. 容災(zāi)備份。沒有企業(yè)不愿意做容災(zāi)備份。然而,大多企業(yè)的開發(fā)運維實力本就捉襟見肘,維護一個數(shù)據(jù)中心的壓力都會很大,更不要說來維護多個數(shù)據(jù)中心,并實現(xiàn)數(shù)據(jù)中心之間自動容災(zāi)切換。Docker與Mesos結(jié)合可以為企業(yè)提供統(tǒng)一的軟件基礎(chǔ)構(gòu)架,具體來說,企業(yè)利用Docker和Mesos搭建多個數(shù)據(jù)中心,就可以方便地把業(yè)務(wù)部署、更新到多個數(shù)據(jù)中心,極大減輕災(zāi)備維護工作量。
2.基于云計算、基于分布式計算的彈性場景。比如秒殺、搶購、搶票等,這些場景的特點是瞬時突發(fā),流量非常大。在企業(yè)IT實力有限的前提下,數(shù)據(jù)中心很難承擔(dān)這樣的負載壓力。Mesos加Docker可以很方便地做到秒級擴容:企業(yè)為了應(yīng)對這些突發(fā)的大流量,可以提前準備好數(shù)據(jù)中心加公有云上的計算資源;當(dāng)流量高并發(fā)時,先將Docker任務(wù)進行擴展,當(dāng)計算資源限制Docker任務(wù)無法擴張時,再通過調(diào)用公有云API再、添加計算資源,應(yīng)對突發(fā)流量的場景。
持續(xù)推動開源技術(shù)的發(fā)展
沒有***的技術(shù)。由于最初Mesos設(shè)定的場景是管理在同一個局域網(wǎng)內(nèi)的集群,所以Mesos節(jié)點間的設(shè)計是主結(jié)點管理從結(jié)點,呈現(xiàn)強耦合的關(guān)系。這一點Kubernetes就比較新穎,Kubernetes節(jié)點之間是松散耦合的,這樣對于容錯、管理廣域網(wǎng)的集群都更方便。目前Mesos也在借鑒一些Kubernetes的理念,***一版Mesos也做了一些改動,把Mesos之前各個結(jié)點之間的緊密耦合變成松散耦合,很方便的管理跨物理結(jié)點,廣域網(wǎng)的集群。目前,王璞也在帶領(lǐng)數(shù)人科技嘗試將Mesos和Kubernetes的優(yōu)勢結(jié)合。隨著Kubernetes越來越成熟,未來數(shù)人可能會將所有的Docker任務(wù)的調(diào)度管理用Kubernetes來做,讓Mesos只負責(zé)資源分配。
開源技術(shù)的發(fā)展離不開商業(yè)模式的推動;一款開源軟件的成功,也為商業(yè)公司創(chuàng)造了巨大的利潤和價值。以Mesos為例,較高的技術(shù)門檻使開發(fā)人員從入門學(xué)習(xí)帶來不小的難度,王璞希望通過數(shù)人科技自身的技術(shù)優(yōu)勢,在為企業(yè)用戶帶來便利的同時,推動Mesos技術(shù)不斷完善發(fā)展。