Orleans是由微軟公司基于.NET平臺構(gòu)建的跨平臺、分布式開源應(yīng)用框架,可用于快速搭建面向大數(shù)據(jù)吞吐量和高并發(fā)場景的互聯(lián)網(wǎng)應(yīng)用服務(wù)。
《Orleans構(gòu)建高性能分布式Actor服務(wù)》主要介紹了虛擬Actor模型和Orleans運行時、資源管理、消息傳遞、集群構(gòu)建、數(shù)據(jù)持久化及可靠性管理等組件,還對Orleans的流式處理、分布式事務(wù)、多集群配置與部署等功能進行了介紹。全面介紹了Orleans 的主要功能與特點,并結(jié)合實際互聯(lián)網(wǎng)應(yīng)用場景給出了多個應(yīng)用實例。
《Orleans構(gòu)建高性能分布式Actor服務(wù)》可作為軟件開發(fā)及測試工程師、架構(gòu)師在設(shè)計構(gòu)建分布式應(yīng)用服務(wù)時的參考用書,適合對大型互聯(lián)網(wǎng)應(yīng)用服務(wù)開發(fā)感興趣的讀者閱讀學習,還可以作為大中專院校分布式軟件開發(fā)相關(guān)課程的教學用書。
隨著移動通信技術(shù)的發(fā)展與普及,全球互聯(lián)網(wǎng)產(chǎn)業(yè)蓬勃發(fā)展,移動互聯(lián)網(wǎng)場景下的實時在線服務(wù)已經(jīng)在社交、購物、支付、娛樂、出行、醫(yī)療、政務(wù)等各個方面深刻改變了人們的日常生活。但與此同時,移動應(yīng)用服務(wù)用戶的爆炸式增長也給應(yīng)用服務(wù)的開發(fā)與構(gòu)建帶來了新的挑戰(zhàn):開發(fā)人員一方面需要保證應(yīng)用服務(wù)在高并發(fā)場景下具有良好的伸縮性及可靠性,另一方面還需要根據(jù)實際業(yè)務(wù)場景及功能設(shè)計變更,對應(yīng)用服務(wù)進行快速迭代和更新。為了滿足上述需求,應(yīng)用服務(wù)的軟件架構(gòu)及業(yè)務(wù)模型都需要具備良好的擴展性與通用性。
Actor模型作為針對高并發(fā)服務(wù)設(shè)計的編程模型,可以將復(fù)雜業(yè)務(wù)場景抽象并簡化為多個簡單獨立實體對象間的相互作用,它提供了對高吞吐量實時服務(wù)場景下的系統(tǒng)性能優(yōu)化策略,開發(fā)人員可以直接根據(jù)業(yè)務(wù)邏輯的聚合、從屬等關(guān)系快速搭建應(yīng)用服務(wù)。Orleans應(yīng)用服務(wù)框架于2015年1月開源,并于2021年4月發(fā)布了3.4.2版本,Orleans開發(fā)者社區(qū)已經(jīng)吸引了眾多軟件開發(fā)人員的關(guān)注,其所提出的虛擬Actor模型使開發(fā)人員能夠更加專注于應(yīng)用服務(wù)邏輯的設(shè)計而無須過多關(guān)注分布式系統(tǒng)內(nèi)諸如數(shù)據(jù)一致性、系統(tǒng)可靠性、業(yè)務(wù)吞吐量等通用組件的性能優(yōu)化問題,非常適用于快速搭建高性能應(yīng)用服務(wù),已成功應(yīng)用于多個大型互聯(lián)網(wǎng)服務(wù)系統(tǒng)中。
Orleans基于.NET Core運行時開發(fā),具備原生的跨平臺部署能力,開發(fā)人員僅需完成簡單的.NET Core運行時配置即可開發(fā)并運行Orleans分布式應(yīng)用服務(wù)。Orleans開發(fā)者社區(qū)還為開發(fā)人員提供了豐富多樣的擴展程序組件,使Orleans應(yīng)用服務(wù)能夠與AWS、Azure、Google Cloud等公用云服務(wù)無縫集成,從而構(gòu)建適用于任意規(guī)模的面向各類互聯(lián)網(wǎng)場景的云服務(wù)應(yīng)用。
基于Orleans靈活便捷的開發(fā)能力,本書通過對Orleans運行時的內(nèi)部組件原理及實際應(yīng)用服務(wù)搭建過程的介紹,幫助讀者迅速熟悉高并發(fā)場景下互聯(lián)網(wǎng)應(yīng)用服務(wù)的設(shè)計與開發(fā)過程。
本書特色
1.基于實際互聯(lián)網(wǎng)場景的應(yīng)用構(gòu)建實例
《Orleans構(gòu)建高性能分布式Actor服務(wù)》提供了多個以實際互聯(lián)網(wǎng)應(yīng)用場景為背景的實例,帶領(lǐng)讀者完成需求分析、模型設(shè)計、架構(gòu)優(yōu)化、代碼編寫和系統(tǒng)部署等完整的應(yīng)用服務(wù)搭建流程,從而讓讀者熟悉并領(lǐng)略O(shè)rleans應(yīng)用服務(wù)框架的便捷性。這些應(yīng)用構(gòu)建實例也可成為讀者在實際構(gòu)建與設(shè)計應(yīng)用系統(tǒng)時的參考。
2.深入淺出的技術(shù)體系介紹
《Orleans構(gòu)建高性能分布式Actor服務(wù)》的章節(jié)安排盡量做到了由淺至深。在對Actor模型與及Grain對象進行講解時,使用實際應(yīng)用場景作為類比,讓讀者能夠迅速理解其設(shè)計思路與特性;在對Orleans運行時組件進行介紹時,詳細剖析了各類組件對象的作用與設(shè)計思路,使讀者能夠迅速了解Orleans運行時各類功能的實現(xiàn)原理,并結(jié)合實際場景更好地利用Orleans的各項功能。
3.結(jié)合前沿技術(shù),貼近實戰(zhàn)
《Orleans構(gòu)建高性能分布式Actor服務(wù)》通過多個實例對Orleans應(yīng)用服務(wù)的搭建過程做了詳盡的介紹,并結(jié)合Azure云服務(wù)組件構(gòu)建了可直接應(yīng)用實際場景的互聯(lián)網(wǎng)服務(wù)。讀者既可以了解Azure公用云服務(wù)內(nèi)各類常用組件的特性,也可以在實際開發(fā)過程中利用Orleans框架優(yōu)秀的擴展性快速與各類系統(tǒng)組件進行集成開發(fā),按需搭建并優(yōu)化應(yīng)用服務(wù)。
本書內(nèi)容
《Orleans構(gòu)建高性能分布式Actor服務(wù)》共9章,主要內(nèi)容如下。
第1章主要介紹了Actor編程模型的特點與設(shè)計思路、.NET平臺與Orleans應(yīng)用框架的開發(fā)及應(yīng)用背景、虛擬Actor模型的概念及行業(yè)內(nèi)相關(guān)技術(shù)發(fā)展的趨勢;第2章主要介紹了Orleans框架內(nèi)部的小處理單元Grain,包括Grain的服務(wù)模型、尋址方式、生命周期和內(nèi)部狀態(tài)存儲等概念,并介紹了Orleans框架對Grain對象的管理策略及狀態(tài)存儲API,同時結(jié)合自動售貨機庫存管理示例,展示了如何利用Grain狀態(tài)按需維護并存儲業(yè)務(wù)數(shù)據(jù);第3章主要介紹了Orleans運行時組件的基本架構(gòu)模型、任務(wù)調(diào)度模型及單線程執(zhí)行語義的實現(xiàn)方式,以及Orleans運行時內(nèi)部組件(Grain對象及Silo服務(wù)節(jié)點)的生命周期管理的實現(xiàn)方式;第4章主要介紹了Orleans運行時內(nèi)數(shù)據(jù)傳輸過程,包括消息對象格式、運行時序列化管理器、連接對象與網(wǎng)關(guān)服務(wù)和消息中心與調(diào)度策略,以及Orleans運行時內(nèi)部的遠程過程調(diào)用流程;第5章主要介紹了Orleans的流式處理功能的相關(guān)內(nèi)容,包括虛擬數(shù)據(jù)流的實現(xiàn)、數(shù)據(jù)的訂閱與發(fā)布及相關(guān)流式處理API的特性及應(yīng)用場景,并通過系統(tǒng)狀態(tài)的遙測與監(jiān)控示例展示了Orleans流式處理的特點;第6章主要介紹了Orleans框架的多種高級功能,包括異步任務(wù)處理、Grain請求攔截器、多種特殊類型的Grain對象、事件溯源模型、分布式事務(wù)及多集群Orleans應(yīng)用服務(wù)等;第7章主要介紹了Orleans集群的構(gòu)建過程及相關(guān)組件,包括Membership協(xié)議、集群內(nèi)負責均衡和多版本服務(wù)接口管理,并對分布式應(yīng)用服務(wù)升級策略及Orleans性能監(jiān)控方式進行了介紹;第8章通過4個實際案例詳細介紹了基于Orleans框架搭建互聯(lián)網(wǎng)應(yīng)用服務(wù)的實踐和構(gòu)建流程。例如,通過工單處理系統(tǒng)及企業(yè)會議管理系統(tǒng)實例介紹了如何使用聯(lián)合托管(Co-hosting)技術(shù)搭建基于ASP.NET Core Web API的Orleans Web應(yīng)用服務(wù),通過網(wǎng)頁流量計數(shù)及活躍度獎勵系統(tǒng)展示了如何利用Orleans流式處理功能快速構(gòu)建實時數(shù)據(jù)處理應(yīng)用等;第9章主要介紹了通過云平臺構(gòu)建Orleans應(yīng)用服務(wù)的方法,以及構(gòu)建容器化分布式Orleans應(yīng)用服務(wù)的步驟,介紹了與Orleans框架類似的Azure Service Fabric Reliable Actors應(yīng)用程序框架的編程模型,并通過共享單車管理平臺示例展示了利用Orleans框架的擴展能力,以及基于各類Azure云服務(wù)組件快速搭建大型互聯(lián)網(wǎng)應(yīng)用服務(wù)平臺的完整設(shè)計、部署、維護和持續(xù)集成過程。
關(guān)于作者
《Orleans構(gòu)建高性能分布式Actor服務(wù)》由吳哲昊編寫,蘇寶君、顧雨婷、周新宇、彭亦然、李持航和葉心靜等人參與了文稿的審核和校對,在此感謝家人、同學和同事們在本書編寫期間所給予的大力支持。
另外,在本書編寫期間,還得到了張淑謙編輯的悉心指導(dǎo),他對書稿的審核和建議,使得本書能夠以更加清晰易懂的語言及章節(jié)編排出版,在此表示深深的感謝!
雖然我們對書中所述內(nèi)容都盡量核實,并多次進行了文字校對,但因水平所限,本書出現(xiàn)疏漏在所難免,敬請各位同行專家及讀者指正批評,作者的郵箱:zhehao.wu@foxmail.com。
作 者
第1章 Orleans與Actor編程模型/
1.1 什么是Actor編程模型/
1.2 .NET平臺與Orleans服務(wù)框架/
1.3 Orleans的應(yīng)用現(xiàn)狀及相關(guān)資源/
1.4 本章小結(jié)/
第2章 Grain的定義與實現(xiàn)/
2.1 Grain的定義/
2.2 Grain的服務(wù)模型/
2.2.1 服務(wù)接口與實現(xiàn)/
2.2.2 Grain服務(wù)的調(diào)用/
2.3 Grain的標識方法/
2.4 Grain的內(nèi)部狀態(tài)與生命周期管理/
2.4.1 Grain的喚醒與休眠/
2.4.2 顯式控制Grain狀態(tài)/
2.5 Grain的狀態(tài)保存/
2.5.1 Grain內(nèi)部狀態(tài)的持久化/
2.5.2 狀態(tài)同步API/
2.5.3 狀態(tài)持久化服務(wù)的注冊/
2.5.4 自定義狀態(tài)讀寫邏輯的實現(xiàn)/
2.5.5 IGrainState接口中的狀態(tài)版本約束/
2.5.6 定義狀態(tài)的序列化選項/
2.6 案例:自動售貨機的庫存管理/
2.7 本章小結(jié)/
第3章 任務(wù)調(diào)度與組件生命周期管理/
3.1 Orleans運行時/
3.2 任務(wù)模型及調(diào)度管理/
3.2.1 .NET任務(wù)調(diào)度器與內(nèi)置線程池/
3.2.2 Orleans任務(wù)調(diào)度器/
3.3 Orleans對象的生命管理/
3.3.1 Grain的運行時管理/
3.3.2 Silo的生命周期管理/
3.4 本章小結(jié)/
第4章 數(shù)據(jù)傳輸與遠程過程調(diào)用/
4.1 Orleans數(shù)據(jù)傳輸協(xié)議/
4.1.1 Orleans消息對象/
4.1.2 Orleans序列化管理器/
4.2 Orleans消息處理模型/
4.2.1 連接與網(wǎng)關(guān)/
4.2.2 消息中心與調(diào)度器/
4.3 Orleans的遠程過程調(diào)用/
4.3.1 Grain的引用對象/
4.3.2 Grain實例尋址/
4.3.3 Orleans的RPC過程/
4.4 本章小結(jié)/
第5章 Orleans構(gòu)建高性能分布式Actor服務(wù)流式處理/
5.1 數(shù)據(jù)的流式處理/
5.2 Orleans流式處理系統(tǒng)/
5.2.1 設(shè)計目標/
5.2.2 系統(tǒng)模型/
5.2.3 Orleans數(shù)據(jù)流的實現(xiàn)/
5.2.4 數(shù)據(jù)流的發(fā)布與訂閱/
5.3 Orleans流式處理API/
5.3.1 系統(tǒng)組件初始化/
5.3.2 異步數(shù)據(jù)流及消息接口/
5.3.3 消息的訂閱與發(fā)布/
5.3.4 定序消息與序列Token/
5.3.5 可回溯數(shù)據(jù)流/
5.4 案例:系統(tǒng)狀態(tài)遙測與監(jiān)控/
5.5 本章小結(jié)/
第6章 Orleans高級功能/
6.1 異步任務(wù)/
6.1.1 異步任務(wù)的調(diào)用/
6.1.2 異步任務(wù)的中斷與取消/
6.2 Grain請求攔截器/
6.2.1 入站消息攔截器/
6.2.2 出站消息攔截器/
6.3 Grain的派生類型/
6.3.1 可重入Grain/
6.3.2 Grain服務(wù)/
6.3.3 定時器與通知服務(wù)/
6.3.4 無狀態(tài)工作者Grain/
6.4 事件溯源/
6.4.1 日志一致性協(xié)議/
6.4.2 JournaledGrain類/
6.4.3 事件提交策略及多實例同步/
6.4.4 級聯(lián)事件通知及性能診斷/
6.4.5 服務(wù)配置及使用/
6.5 分布式事務(wù)/
6.5.1 事務(wù)服務(wù)接口的聲明/
6.5.2 支持事務(wù)服務(wù)的Grain實現(xiàn)/
6.6 多集群Orleans應(yīng)用/
6.6.1 多集群應(yīng)用模型/
6.6.2 Gossip傳輸協(xié)議/
6.6.3 集群配置/
6.6.4 多集群Grain單例策略配置/
6.7 本章小結(jié)/
第7章 構(gòu)建Orleans服務(wù)集群/
7.1 Orleans集群搭建/
7.1.1 啟動任務(wù)/
7.1.2 Silo服務(wù)的優(yōu)雅關(guān)閉/
7.2 服務(wù)注冊與協(xié)調(diào)/
7.2.1 Membership協(xié)議/
7.2.2 集群負載均衡/
7.3 服務(wù)接口版本管理/
7.3.1 接口版本與兼容性/
7.3.2 運行時版本選擇/
7.3.3 服務(wù)升級與高可用性保證/
7.4 異構(gòu)Orleans應(yīng)用服務(wù)/
7.5 集群性能監(jiān)控/
7.6 本章小結(jié)/
第8章 構(gòu)建Orleans應(yīng)用服務(wù)/
8.1 搭建Orleans系統(tǒng)的實踐/
8.1.1 Orleans系統(tǒng)的項目結(jié)構(gòu)/
8.1.2 Grain的設(shè)計與實現(xiàn)/
8.1.3 運行時服務(wù)監(jiān)控/
8.1.4 系統(tǒng)故障處理/
8.1.5 功能測試/
8.1.6 應(yīng)用部署與集群管理/
8.2 搭建Web應(yīng)用服務(wù)/
8.2.1 案例:工單處理系統(tǒng)/
8.2.2 案例:企業(yè)會議管理系統(tǒng)/
8.3 搭建流式數(shù)據(jù)處理服務(wù)/
8.3.1 案例:網(wǎng)頁流量計數(shù)/
8.3.2 案例:應(yīng)用內(nèi)活躍度獎勵系統(tǒng)/
8.4 本章小結(jié)/
第9章 Orleans與云服務(wù)/
9.1 使用云平臺構(gòu)建Orleans應(yīng)用/
9.2 搭建容器化Orleans服務(wù)/
9.2.1 構(gòu)建Orleans應(yīng)用服務(wù)鏡像/
9.2.2 搭建容器化Orleans服務(wù)集群/
9.3 Azure Service Fabric Reliable Actors應(yīng)用程序框架/
9.3.1 Service Fabric與Reliable Services框架/
9.3.2 Reliable Actors模型/
9.4 案例:基于Azure公有云服務(wù)構(gòu)建共享單車管理平臺/
9.4.1 系統(tǒng)功能及流程設(shè)計/
9.4.2 相關(guān)Azure服務(wù)介紹/
9.4.3 實現(xiàn)應(yīng)用服務(wù)平臺/
9.4.4 搭建可靠的應(yīng)用服務(wù)集群/
9.5 本章小結(jié)/