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