Nefele介紹:云計(jì)算的流程監(jiān)控協(xié)調(diào)系統(tǒng)
Nefele是可以在分布式環(huán)境中有效部署,擴(kuò)展和監(jiān)視流程的系統(tǒng)。
來(lái)自:沃爾夫?qū)ぜs翰 [v1] 2020年6月12日,星期五13:21:59 發(fā)布的論文。
無(wú)論是操作系統(tǒng)級(jí)別還是硬件級(jí)別的虛擬化,在云計(jì)算中都扮演著重要角色。它使分布式環(huán)境中的自動(dòng)化更加容易,部署速度更快。
盡管虛擬化基礎(chǔ)架構(gòu)提供了一定程度的管理靈活性,但它們?nèi)狈?duì)分布式資源的實(shí)用抽象。在這樣的環(huán)境中,開(kāi)發(fā)人員仍然需要處理構(gòu)建分布式軟件系統(tǒng)的所有復(fù)雜問(wèn)題。構(gòu)建了不同的業(yè)務(wù)流程系統(tǒng)來(lái)提供該抽象。
但是,它們不能解決分布式系統(tǒng)固有的挑戰(zhàn),例如同步問(wèn)題或故障恢復(fù)能力。
本文介紹了Nefele,它是一種分散的流程編排系統(tǒng),可自動(dòng)部署和管理集群中的各個(gè)流程,而不是容器/ VM。
Nefele的靈感來(lái)自于緩解遠(yuǎn)程執(zhí)行的復(fù)雜性的單一系統(tǒng)映像(SSI)愿景,但它保持了虛擬化基礎(chǔ)架構(gòu)的靈活性和性能。
Nefele提供了一組用于構(gòu)建云原生應(yīng)用程序的API,使開(kāi)發(fā)人員可以輕松地在云環(huán)境中構(gòu)建,部署和擴(kuò)展應(yīng)用程序。我們已經(jīng)在數(shù)據(jù)中心的集群上實(shí)現(xiàn)并部署了Nefele,并對(duì)其性能進(jìn)行了評(píng)估。我們的評(píng)估表明,
Nefele可以在分布式環(huán)境中有效部署,擴(kuò)展和監(jiān)視流程,同時(shí)它整合了基本原語(yǔ)以構(gòu)建分布式軟件系統(tǒng)。Nefele提供了一組用于構(gòu)建云原生應(yīng)用程序的API,使開(kāi)發(fā)人員可以輕松地在云環(huán)境中構(gòu)建,部署和擴(kuò)展應(yīng)用程序。我們已經(jīng)在數(shù)據(jù)中心的集群上實(shí)現(xiàn)并部署了Nefele,并對(duì)其性能進(jìn)行了評(píng)估。我們的評(píng)估表明,Nefele可以在分布式環(huán)境中有效部署,擴(kuò)展和監(jiān)視流程,同時(shí)它整合了基本原語(yǔ)以構(gòu)建分布式軟件系統(tǒng)。Nefele提供了一組用于構(gòu)建云原生應(yīng)用程序的API,使開(kāi)發(fā)人員可以輕松地在云環(huán)境中構(gòu)建,部署和擴(kuò)展應(yīng)用程序。我們已經(jīng)在數(shù)據(jù)中心的集群上實(shí)現(xiàn)并部署了Nefele,并對(duì)其性能進(jìn)行了評(píng)估。我們的評(píng)估表明,Nefele可以在分布式環(huán)境中有效部署,擴(kuò)展和監(jiān)視流程,同時(shí)它整合了基本原語(yǔ)以構(gòu)建分布式軟件系統(tǒng)。
簡(jiǎn)介
對(duì)于多節(jié)點(diǎn)系統(tǒng),可以向開(kāi)發(fā)人員隱藏分布式的復(fù)雜性,使應(yīng)用程序更易于開(kāi)發(fā)、調(diào)試和操作。
構(gòu)建分布式軟件系統(tǒng)一直以來(lái)都是復(fù)雜的。在分布式系統(tǒng)中,進(jìn)程運(yùn)行在不同的網(wǎng)絡(luò)計(jì)算機(jī)上,通過(guò)在網(wǎng)絡(luò)上傳遞消息來(lái)傳遞它們的操作,而不需要任何全局時(shí)鐘的概念。在這種環(huán)境中,有許多挑戰(zhàn),如保持同步、一致性、確保可用性、故障恢復(fù)能力和可跟蹤性。在此環(huán)境中發(fā)生的事件可能不會(huì)按預(yù)期順序出現(xiàn),必須處理系統(tǒng)的部分故障,節(jié)點(diǎn)可能不同意系統(tǒng)的當(dāng)前狀態(tài)。許多在單個(gè)節(jié)點(diǎn)上運(yùn)行良好的解決方案不再適用。
單一系統(tǒng)映像(SSI)概念自20世紀(jì)80年代中期以來(lái)已被許多項(xiàng)目實(shí)現(xiàn),提供這種幻覺(jué)或抽象的非現(xiàn)代化硬件視圖是其目標(biāo)。然而,這些項(xiàng)目都沒(méi)有獲得大規(guī)模的主流采用,主要是由于單節(jié)點(diǎn)結(jié)構(gòu)的低性能和缺乏可擴(kuò)展性。為了提供完整的UNIX接口,對(duì)這些結(jié)構(gòu)的仿真具有基本的限制,這些限制通常歸結(jié)為不同節(jié)點(diǎn)之間的同步需求。此外,許多在單個(gè)節(jié)點(diǎn)上運(yùn)行良好的技術(shù)在分布式環(huán)境中運(yùn)行不好。例如,在單個(gè)節(jié)點(diǎn)中,多個(gè)進(jìn)程之間的內(nèi)存共享是有效的,但在分布式環(huán)境中是無(wú)效的[2]。
x86平臺(tái)虛擬化技術(shù)的發(fā)展催生了云計(jì)算,在云計(jì)算中,用戶根據(jù)服務(wù)模型租用一組分布式計(jì)算資源來(lái)部署其應(yīng)用程序。雖然云平臺(tái)提供了對(duì)分布式資源的簡(jiǎn)單且可伸縮的訪問(wèn),但它們本身并不能解決上述分布式軟件系統(tǒng)固有的挑戰(zhàn)。為了緩解這些問(wèn)題,云提供商提供了廣泛的服務(wù)和產(chǎn)品,這些服務(wù)和產(chǎn)品被設(shè)計(jì)成在分布式環(huán)境中運(yùn)行,并提供通常需要的功能,如日志、數(shù)據(jù)庫(kù)、鎖定[1]、監(jiān)視和存儲(chǔ)。然而,云應(yīng)用程序的開(kāi)發(fā)人員仍然必須精心設(shè)計(jì)應(yīng)用程序,以處理由于底層系統(tǒng)的分布式性質(zhì)而產(chǎn)生的許多復(fù)雜問(wèn)題。
此外,這些項(xiàng)目中的許多在內(nèi)核級(jí)實(shí)現(xiàn)了SSI特性,例如,作為一組補(bǔ)丁。這使得它很難跟上開(kāi)源內(nèi)核的快速發(fā)展。最后,為了滿足不同應(yīng)用程序的需求,SSI服務(wù)通常實(shí)現(xiàn)了最嚴(yán)格的一致性版本,例如分布式文件系統(tǒng),即使大多數(shù)應(yīng)用程序?qū)嶋H上并不需要它。必須選擇最低的公分母來(lái)構(gòu)建通用系統(tǒng)會(huì)嚴(yán)重影響性能。最后,SSI工作的一個(gè)好處是,一個(gè)規(guī)模通常不是全部。
Erlang/OTP[3](開(kāi)放電信平臺(tái))是構(gòu)建分布式軟件系統(tǒng)的成功途徑。它是一種功能語(yǔ)言和運(yùn)行時(shí),用于構(gòu)建分布式、容錯(cuò)和高可用系統(tǒng)。Erlang模型的核心是放置所有com-
多核機(jī)器有許多相同的問(wèn)題。然而,在很大程度上,這個(gè)行業(yè)已經(jīng)能夠提供一個(gè)單一核心系統(tǒng)的假象,可以編程為一個(gè)單一的系統(tǒng)。
將計(jì)算放入強(qiáng)隔離的進(jìn)程中,它們之間不共享數(shù)據(jù),并且只通過(guò)異步消息傳遞進(jìn)行交互。OTP通過(guò)一組支持庫(kù)和設(shè)計(jì)原則擴(kuò)展了基本的Erlang語(yǔ)言和運(yùn)行時(shí)。
e、 例如,容器或vm,進(jìn)程在其中運(yùn)行。這些進(jìn)程以主機(jī)到主機(jī)的方式相互通信,除非它們?cè)谕粓?zhí)行環(huán)境中運(yùn)行。執(zhí)行環(huán)境中的進(jìn)程可以使用操作系統(tǒng)(OS)服務(wù),這些服務(wù)基本上不是默認(rèn)分布的。為了簡(jiǎn)化開(kāi)發(fā)分布式軟件系統(tǒng)的任務(wù),設(shè)計(jì)用于在分布式環(huán)境中操作的服務(wù)作為外部服務(wù)提供。通常,有多個(gè)這樣的服務(wù)提供具有不同特征的相同功能,允許開(kāi)發(fā)人員選擇最適合任務(wù)的服務(wù)。
在本文中,我們擴(kuò)展了在[4]中的工作,并介紹了一個(gè)能夠在集群上執(zhí)行和管理Linux進(jìn)程的分布式進(jìn)程編排系統(tǒng)Nefele。Nefele受到SSI減輕遠(yuǎn)程執(zhí)行困難的愿景的啟發(fā),并采用了一些Erlang/OTP設(shè)計(jì)原則和機(jī)制來(lái)處理分布式軟件系統(tǒng)。在Nefele中,除了虛擬化環(huán)境中的本地操作系統(tǒng)功能外,開(kāi)發(fā)人員還配備了一組類似于SSI的功能和編程API。這些額外的功能通過(guò)為流程提供簡(jiǎn)單的編程接口來(lái)部署、執(zhí)行、連接和監(jiān)視其他流程,從而隱藏了分布式環(huán)境中流程部署和IPC的復(fù)雜性。然而,Nefele并沒(méi)有試圖隱藏應(yīng)用程序在分布式環(huán)境中執(zhí)行的事實(shí),因此也沒(méi)有限制開(kāi)發(fā)人員在單個(gè)節(jié)點(diǎn)上使用當(dāng)前可用(或有效)的功能。在Nefele中,進(jìn)程是調(diào)度和執(zhí)行的單元,也是消息傳遞的端點(diǎn)。與容器或虛擬機(jī)相比,工藝是一個(gè)增強(qiáng)單元,具有更高的靈活性和延展性。在Erlang中,應(yīng)用程序內(nèi)部的依賴關(guān)系和關(guān)系由應(yīng)用程序本身定義,而不是使用外部部署圖表和清單。
1592185367080
在圖1c中描繪了SSI模型。在SSI模型中,流程調(diào)度器執(zhí)行與容器編排引擎相似的角色,但是,它直接部署和管理流程,而不是執(zhí)行環(huán)境。這些進(jìn)程彼此直接通信,而不需要任何底層主機(jī)的概念。SSI操作系統(tǒng)本質(zhì)上提供了開(kāi)發(fā)分布式軟件系統(tǒng)所需的功能,例如進(jìn)程間通信(IPC)系統(tǒng)或一致的分布式文件系統(tǒng)。通常情況下,用戶不能對(duì)這些功能做出任何選擇,而且她必須遵守系統(tǒng)提供的功能。反過(guò)來(lái),系統(tǒng)必須實(shí)現(xiàn)這些功能中最嚴(yán)格的形式,以支持最嚴(yán)格的應(yīng)用程序要求,例如,通過(guò)使用強(qiáng)一致性的分布式文件系統(tǒng),而不是最終一致的系統(tǒng)。
Nefele的目標(biāo)是一個(gè)混合模型,從每個(gè)模型中繼承有用的方面。圖1b顯示了Nefele的設(shè)計(jì),陰影背景突出了與其他模型的重疊。Nefele采用了SSI關(guān)于共享進(jìn)程空間、IPC、進(jìn)程放置和受限操作系統(tǒng)服務(wù)集的思想,并通過(guò)查看和與底層單節(jié)點(diǎn)操作系統(tǒng)交互以及利用虛擬化基礎(chǔ)設(shè)施中當(dāng)前可用工具的能力來(lái)增強(qiáng)它。因此,由Nefele管理的進(jìn)程可以從節(jié)點(diǎn)的本地功能和分布式SSI服務(wù)中獲益。
本文以SSI和Erlang/OTP為基礎(chǔ),提出了一種分散式流程編排系統(tǒng)Nefele。Nefele的目標(biāo)是通過(guò)提供底層分布式資源的聚合視圖以及動(dòng)態(tài)運(yùn)行時(shí)信息(例如,運(yùn)行進(jìn)程的聚合列表),簡(jiǎn)化構(gòu)建云本地應(yīng)用程序。使用Nefele,開(kāi)發(fā)人員可以在集群上以編程方式部署和管理應(yīng)用程序,部分抽象為單個(gè)節(jié)點(diǎn)。這是通過(guò)一個(gè)分布式控制平面實(shí)現(xiàn)的,該控制平面跨多個(gè)節(jié)點(diǎn)協(xié)調(diào)應(yīng)用程序的進(jìn)程并與之通信。Nefele執(zhí)行分布式進(jìn)程管理,允許開(kāi)發(fā)人員在分布式環(huán)境中生成、列出、監(jiān)視故障、發(fā)送信號(hào)和控制進(jìn)程。
在Nefele中,不同過(guò)程之間的關(guān)系是用所選的編程語(yǔ)言定義的,而不是通過(guò)外部,例如YAML模板。程序化的關(guān)系定義方式使得定制它們背后的邏輯成為可能,例如,開(kāi)發(fā)人員可以實(shí)現(xiàn)自定義邏輯來(lái)確定何時(shí)以及如何擴(kuò)展。
我們的評(píng)估表明,Nefele可以有效地部署、擴(kuò)展和管理分布式進(jìn)程,根據(jù)任務(wù)大小和到達(dá)率,平均進(jìn)程調(diào)度時(shí)間在10到20 ms之間。在一個(gè)由15個(gè)節(jié)點(diǎn)組成的集群中,Nefele每分鐘能夠處理30000個(gè)請(qǐng)求,平均調(diào)度時(shí)間低于50ms。
由于Nefele的控制平面是分散的,因此不存在單點(diǎn)故障,系統(tǒng)可以通過(guò)網(wǎng)絡(luò)分區(qū)等故障保持運(yùn)行。采用監(jiān)督樹(shù)的過(guò)程容錯(cuò)模型,故障檢測(cè)和處理時(shí)間低至20ms。
目前,Nefele的alpha版本正在我們的數(shù)據(jù)中心作為服務(wù)運(yùn)行,面向內(nèi)部用戶開(kāi)放。我們的用戶正在部署多層分布式應(yīng)用程序,測(cè)試Nefele的開(kāi)發(fā)和部署優(yōu)勢(shì),并特別利用內(nèi)置IPC和故障轉(zhuǎn)移機(jī)制。我們正在擴(kuò)展Nefele的更多功能,增加更多的內(nèi)部和外部服務(wù),進(jìn)一步簡(jiǎn)化分布式應(yīng)用程序的構(gòu)建。我們也在更大、更具異質(zhì)性的集群中測(cè)試該系統(tǒng),以發(fā)現(xiàn)和解決瓶頸問(wèn)題。基于用戶反饋,我們計(jì)劃進(jìn)一步重新定義API并改進(jìn)現(xiàn)有功能的性能,例如,在Placement agent中應(yīng)用機(jī)器智能,并通過(guò)RDMA減少IPC延遲。
詳細(xì)請(qǐng)閱讀pdf版論文。本文來(lái)自:https://arxiv.org/abs/2006.07163