程式語言Swift官方宣布釋出分散式演員(Distributed Actors)套件,這是一個伺服器面向的叢集函式庫,提供分散式演員語言功能,該函式庫在伺服器使用案例中,針對分散式演員提供完整的解決方案,官方提到,他們希望透過開源該函式庫,來收集更多的相關的回饋。

演員模型(Actor Model)是一種並行運算模型,而演員則是一種抽象概念,為並行運算的基本單元,作為運算實體,演員可以傳送訊息給其他演員,並且建立新演員等動作,演員之間的動作,不包含順序執行的假設,因此可以並列進行。

官方提到,分散式演員是Swift並行模型演進的下一步,透過語言內建的演員,Swift提供開發者一個安全且直觀的並行模型,適用於許多應用程式。與其他並行模型不同的地方在於,演員模型適用於分散式系統,開發者可以使用熟悉的演員概念,開發分散式系統應用程式,並且將其移動到諸如叢集等分散式環境中。官方想要透過分散式演員,簡化和推動分散式系統程式開發。

不過,分散式演員套件的抽象,並不打算完全隱藏分散式跨網路呼叫的事實,官方解釋,在某種程度來說,他們正在進行相反的事情,他們假設呼叫可能是遠端的。套件可主要用於建構分散式系統,但是也支援在本地測試叢集中進行測試,並且有效地模擬各種錯誤情境。

分散式演員概念類似本地端演員,因為都僅透過非同步呼叫,將狀態和通訊封裝在一起,分散式的部分則是增加了額外的隔離、類型系統和執行時的注意項目,但以功能表面來說,跟本地端演員非常相似,官方提到,分散式演員減少了許多一般遠端程序呼叫系統,所需要建構和撰寫的樣板程式碼,因為開發者不用關心程式碼片段中切確序列化和網路細節,開發者就僅需要宣告來完成配置,並且跨網路傳送工作請求。

要在分散式系統中加入分散式演員,開發者必須為其提供ActorTransport,這是一個可由用戶實作的函式庫元件,負責執行遠端函式呼叫所需要的網路工作。而在Swift標準函式庫中,不提供任何特定的傳輸方法,僅定義語言模型和擴充性,讓傳輸實作可以使用這些模型語言和擴充性,替分散式演員實作特定的傳輸功能。

標準函式庫定義了ActorTransport協定,讓任何人都可以實現該協定,將分散式演員應用在特殊的用例中,官方提到,傳輸實作案例不只限於叢集系統,還可包括基於Web-socket的訊息傳遞,或是分散式演員的內部處理通訊。

而官方所發布的Swift Distributed Actors函式庫,則是用來建構分散式系統的全功能框架,是一個ActorTransport協定的實作,可作為其他傳輸功能開發者的實作參考。這個函式庫利用Swift高效能伺服器端網路函式庫SwiftNIO,實現叢集的網路層,同時叢集函式庫還提供基於Swift Cluster Membership函式庫的成員服務,這代表使用者可以在獨立模式下運作叢集,而不需要額外啟動服務探索和資料庫服務,因此可簡化在裸機中的部署工作。

叢集被設計具有高可擴展性,分散式演員系統讓演員們可以組成一個叢集,相互探索溝通,開發者不需要開發低階網路程式。分散式演員目前為一個早期的實驗性語言功能,目標是要簡化和推動Swift中的分散式系統程式開發技術,但因為現在仍在早期預覽階段,因此API可能任意的變動。

熱門新聞

Advertisement