
【編者的話】本篇譯文將介紹基于Mesos的RogerOS。其已成為Moz工程技術(shù)發(fā)展的基礎(chǔ),并將開發(fā)人員生產(chǎn)力與資源使用效率提升至新的高度。數(shù)人云是國內(nèi)基于Mesos的云操作系統(tǒng)。在設(shè)計(jì)思路上,和RogerOS有著異曲同工之妙。同樣的思路,解決類似的問題,再次說明Mesos是云操作系統(tǒng)(數(shù)據(jù)中心操作系統(tǒng))的內(nèi)核首選。
內(nèi)容簡介
一年之前,我們?yōu)镸oz Engineering設(shè)立了一個(gè)新的平臺(tái)構(gòu)建項(xiàng)目。項(xiàng)目的目標(biāo)非常簡單——打造下一代平臺(tái),將其作為Moz工程技術(shù)發(fā)展的基礎(chǔ)并將開發(fā)人員生產(chǎn)力與資源使用效率提升至新的高度。盡管目標(biāo)如此單純,但實(shí)際操作起來卻困難重重。而今天的博文就將向大家展示我們在推進(jìn)項(xiàng)目開發(fā)當(dāng)中的心路歷程。
背景情況
過去十年以來,技術(shù)領(lǐng)域的發(fā)展變化可謂迅猛且影響深遠(yuǎn)。軟件創(chuàng)新已經(jīng)成為一股不可回避的浪潮,而且有越來越多行業(yè)開始利用軟件作為其主要?jiǎng)?chuàng)新實(shí)現(xiàn)手段,這意味著軟件系統(tǒng)已經(jīng)在全球經(jīng)濟(jì)增速放緩的時(shí)代背景下逆流而上、繼續(xù)保持著可觀的發(fā)展進(jìn)度。
計(jì)算基礎(chǔ)設(shè)施在發(fā)展速度方面已經(jīng)將“迅猛”一詞作為常態(tài)。我們也由以往的內(nèi)部、專有、耦合、單一性的平臺(tái)轉(zhuǎn)向開源、分布式且松散耦合性質(zhì)的新環(huán)境。與此同時(shí),世界的發(fā)展腳步也可謂一刻不肯停歇。不過相比之下,基礎(chǔ)設(shè)施系統(tǒng)的更新周期往往無法同這種前進(jìn)節(jié)奏相匹配,這意味著對于大多數(shù)企業(yè)而言,讓新型軟件同現(xiàn)有基礎(chǔ)設(shè)施進(jìn)行對接已經(jīng)成為運(yùn)營工作當(dāng)中的核心挑戰(zhàn)之一。
在Moz公司,我們當(dāng)然也遇到了同樣的難題。對產(chǎn)品核心進(jìn)行持續(xù)創(chuàng)新已經(jīng)成為我們在Moz的主要任務(wù),而我們的客戶也應(yīng)當(dāng)能夠享受到由此帶來的各類成果。不過正如在去年的一篇博文中所提到,我們的現(xiàn)有系統(tǒng)已經(jīng)處于負(fù)載能力的臨界點(diǎn)。其帶來的最為直觀的影響體現(xiàn)在我們的開發(fā)速度領(lǐng)域。目前產(chǎn)品的迭代周期變得越來越長,而工程師們則需要耗費(fèi)更多時(shí)間來打理整套系統(tǒng)。另外一些外部問題也開始凸顯,這意味著我們獲得嘗試新鮮技術(shù)成果所必需的原始資源開始變得愈發(fā)困難。實(shí)驗(yàn)是創(chuàng)新的生命基礎(chǔ),而我們也希望能讓自己的工程師及產(chǎn)品經(jīng)理盡可能多地嘗試其新鮮想法。由于缺少對資源的支配空間,這就意味著整個(gè)團(tuán)隊(duì)需要繼續(xù)“堅(jiān)守”現(xiàn)有資源——即使其尚未得到充分利用——并在這一有限的范疇之內(nèi)滿足各類潛在的未來需求。
對于我們的技術(shù)運(yùn)維團(tuán)隊(duì)而言,這項(xiàng)工作絕不簡單。他們需要對數(shù)量驚人的各類語言、框架、數(shù)據(jù)庫以及其它種種組件加以支持。從規(guī)劃的角度來看,來自開發(fā)團(tuán)隊(duì)的每一項(xiàng)資源請求都會(huì)成為運(yùn)維工作中既有資源使用習(xí)慣的恐怖噩夢。舉例來講,某個(gè)團(tuán)隊(duì)可能需要大量內(nèi)存與計(jì)算核心資源,但卻無需使用規(guī)模可觀的高速磁盤驅(qū)動(dòng)器——這樣的要求與傳統(tǒng)采購習(xí)慣顯然完全背離。而且實(shí)際情況是,硬件采購是個(gè)耗時(shí)極長的過程——至少從軟件開發(fā)周期的角度來衡量是這樣。雖然Amazon Web Services等按需平臺(tái)的出現(xiàn)能夠在很大程度上解決此類難題,但著眼于Moz的業(yè)務(wù)規(guī)模,運(yùn)行自己的硬件體系顯然更具成本效益。而從運(yùn)維工作的角度出發(fā),理想的場景則是將采購劃分成數(shù)個(gè)大規(guī)模批次,從而統(tǒng)一硬件規(guī)格與具體交貨日期。但這種作法顯然直接損害了開發(fā)人員的實(shí)際要求,他們更希望能夠以頻繁且種類各異的方式在極短的交貨周期之內(nèi)獲得自己需要的資源。
另外,與初創(chuàng)企業(yè)不同,我們沒有那種從零開始的能力或者說可能性空間。任何一套解決方案都必須能夠同時(shí)應(yīng)對新型開發(fā)項(xiàng)目與傳統(tǒng)工作負(fù)載,且擁有足以適應(yīng)Moz未來需求的出色靈活性。
RogerOS
RogerOS正是我們在面對上述問題時(shí)給出的答案。這一名稱其實(shí)是種誤讀,因?yàn)槠涫聦?shí)上并不算是真正的操作系統(tǒng)。不過它確實(shí)與操作系統(tǒng)存在著一定程度的相似之處。在開發(fā)過程當(dāng)中,我們選擇了這個(gè)名稱并認(rèn)為其完全能夠代表這套平臺(tái)的特性。開發(fā)團(tuán)隊(duì)參考了ClusterOS(DCOS)之類的項(xiàng)目。而且與桌面操作系統(tǒng)一樣,RogerOS也會(huì)對物理硬件進(jìn)行抽象化處理,并在用戶面前體現(xiàn)為一套統(tǒng)一的高級(jí)界面——ClusterOS在數(shù)據(jù)中心或者設(shè)備集群當(dāng)中也扮演著同樣的角色,即對集群硬件加以抽象并提供一套特殊的高級(jí)界面。這種概念并不是什么新生事物,類似的系統(tǒng)也已經(jīng)擁有相當(dāng)長的發(fā)展歷史。事實(shí)上,RogerOS還從谷歌公司的Borg系統(tǒng)當(dāng)中汲取到了大量設(shè)計(jì)靈感。
以下幾個(gè)章節(jié)將詳細(xì)介紹這套系統(tǒng)的具體細(xì)節(jié)。
設(shè)計(jì)目標(biāo)
其實(shí)第二篇博文才負(fù)責(zé)對設(shè)計(jì)目標(biāo)的相關(guān)細(xì)節(jié)進(jìn)行說明,不過幸運(yùn)的是我們在這里可以先對其加以總結(jié)。我們希望能夠?yàn)殚_發(fā)人員提供一套系統(tǒng),從而幫助他們:
*在五分鐘以內(nèi)在筆記本設(shè)備上實(shí)現(xiàn)代碼運(yùn)行或者在數(shù)據(jù)中心內(nèi)啟動(dòng)原型設(shè)計(jì)。
*在一天之內(nèi)將能夠正常運(yùn)行的原型方案轉(zhuǎn)化為能夠接受一定程度外部流量的進(jìn)階版本。
*在一周之內(nèi)將以上進(jìn)階版本轉(zhuǎn)化為一套完全成熟的生產(chǎn)系統(tǒng)。
*能夠在十分鐘之內(nèi)完成新版本的部署工作。
*不會(huì)對系統(tǒng)之上實(shí)際運(yùn)行的具體工作負(fù)載類型做出限制,這意味著其能夠徹底替代那些只能夠承載虛擬機(jī)、容器或者批量工作負(fù)載的傳統(tǒng)系統(tǒng)方案。
*盡可能多的專注于應(yīng)用程序代碼。這套系統(tǒng)應(yīng)該能夠?qū)\(yùn)行當(dāng)中的應(yīng)用程序進(jìn)行各類必要處理,具體包括負(fù)載均衡、監(jiān)控、日志記錄、故障處理以及規(guī)模伸縮等等。
設(shè)計(jì)
RogerOS的核心為Apache Mesos。考慮到既定設(shè)計(jì)目標(biāo)以及對該系統(tǒng)的靈活性要求,Mesos可以說是目前惟一合適的可選項(xiàng)目。不過Mesos的核心定位是一套通用型資源調(diào)度工具。要想真正實(shí)現(xiàn)RogerOS項(xiàng)目的既定目標(biāo),我們需要圍繞Mesos建立起完整的生態(tài)系統(tǒng)。Mesos在以下架構(gòu)示意圖當(dāng)中對應(yīng)的是“ClusterOS Kernel”。

上圖展示的是完整架構(gòu)。正如我們提到,從核心角度來看,RogerOS采用Mesos調(diào)度機(jī)制,但同時(shí)又整合進(jìn)大量協(xié)同服務(wù)并與之緊密集成。本系列博文的第二篇對這些設(shè)計(jì)細(xì)節(jié)做出了進(jìn)一步說明。
使用體驗(yàn)
通過以上敘述大家應(yīng)該能夠想見,RogerOS是一款非常復(fù)雜的系統(tǒng),而且已經(jīng)經(jīng)歷了相當(dāng)長的開發(fā)周期。在著手構(gòu)建之初,我們其實(shí)并不太確定選擇Mesos作為系統(tǒng)核心是否正確。當(dāng)時(shí)我們已經(jīng)通過實(shí)踐證明了Mesos的適用性,不過其在Moz這類混合型環(huán)境下的表現(xiàn)卻讓我們有點(diǎn)擔(dān)心。不過幸運(yùn)的是,我們最終還是選擇了Mesos,這一決定讓我們至今都相當(dāng)自豪。其不僅實(shí)現(xiàn)了既定承諾,還為我們帶來更多驚喜。事實(shí)上,我們在系統(tǒng)穩(wěn)定性、可擴(kuò)展性以及性能表現(xiàn)方面都沒有遇到任何問題。另外,Mesos還允許我們利用一小部分開發(fā)資源分步實(shí)現(xiàn)目標(biāo)。目前,一套小型設(shè)備集群已經(jīng)足以為Moz運(yùn)行多種應(yīng)用程序。關(guān)于這方面內(nèi)容的具體細(xì)節(jié),還請大家參閱本系列的第二篇博文。
開發(fā)人員對這套系統(tǒng)的反饋也相當(dāng)積極。Moz Content項(xiàng)目就是從零開始在RogerOS之上打造而成的,開發(fā)團(tuán)隊(duì)對于這套平臺(tái)給出了極高評(píng)價(jià)。具體來講,通過硬件抽象與高級(jí)服務(wù)交付,RogerOS能夠讓開發(fā)團(tuán)隊(duì)將精力集中在對產(chǎn)品本身的琢磨之上。另外,除了各類新產(chǎn)品之外,相當(dāng)一部分傳統(tǒng)產(chǎn)品也已經(jīng)能夠在這套系統(tǒng)當(dāng)中成功運(yùn)行。
總結(jié)
總體而言,RogerOS已經(jīng)成為Moz一個(gè)極具野心的項(xiàng)目,而且其能夠滿足很大一部分我們在立項(xiàng)之初為其設(shè)定的發(fā)展目標(biāo)。當(dāng)然,發(fā)展完善的道路仍然漫長,但我們對于目前獲得的成果感到相當(dāng)滿意!
另外同樣重要的是,我們要向各位為當(dāng)前成果做出貢獻(xiàn)的參與者表示感謝:Jord Sonneveld、Manish Ranjan、Amit Bose、Chris Whitten、Josh Gummersal、Evan Battaglia、Tyler Murray以及整個(gè)Moz Content團(tuán)隊(duì),謝謝你們!沒有你們的參與,RogerOS根本不可能實(shí)現(xiàn)如今的成就。
點(diǎn)擊查看英文原文
對RogerOS的詳細(xì)技術(shù)架構(gòu)感興趣?關(guān)注我們,本周會(huì)推出第二篇文章,為您詳細(xì)介紹RogerOS。