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