- Orleans:構建高性能分布式Actor服務
- 吳哲昊編著
- 1490字
- 2022-06-17 16:15:43
1.2 NET平臺與Orleans服務框架
.NET是由微軟公司開發的免費、開源的應用程序開發平臺,可運行在多種處理器架構(x64、x86、ARM32及ARM64)及多種操作系統(Windows、Linux及macOS)上,開發人員在.NET平臺上使用多種語言(C#、F#或Visual Basic)構建桌面程序、云服務、嵌入式應用及機器學習應用。
.NET技術是多種.NET運行時、應用程序框架及相應SDK實現的總稱,通過一組名為.NET Standard的基礎API集合進行規范,實現.NET應用程序的多平臺兼容性。當前,由微軟公司開發并維護的.NET技術實現方案如下。
? .NET Core:具有跨平臺特性的.NET實現形態,可以運行在Windows、macOS和Linux系統中,支持ASP.NET Core、Windows Form及Windows Presentation Foundation(WPF)應用程序,最新版本為.NET Core 3.1。
? .NET Framework:.NET平臺的原始實現形態,僅面向Windows系統,適用于Windows桌面應用程序開發,最新版本為.NET Framework 4.8。
? Mono:主要用于驅動Xamarin應用程序的.NET運行時,其可以運行在Android、macOS、iOS、tvOS和watchOS系統上,最新穩定版本為Mono 6.8.0。
? UWP:適用于物聯網及觸控式Windows設備的.NET運行時,主要應用在Xbox及便攜式Windows 10設備中,最新版本為10.0。
由于.NET Core平臺具有開源和跨平臺特性,在業界已受到廣泛關注。目前,微軟正在嘗試基于.NET Core及.NET Framework對.NET平臺的技術實現進行統一(即.NET 5),實現完整的跨平臺、跨架構.NET應用程序生態。
Orleans應用服務框架是.NET平臺下針對可伸縮分布式應用設計的Actor編程模型框架,該項目最初由Microsoft Research在2010年發起,并主要用于支撐Azure云平臺上的多種應用服務(如Halo系列游戲)。Orleans框架于2015年1月正式開源,它使用C#語言編寫,并通過虛擬Actor(Virtual Actor)模型提供了一種簡明的服務構建方式,使應用開發人員在進行應用開發時可以專注于實現業務邏輯,無須依賴復雜的應用程序編碼解決數據的并發訪問、異常處理及系統資源分配等問題。
傳統Actor模型框架(如Akka)雖然通過對行為和狀態的聚合抽象對并發場景下的數據共享操作性能進行了優化,但應用程序仍然需要顯式對Actor實例進行管理:應用服務在處理業務請求時,應用程序需要顯式地創建處理請求所需的獨立響應單元(即Actor實例),并在響應完成時主動釋放并回收該Actor實例所占用的系統資源;在運行階段,應用程序還需要對Actor實例的運行時異常進行監控,并在異常恢復時通過一定的方式重建該Actor實例。傳統的Actor模型框架都定義了系統內各Actor對象間的從屬關系,使開發人員能夠在應用代碼層面管理每個Actor實例的運行時生命周期(如在Akka中,通過Actor實例間的樹狀從屬關系來處理資源申請、釋放策略并確定Actor運行時異常的監督鏈路)。在構建應用程序服務時,這種實現策略引入了與實際應用邏輯無關的額外考量因素和邏輯,會在一定程度上增加服務設計和實現的復雜程度。
為了解決以上問題,Orleans框架提出了虛擬Actor模型,將Actor實例的資源、異常及生命周期管理統一交由Orleans運行時進行處理(即將Actor實例托管于Orleans框架運行時),應用程序無須增加煩瑣的資源管理及異常監控邏輯,并可以直接通過Orleans運行時API訪問Actor服務,從而簡化了應用服務的搭建過程。
虛擬Actor模型具有以下特點。
? 在虛擬Actor應用程序中任意Actor對象都邏輯(虛擬)存在于程序內部,但Actor實例對象僅在需要對外提供服務時,由框架運行時負責創建并實例化運行于應用程序內。
? Actor實例對象在完成外部服務請求后,由框架運行時負責資源回收。
? 應用程序在訪問Actor實例時無須關心其實際所處位置(如具體存在于服務集群中的某一節點中)。
? Actor實例的運行時異常處理由框架運行時保證,若某Actor實例在運行時發生異常(如服務器崩潰或通信中斷),框架運行時將自動重新創建該Actor實例而無須應用程序介入。
可以看出,Orleans框架的虛擬Actor模型極大地簡化了應用程序的實現邏輯,開發人員在使用Orleans框架進行應用服務設計和實現時,只需關心和處理業務場景中不同實體間的數據劃分方式及操作行為邏輯,即可使用Actor模型快速構建適用于高并發場景的分布式應用程序。
- Unity 2020 By Example
- R語言經典實例(原書第2版)
- Python量化投資指南:基礎、數據與實戰
- JavaScript:Functional Programming for JavaScript Developers
- NLTK基礎教程:用NLTK和Python庫構建機器學習應用
- Python Deep Learning
- 新編Premiere Pro CC從入門到精通
- Learning ELK Stack
- Java 9模塊化開發:核心原則與實踐
- Learn React with TypeScript 3
- SQL Server實用教程(SQL Server 2008版)
- 響應式架構:消息模式Actor實現與Scala、Akka應用集成
- Java語言程序設計教程
- 代替VBA!用Python輕松實現Excel編程
- 數字媒體技術概論