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