故事還得從最近很火的浙江移動(dòng)說起。最近,該運(yùn)營商憑借一條“DCOS發(fā)力雙11”的新聞成功火了一把,主要是講他們搭建了一套基于開源Mesos + Doker技術(shù)的DCOS(數(shù)據(jù)中心操作系統(tǒng)),而且很魄力地將一個(gè)服務(wù)于上千萬用戶的重要生產(chǎn)系統(tǒng)遷移其上,同時(shí)后端搭配天璣數(shù)據(jù) PBData數(shù)據(jù)庫云平臺(tái)的強(qiáng)勁支撐,最終完美度過了今年 “雙11”秒殺的高峰壓力。一時(shí)間“DCOS”這個(gè)詞迅速引發(fā)業(yè)內(nèi)圍觀。“它到底是何方神圣?”“為何功能如此強(qiáng)大?”如果你也對(duì)它感到好奇,就請(qǐng)毫不猶豫地往下看吧!
1 “嗨!DCOS,你從哪里來?”
在回答這個(gè)問題前,不妨先回顧一下國際先進(jìn)互聯(lián)網(wǎng)公司數(shù)據(jù)中心資源管理系統(tǒng)的發(fā)展史。早在十多年前,Google就開始使用第一代集群管理Borg技術(shù)管理數(shù)據(jù)中心。隨后Twitter從Google的Borg系統(tǒng)中得到啟發(fā),開發(fā)了一個(gè)類似的資源管理系統(tǒng)幫助他們擺脫可怕的“失敗之鯨”。2009年加州大學(xué)伯克利分校AMPLab首先開發(fā)出Apache Mesos,這是一款開源集群管理軟件,其核心研發(fā)成員Benjamin Hindman隨后將其引入Twitter,于是Twitter、Facebook、蘋果等大型IT企業(yè)開始陸續(xù)打造各自特色的基于Mesos的數(shù)據(jù)中心管理方案。
2012年,圍繞Mesos開展商業(yè)活動(dòng)的初創(chuàng)公司Mesosphere誕生,而Benjamin Hindman也以Mesosphere首席架構(gòu)師的身份投身其中。 正是該公司提出了基于Mesos的DCOS(數(shù)據(jù)中心操作系統(tǒng)),希望企業(yè)能像使用一臺(tái)計(jì)算機(jī)一樣使用整個(gè)數(shù)據(jù)中心。
2 認(rèn)識(shí)DCOS,從Apache Mesos入手
為了更好地理解DCOS,最好先了解一些Apache Mesos的背景知識(shí)。 Mesos適合作為數(shù)據(jù)中心哪一層的抽象?
IaaS層抽象的是機(jī)器, PaaS則更多考慮部署、管理應(yīng)用/服務(wù)。在交互方面,PaaS可能是和開發(fā)者直接交互,而Mesos則是以API的形式和軟件程序交互。
換句話說,你可以基于Mesos之上構(gòu)建一個(gè)PaaS系統(tǒng)(比如Marathon),同時(shí)你還可以在一個(gè)IaaS上(比如Openstack)運(yùn)行Mesos。因此,當(dāng)Mesos運(yùn)行在一個(gè)組合系統(tǒng)之上,就能直接跨越底層組件去管理和計(jì)劃上層工作負(fù)載。 不過Mesos現(xiàn)在還需要與其它分布式系統(tǒng)配合使用。目前已有不少分布式系統(tǒng)直接構(gòu)建于Mesos之上,包括Apache Spark,Apache Aurora,Airbnb的Chronos以及Mesosphere的Marathon等。此外還有多個(gè)流行系統(tǒng)與Mesos相連并運(yùn)行于其上,如Apache Hadoop,Apache Storm,Google的Kubernetes等。
Mesos亮點(diǎn)一:兩級(jí)調(diào)度機(jī)制 Mesos以Framework的形式,提供了兩級(jí)調(diào)度機(jī)制,將任務(wù)的調(diào)度和執(zhí)行分離。面對(duì)各種類型的任務(wù),在調(diào)度階段,由Framework的 Scheduler(調(diào)度器)以資源邀約的形式向Mesos Master申請(qǐng)資源;在執(zhí)行階段,由Framework的Executor(執(zhí)行器)執(zhí)行任務(wù)。
如圖所示,Mesos實(shí)現(xiàn)了“兩級(jí)調(diào)度機(jī)制”,它可以管理多種類型的應(yīng)用程序(圖中只展示了Hadoop和MPI兩種類型)。
深入學(xué)習(xí):Mesos“兩級(jí)調(diào)度機(jī)制”Mesos Master協(xié)調(diào)全部的Mesos Slave,并確定每個(gè)節(jié)點(diǎn)的可用資源,聚合計(jì)算跨節(jié)點(diǎn)的所有可用資源的報(bào)告,然后向注冊(cè)到Master的Framework(作為Master的客戶端)發(fā)出資源邀約。 Framework根據(jù)應(yīng)用程序的需求,選擇接受或拒絕來自Master的資源邀約。一旦接受邀約,Master即協(xié)調(diào)Framework和Slave,調(diào)度參與節(jié)點(diǎn)上的任務(wù),并在容器中執(zhí)行,使得多種類型的任務(wù)可在同一個(gè)節(jié)點(diǎn)上同時(shí)運(yùn)行。
Mesos亮點(diǎn)二:圍繞Framework建設(shè)的生態(tài)系統(tǒng) 在Apache Mesos的術(shù)語中,使用Mesos API在集群中調(diào)度任務(wù)的Mesos應(yīng)用程序稱為Framework(框架)。 Mesos另一個(gè)顯著亮點(diǎn)就是圍繞Framework建設(shè)的生態(tài)系統(tǒng)了。一旦將任務(wù)調(diào)度委托給Framework 應(yīng)用程序,以及采用插件架構(gòu),就能直接打造Mesos問鼎數(shù)據(jù)中心資源管理的生態(tài)系統(tǒng)。因?yàn)槊拷尤胍环N新的Framework ,Master無需為此編碼,Slave模塊可以復(fù)用,使得在Mesos所支持的寬泛領(lǐng)域中,業(yè)務(wù)迅速增長。而開發(fā)者就可以專注于他們的應(yīng)用和Framework的選擇。 下圖為不斷增長的Mesos Framework列表: