當(dāng)前云計(jì)算領(lǐng)域最火的兩個(gè)項(xiàng)目無疑是和。如果說云計(jì)算是洶涌的江湖,那么說和諧就是江湖中的泰山北斗也不為過。猶如少林,根基扎實(shí),沉穩(wěn)厚重,而武當(dāng),輕飄飄,飄逸細(xì)膩。用過這兩個(gè)系統(tǒng)的人應(yīng)該都有這種感覺。它們生于虛擬化技術(shù),穩(wěn)定但慢,來自容器技術(shù),快但有限。兩種不同的技術(shù)決定了不同的生命軌跡。那么兩者是什么關(guān)系呢?我們分析分析。
產(chǎn)地比較:
:
2010年7月,公司與NASA合作,分別貢獻(xiàn)了云文件平臺(tái)代碼和NASA平臺(tái)代碼,并發(fā)布了第一個(gè)版本。2010年是美國第二大云計(jì)算公司,但規(guī)模僅占亞馬遜的5%。僅靠內(nèi)功是不可能超越或趕超亞馬遜的。該公司已經(jīng)開源了自己的項(xiàng)目,即后來的存儲(chǔ)源代碼(swift)。同時(shí),NASA 也對其使用的云計(jì)算管理平臺(tái)非常不滿。NASA 想為開源版本做出貢獻(xiàn),但沒有被接受。當(dāng)時(shí),NASA 的六名開發(fā)人員花了一周的時(shí)間制作了一個(gè)原型,虛擬機(jī)在上面運(yùn)行得非常成功。這就是 Nova(計(jì)算源代碼)的由來。目前的對象存儲(chǔ)和計(jì)算服務(wù)只有 swift 和 Nova 兩個(gè)項(xiàng)目。此后,一直保持每六個(gè)月發(fā)布一個(gè)版本的頻率,目前最新的版本是 Rocky。在最新版本中,項(xiàng)目已達(dá)60多個(gè)。
:
是 2014 年發(fā)布的一個(gè)開源項(xiàng)目。開發(fā)了一個(gè)名為 Brog 的系統(tǒng),用于在內(nèi)部調(diào)度大量容器和工作負(fù)載。在積累了多年的經(jīng)驗(yàn)后,我決定重寫這個(gè)容器管理,并將其貢獻(xiàn)給開源社區(qū),造福世界。自 2014 年第一個(gè)版本發(fā)布以來mac上開源項(xiàng)目管理軟件,迅速受到開源社區(qū)的追捧,現(xiàn)已成為增長最快、市場份額最高的容器編排引擎。截至目前,最新版本是 1. 11。
版本發(fā)布表:
技術(shù)實(shí)現(xiàn)
:虛擬化
作為開源云計(jì)算平臺(tái),利用虛擬化技術(shù)和底層存儲(chǔ)服務(wù),提供可擴(kuò)展、靈活、適應(yīng)性強(qiáng)的云計(jì)算服務(wù)。虛擬化是云計(jì)算的基礎(chǔ)。簡單地說,虛擬化使多個(gè)虛擬機(jī)可以在一個(gè)物理服務(wù)器上運(yùn)行。虛擬機(jī)共享物理機(jī)的 CPU、內(nèi)存和 IO 硬件資源,但虛擬機(jī)之間在邏輯上是相互隔離的。主機(jī)通常使用程序來虛擬化硬件資源并提供給客戶端使用。如下圖所示是一個(gè)虛擬化的架構(gòu)。
每個(gè)虛擬機(jī)都有自己的內(nèi)核和文件系統(tǒng),是一個(gè)完全獨(dú)立的操作系統(tǒng)。上圖是兩種虛擬化方法之一:準(zhǔn)虛擬化——KVM。在當(dāng)前環(huán)境下,KVM虛擬化技術(shù)是使用最多的技術(shù)。
虛擬化優(yōu)勢:隔離性強(qiáng),所有虛擬機(jī)都有自己的協(xié)議棧,每個(gè)虛擬機(jī)的底層相互隔離。
虛擬化的缺點(diǎn):占用資源較多,虛擬化技術(shù)本身占用資源,宿主機(jī)性能消耗10%左右。
:
它是一個(gè)容器管理編排引擎,所以底層實(shí)現(xiàn)自然是容器技術(shù)。容器是一種輕量級(jí)、可移植、自包含的軟件 封裝技術(shù),它使封裝的應(yīng)用程序幾乎可以在任何地方以相同的方式運(yùn)行。以容器的典型代表為例,它起源于2013年3月,是基于LXC構(gòu)建的容器引擎。它通過and實(shí)現(xiàn)資源隔離和分配,并使用分層存儲(chǔ)構(gòu)建鏡像。它是基于公司推出的Go語言實(shí)現(xiàn)的。與KVM虛擬化技術(shù)相比,最??明顯的特點(diǎn)就是啟動(dòng)速度快,占用資源少。虛擬化在幾分鐘內(nèi)啟動(dòng)虛擬機(jī),而不是幾秒鐘。下面是架構(gòu)圖。
啟動(dòng)速度快,資源消耗小,原因在于技術(shù)架構(gòu):
一個(gè)操作系統(tǒng)分為內(nèi)核+文件系統(tǒng)。容器技術(shù)就是利用宿主機(jī)的內(nèi)核系統(tǒng)加上自己的文件系統(tǒng)。容器運(yùn)行時(shí),文件系統(tǒng)是在使用宿主機(jī)內(nèi)核的條件下加載的。縮小后的文件系統(tǒng)可以小到100MB,自然比虛擬機(jī)快很多。將容器視為運(yùn)行在內(nèi)核上的自包含代碼單元MicroDicom viewer(Dicom格式看圖軟件),它們非常輕量級(jí)。因此,占用的資源更少。
容器的優(yōu)點(diǎn):啟動(dòng)快、資源占用小、可移植性好
容器的缺點(diǎn):隔離性差,共享宿主機(jī)內(nèi)核,底層可以訪問。取決于主機(jī)內(nèi)核,因此容器的系統(tǒng)選項(xiàng)是有限的。
架構(gòu)比較
:
服務(wù)分為核心功能和非核心功能。核心功能是指系統(tǒng)運(yùn)行所必需的功能,其中核心功能有:
其工作模式如下:
很大一部分“為什么選擇”用戶調(diào)查提出了:開放平臺(tái)和標(biāo)準(zhǔn)化 API。實(shí)現(xiàn)松耦合和解耦的思想,各個(gè)服務(wù)之間使用標(biāo)準(zhǔn)的API接口調(diào)用,這些接口可以開發(fā)用于非程序調(diào)用。
具體來說就是( state )和RPC( call)。服務(wù)之間使用 API 通信來最小化服務(wù)之間的依賴關(guān)系。比如在創(chuàng)建虛擬機(jī)的時(shí)候,nova服務(wù)需要調(diào)用,調(diào)用,都是通過api來完成的。服務(wù)內(nèi)模塊之間的調(diào)用使用 RPC,這增加了水平可伸縮性。比如nova-api收到創(chuàng)建虛擬機(jī)的請求,會(huì)調(diào)用nova-選擇創(chuàng)建虛擬機(jī)的主機(jī),nova-完成虛擬機(jī)創(chuàng)建的具體工作。此外,常用的技術(shù)有:
1. 消息總線 AMQP
2. ORM 模型數(shù)據(jù)庫
3. WSGI web 網(wǎng)管接口
4. 協(xié)程
使用開源技術(shù)避免輪子的重復(fù)制造,對團(tuán)隊(duì)的技術(shù)選擇有參考意義。
:
這個(gè)想法是試圖確保用戶的理想狀態(tài)。一般來說,用戶創(chuàng)建了三個(gè)容器。為了保證這三個(gè)容器的壽命,三個(gè)容器始終健康,停電等故障可以及時(shí)得到補(bǔ)償。它由和Node組成,Node是大腦,Node是計(jì)算節(jié)點(diǎn)。
下圖的組成:
節(jié)點(diǎn)上運(yùn)行的服務(wù)有:
1. API:提供 api。各種客戶端工具或其他組件都可以調(diào)用它來完成資源調(diào)用。
2. :調(diào)度服務(wù)決定在哪個(gè)節(jié)點(diǎn)上創(chuàng)建容器。
3. :管理系統(tǒng)中的各種資源,保證資源處于預(yù)期狀態(tài)。
4. etcd:保存系統(tǒng)配置信息和各種資源的狀態(tài)信息。
5. Pod 網(wǎng)絡(luò):可以是 , , weave 等之一。
節(jié)點(diǎn)節(jié)點(diǎn)服務(wù):
1. :接收節(jié)點(diǎn)發(fā)送的創(chuàng)建請求信息,上報(bào)運(yùn)行狀態(tài)。
2. kube-proxy :訪問控制。
同樣的方式創(chuàng)建一個(gè)服務(wù)來分析整個(gè)系統(tǒng)的運(yùn)行情況。客戶端向系統(tǒng)發(fā)送創(chuàng)建請求,API接收到請求,通知?jiǎng)?chuàng)建資源,由其負(fù)責(zé)具體的創(chuàng)建過程,調(diào)用選擇創(chuàng)建哪個(gè)主機(jī),然后將請求發(fā)送到Node節(jié)點(diǎn). Node 節(jié)點(diǎn)接收請求并創(chuàng)建特定資源。.
還要遵循標(biāo)準(zhǔn)化的 API 接口。
API是集群系統(tǒng)的重要組成部分。集群中各種資源(對象)的數(shù)據(jù)通過API接口提交到后端持久化存儲(chǔ)(etcd),集群中的組件通過API接口解耦。同時(shí),集群中一個(gè)重要且便捷的管理工具也通過訪問API接口來實(shí)現(xiàn)其強(qiáng)大的管理功能。在系統(tǒng)中的大多數(shù)情況下,API 的定義和實(shí)現(xiàn)都符合標(biāo)準(zhǔn)的 HTTP REST 格式,例如通過標(biāo)準(zhǔn)的 HTTP 動(dòng)詞(POST、PUT、GET 等)來查詢、創(chuàng)建、修改和刪除相關(guān)資源對象。但同時(shí)它也為一些非標(biāo)準(zhǔn)的 REST 行為實(shí)現(xiàn)了額外的 API 接口,例如觀察資源的變化、進(jìn)入容器執(zhí)行操作等。
使用場景
:
場景 1:安全和隔離。適用于構(gòu)建私有云和基于私有云的使用場景。底層采用虛擬化技術(shù),其基因具有隔離性好、穩(wěn)定性好、部署靈活等特點(diǎn)。云桌面的成功案例就是一個(gè)典型的例子。許多公司已將其生產(chǎn)環(huán)境遷移到云端。比如企業(yè)上云的時(shí)候PhotoPageGen(電子相冊制作軟件),工作環(huán)境就是云桌面的形式。一是降低設(shè)備成本。上云之前,每人一臺(tái)主機(jī),現(xiàn)在幾十個(gè)人用一臺(tái)服務(wù)器。如果考慮 CPU 和內(nèi)存的使用,成本肯定會(huì)降下來。二是安全。并非所有數(shù)據(jù)都存儲(chǔ)在周圍,這在一些安全系數(shù)較高的行業(yè)尤為重要。它一直受到金融行業(yè)的青睞,安全功能在這里是少不了的。
場景 2:提供基礎(chǔ)設(shè)施。它是一個(gè)定位在laas平臺(tái)上的項(xiàng)目,它的優(yōu)點(diǎn)是可以提供一個(gè)非常底層的設(shè)施,比如虛擬機(jī)。如果您在業(yè)務(wù)場景中嚴(yán)重依賴虛擬機(jī),例如編譯內(nèi)核或驅(qū)動(dòng)開發(fā),這是一個(gè)不錯(cuò)的選擇。
場景 3:存儲(chǔ)要求。存儲(chǔ)是另一個(gè)優(yōu)勢。該項(xiàng)目的第一個(gè)版本包括存儲(chǔ)和計(jì)算。在后期的不斷發(fā)展中,存儲(chǔ)作為一項(xiàng)重要的功能,不斷得到完善和創(chuàng)新。像塊存儲(chǔ)一樣,ceph 共享存儲(chǔ)能量。在存儲(chǔ)需求量大的場景下,能夠提供高效、安全的存儲(chǔ)解決方案,這也是電信行業(yè)看好的原因之一。
場景四:動(dòng)態(tài)數(shù)據(jù)場景。即不需要重復(fù)創(chuàng)建和銷毀這些服務(wù)的運(yùn)行環(huán)境。虛擬機(jī)的優(yōu)勢在于穩(wěn)定性,優(yōu)勢在于運(yùn)行穩(wěn)定的項(xiàng)目。
:
場景一:適用于業(yè)務(wù)變化快、業(yè)務(wù)量未知的靜態(tài)使用場景。所謂靜態(tài)使用場景,是指在其創(chuàng)建的容器中,數(shù)據(jù)并非實(shí)時(shí)生成的場景。例如:網(wǎng)站架構(gòu),一次部署,長期使用。尤其是遇到一些線上業(yè)務(wù)量不確定的場景,可以動(dòng)態(tài)擴(kuò)展,靈活擴(kuò)展,從5W并發(fā)到10W并發(fā),秒級(jí)處理。
場景二:這些服務(wù)的運(yùn)行環(huán)境需要反復(fù)創(chuàng)建和銷毀。優(yōu)點(diǎn)是啟動(dòng)速度快,消耗資源少。所以在需要頻繁創(chuàng)建和銷毀的場景中是個(gè)不錯(cuò)的選擇。
場景 3:需要業(yè)務(wù)模塊化和可擴(kuò)展性:容器可以輕松地將應(yīng)用程序的功能分解為單個(gè)組件,符合微服務(wù)架構(gòu)的設(shè)計(jì)模式。
場景四:應(yīng)用云化。將現(xiàn)有應(yīng)用和新開發(fā)的應(yīng)用轉(zhuǎn)為云原生應(yīng)用,利用云平臺(tái)的可擴(kuò)展性、彈性和高可用性,利用PaaS層提供的API實(shí)現(xiàn)自動(dòng)恢復(fù)等更高級(jí)的功能,自定義彈性縮放等。
場景 5:微服務(wù)架構(gòu)和 API 管理。服務(wù)拆分抽象了不同系統(tǒng)的權(quán)限控制和任務(wù),讓業(yè)務(wù)開發(fā)者可以通過服務(wù)組合快速創(chuàng)建企業(yè)應(yīng)用。有的企業(yè)在沒有相應(yīng)的管理平臺(tái)之前,就已經(jīng)將應(yīng)用拆分成很多服務(wù)。如何部署這些微服務(wù)并控制 API 權(quán)限成為了一個(gè)需要解決的問題,而具有代表性的 PaaS 就是一個(gè)理想的選擇。
社區(qū)比較
對于開源項(xiàng)目來說,社區(qū)的熱情程度代表著活力和潛力。如何判斷一個(gè)項(xiàng)目的未來發(fā)展,關(guān)注社區(qū)一定是最基本的要求。
:
是開源項(xiàng)目的代表作之一。
R版從第一個(gè)版本到現(xiàn)在的開發(fā)過程,為了探索開源生態(tài),給了高分。最明顯的指標(biāo)是每個(gè)版本的代碼貢獻(xiàn)量。代碼貢獻(xiàn)量是衡量一個(gè)企業(yè)實(shí)力的重要標(biāo)準(zhǔn),代表著在開源社區(qū)的話語權(quán),也代表著為自身權(quán)益而戰(zhàn)的能力。于是欣欣向榮的公司花費(fèi)人力物力為社區(qū)代碼貢獻(xiàn)力量。
另一方面的出現(xiàn),極大地加速了IT架構(gòu)的演進(jìn)。社區(qū)對開發(fā)過程的把控非常有效,無論是代碼質(zhì)量保證,還是單元測試、集成測試等測試都值得借鑒。
:
社區(qū)起步較晚,目前還不是很流行,但是在中國發(fā)展的普及度還是很高的。中文社區(qū)為國內(nèi)愛好者提供教程、中文文檔、安裝教程等,大大降低了國內(nèi)用戶的開發(fā)和使用難度。
融合
雖然說他和他是云計(jì)算領(lǐng)域的兩位領(lǐng)軍人物,但他們一定是水火不容嗎?事實(shí)上dds貼圖批量轉(zhuǎn)換工具,恰恰相反,兩者一直在積極地相互融合。可以集成,目前有三種選擇:
1. 用于 Nova
2. 表示熱
3.
部署是許多公司已實(shí)施部署的另一種融合方式。反之,使用服務(wù)進(jìn)行部署也是一種非常成功的部署方式。在需要頻繁部署環(huán)境的場景下,幾分鐘即可完成部署,大大降低了部署的難度和耗時(shí)。
從長遠(yuǎn)來看,兩者的趨同趨勢在所難免。
總結(jié)
是定位在IaaS平臺(tái)上的項(xiàng)目,也是定位在PaaS平臺(tái)上的項(xiàng)目,兩者在各自的領(lǐng)域都做得很好。如果它不像它那樣靈活,它也不像它那樣穩(wěn)定。就好像說,武當(dāng)功夫的功底肯定比少林強(qiáng)mac上開源項(xiàng)目管理軟件,少林的拳法和腳法都不如武當(dāng)功夫。事實(shí)上,根據(jù)業(yè)務(wù)需求,懂得靈活運(yùn)用這兩種不同風(fēng)格的系統(tǒng)才是制勝之道。
通過兩個(gè)系統(tǒng)的淵源、技術(shù)架構(gòu)、使用場景和社區(qū)的對比,希望能給讀者在選型上一些有用的參考。