文中內(nèi)容來源于stackoverflow上的一個(gè)問題 ,提問者想知道Mesos在實(shí)際的使用中都有哪些使用場(chǎng)景,來自Twitter的工程師從容器編排、資源利用率、優(yōu)先級(jí)和資源搶占、以及服務(wù)運(yùn)行等幾個(gè)角度,對(duì)問題進(jìn)行了回答。
我嘗試探究用戶使用Mesos的原因究竟有哪些,以下是暫時(shí)列出的幾個(gè)要點(diǎn),不知道還有沒有其他的例子?
1)讓用戶把所有的服務(wù)都運(yùn)行在同一個(gè)集群中而不是運(yùn)行在專用的集群中(比如通過終端應(yīng)用的集群+DevOps的方式,例如像Jekins)
2) 在同一個(gè)集群中運(yùn)行不同類型的成熟的服務(wù)(dev,test,production)不知道這樣是否可行?Kubernetes中已經(jīng)可以通過lables標(biāo)簽來提供類似的功能。
3) Mesos 通過提供簡(jiǎn)化部署、統(tǒng)一標(biāo)準(zhǔn)的API、資源裝箱等一系列的操作,簡(jiǎn)化了傳統(tǒng)的分布式服務(wù)(比如像Hadoop)的使用流程。
回答(Dave Lester):
我目前在Twitter工作,我同時(shí)參與到了Apache Mesos以及Autora項(xiàng)目的相關(guān)工作中,下面是我對(duì)Mesos使用場(chǎng)景的理解。
Mesos的實(shí)際使用場(chǎng)景可能會(huì)受到以下幾個(gè)因素的影響:集群規(guī)模(數(shù)十臺(tái)服務(wù)器到成千上萬臺(tái))、可使用的硬件(專用的/靜態(tài)的,或者是云端的/可擴(kuò)展的)、以及工作量(提供基本的服務(wù)或是批量處理的服務(wù),或兩種服務(wù)同時(shí)提供)
上面所列出的幾點(diǎn)都很有道理,這里我再加上幾種新的使用案例。
容器編排
隨著容器環(huán)境(比如Docker)變得越來越流行,許多潛在的用戶正在尋找一種 Mesos+調(diào)度器的方案來管理鏡像在創(chuàng)建之后的編排工作。Mesos到目前為止已經(jīng)相當(dāng)成熟,已經(jīng)被證明可以規(guī)模化地提供服務(wù),我認(rèn)為Mesos的解決方案比某些臨時(shí)出現(xiàn)的方案要好很多。
提升資源利用率
對(duì)于使用超過50臺(tái)服務(wù)器的公司而言,一個(gè)通常的使用Mesos的動(dòng)機(jī)就是提升資源利用率,并且減少運(yùn)維成本。目前已經(jīng)有許多這樣的公司,比如各種公有云和私有云服務(wù)的提供商。在Ebay的案例中,它們?cè)?jīng)在Mesos上運(yùn)行Jekins這樣可以減少虛擬機(jī)的使用。Mesosphere也發(fā)布了相關(guān)的文章對(duì)于 HubSpot (運(yùn)行在AWS上)的案例研究,文章中介紹了HubSpot是如何使用幾十臺(tái)大型的服務(wù)器來替代了幾百臺(tái)小型的服務(wù)器,使得硬件的利用率更高。
優(yōu)先級(jí)和資源搶占
在Twitter,我們通過一個(gè)調(diào)度器: Apache Aurora 來運(yùn)行Mesos服務(wù)。在這個(gè)使用場(chǎng)景中,我們有一種方式可以提高資源的利用率:在同一個(gè)集群上運(yùn)行不同的成熟的服務(wù)。Aurora有一個(gè)環(huán)境變量的概念,這可以讓用戶可以運(yùn)行不同環(huán)境類型的服務(wù),比如production、development、或者是test環(huán)境。此外,Aurora還有一種內(nèi)建的優(yōu)先級(jí)搶占機(jī)制,這可以允許它來優(yōu)先考慮production環(huán)境下的任務(wù),當(dāng)這些資源需要被production環(huán)境中的任務(wù)使用的時(shí)候,系統(tǒng)可以及時(shí)結(jié)束非production的任務(wù),在每一種環(huán)境中,都有類似的優(yōu)先級(jí)系統(tǒng)。
長(zhǎng)期的,功能性相關(guān)的資源搶占功能也將會(huì)存在于Mesos本身的內(nèi)核中 -- 這是一個(gè)殺手級(jí)的特性,這個(gè)功能可以增強(qiáng)資源利用率,并且在不同的環(huán)境下(dev、test、prod)運(yùn)行不同的成熟的服務(wù)。如果你對(duì)相關(guān)的話題感興趣,可以參考MESOS-155以及MESOS-1474。
同時(shí)運(yùn)行批處理服務(wù)和普通服務(wù)
可以在一個(gè)共享的Mesos集群中同時(shí)運(yùn)行批處理任務(wù)以及其他的普通服務(wù),這將對(duì)資源利用率的提升起到關(guān)鍵作用。讓我們回顧一下Myriad項(xiàng)目,這個(gè)項(xiàng)目希望把Mesos以及YARN的工作任務(wù)放在同一個(gè)集群中。在這個(gè)時(shí)候,用戶并不在意同時(shí)進(jìn)行批量服務(wù)和普通服務(wù)的大規(guī)模的部署工作,在一個(gè)共享的集群中運(yùn)行多個(gè)框架也將變得更加簡(jiǎn)單,這也是社區(qū)發(fā)展的一個(gè)方向。