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