《回響式架構:訊息模式Actor實現與Scala,Akka套用集成》是2016年7月電子工業出版社出版的圖書,作者是【美】Vaughn Vernon(沃恩 弗農)。
基本介紹
- 書名:回響式架構:訊息模式Actor實現與Scala,Akka套用集成
- 作者:【美】Vaughn Vernon(沃恩 弗農)
- 譯者:蘇寶龍
- ISBN:978-7-121-29113-5
- 頁數:440頁
- 定價:99.00元
- 出版社:電子工業出版社
- 出版時間:2016年7月
內容簡介,編輯推薦,內容提要,目錄,前言,
內容簡介
通過Actor模型使用回響式訊息傳輸模式,可編寫出具有高性能、高回響性、高可伸縮性和高韌性的並發應用程式。《回響式架構:訊息模式Actor實現與Scala、Akka套用集成》由10章構成,詳細介紹了使用Actor模型中的回響式訊息傳輸模式的理論和實用技巧。其中包括:Actor模型和回響式軟體的主要概念、Scala語言的基礎知識、Akka框架與Akka集群功能、Actor模型中的通道機制和技術、降低訊息源與訊息目的地之間耦合性的方式、持久化Actor對象和冪等接收者。附錄A中還介紹了通過.NET平台和C#語言使用Actor模型的方式。
編輯推薦
√ AKKA項目創始人為原書作序,國內Scala倡導者和踐行者鄧草原為譯著作序。
√ 用先進的ACTOR模型,能創建更簡單、性能及可伸縮性更高的系統。
√ 函式回響式編程(Functional Reactive Programming)具前景,本書首度剖析其架構理念與實踐思路。
√ 本書作者前作《實現領域驅動設計》暢銷至今,對DDD理解深刻。
使用回響式結構通過全方位簡化編程工作的各個層面,消除編程複雜性的方式
Actor系統和Actor對象的特點,以及通過Akka框架使它們擁有更強大功能的方式
怎樣創建可以在一個或多個計算節點中自由伸縮的系統
創建通道機制的方式,以及怎樣選擇適當的通道解決應用程式的開發和整合難題
應使訊息擁有怎樣的結構,才能將訊息傳送者的意圖清晰地告知訊息接收者
由領域驅動的應用程式實現處理過程管理器的方式。
降低訊息源和訊息目的地之間的耦合性,和將適當的業務邏輯整合到訊息路由器中的方式
在應用程式開發和整合環境中會用到的各種訊息轉換方式
使用事件溯源模式和符合CQRS原則的回響式視圖,實現持久化Actor對象的方式
內容提要
通過Actor模型使用回響式訊息傳輸模式,可編寫出具有高性能、高回響性、高可伸縮性和高韌性的並發應用程式。《回響式架構:訊息模式Actor實現與Scala、Akka套用集成》由10章構成,詳細介紹了使用Actor模型中的回響式訊息傳輸模式的理論和實用技巧。其中包括:Actor模型和回響式軟體的主要概念、Scala語言的基礎知識、Akka框架與Akka集群功能、Actor模型中的通道機制和技術、降低訊息源與訊息目的地之間耦合性的方式、持久化Actor對象和冪等接收者。附錄A中還介紹了通過.NET平台和C#語言使用Actor模型的方式。
在企業中任職的軟體架構師和開發者,以及任何對Actor模型感興趣並渴望提高自身技術和價值的軟體開發者,均適合閱讀《回響式架構:訊息模式Actor實現與Scala、Akka套用集成》。
目錄
第1章 Actor模型和企業級軟體概述........................................................................ 1
為什麼企業級軟體難以開發 ..................................................................................1
回響式應用程式簡介 ..............................................................................................4
回響性 ..............................................................................................................5
韌性 ..................................................................................................................6
靈活性 ..............................................................................................................6
訊息驅動 ..........................................................................................................7
企業級應用程式 ......................................................................................................8
Actor模型 .................................................................................................................9
Actor 模型的起源 ..........................................................................................10
了解Actor 模型 ............................................................................................. 11
Actor模型的明晰性 ...............................................................................................20
下章提要 ................................................................................................................21
第2章 使用Scala語言和Akka框架實現Actor模型.................................................. 22
怎樣獲取Scala語言和Akka框架 ..........................................................................23
使用Typesafe Activator 編輯器 ...................................................................23
使用sbt ..........................................................................................................23
使用Maven ....................................................................................................24
使用Gradle ....................................................................................................25
使用Scala語言編寫程式 .......................................................................................26
Scala 概要教程 ..............................................................................................27
使用Akka框架編寫程式 .......................................................................................39
Actor 系統 ......................................................................................................40
實現Actor 對象 .............................................................................................46
監督 ................................................................................................................52
遠程處理 ........................................................................................................55
集群功能 ........................................................................................................68
測試Actor 對象 .............................................................................................94
CompletableApp 類 .......................................................................................98
小結 ......................................................................................................................100
第3章 性能情結.................................................................................................. 101
電晶體 ..................................................................................................................101
時鐘頻率 ..............................................................................................................103
核心和高速快取 ..................................................................................................104
可伸縮性 ..............................................................................................................106
多執行緒技術的難點 ..............................................................................................109
Actor模型的作用 ................................................................................................. 114
處理偽共享 .................................................................................................. 116
設計模式 .............................................................................................................. 117
第4章 通過Actor對象傳遞訊息............................................................................ 119
訊息通道 ..............................................................................................................120
訊息 ......................................................................................................................121
管道和過濾器 ......................................................................................................126
訊息路由器 ..........................................................................................................131
訊息解碼器 ..........................................................................................................134
訊息端點 ..............................................................................................................135
小結 ......................................................................................................................137
第5章 訊息通道.................................................................................................. 138
點對點通道 ..........................................................................................................140
發布—訂閱通道 ..................................................................................................143
本地事件流 ..................................................................................................143
分散式發布—訂閱通道 ..............................................................................149
數據類型通道 ......................................................................................................157
非法訊息通道 ......................................................................................................159
死信通道 ..............................................................................................................161
確保送達機制 ......................................................................................................164
通道適配器 ..........................................................................................................172
訊息橋 ..................................................................................................................174
訊息匯流排 ..............................................................................................................180
小結 ......................................................................................................................189
第6章 訊息結構.................................................................................................. 190
命令訊息 ..............................................................................................................191
文檔訊息 ..............................................................................................................192
管理處理流程和處理過程 ..........................................................................194
事件訊息 ..............................................................................................................195
請求—回復模式 ..................................................................................................197
返回地址 ..............................................................................................................199
相關標識符 ..........................................................................................................203
訊息序列 ..............................................................................................................204
訊息有效期 ..........................................................................................................206
格式標識符 ..........................................................................................................209
小結 ......................................................................................................................213
第7章 訊息路由.................................................................................................. 214
基於內容的路由器 ..............................................................................................215
訊息過濾器 ..........................................................................................................219
動態路由器 ..........................................................................................................223
接收者列表 ..........................................................................................................232
分離器 ..................................................................................................................241
聚合器 ..................................................................................................................245
重新定序器 ..........................................................................................................252
組合訊息處理器 ..................................................................................................259
分散—聚集路由器 ..............................................................................................260
傳送名單 ..............................................................................................................274
處理過程管理器 ..................................................................................................282
訊息經紀人路由器 ..............................................................................................298
小結 ......................................................................................................................301
第8章 訊息轉換.................................................................................................. 302
封裝器 ..................................................................................................................303
內容豐富器 ..........................................................................................................305
不可變的DoctorVisitCompleted 訊息........................................................309
是否應在本地系統中創建AccountingEnricherDispatcher 對象 ..............309
內容過濾器 ..........................................................................................................310
存放證 ..................................................................................................................313
標準化器 ..............................................................................................................321
規範化訊息模型 ..................................................................................................322
Actor 系統需要標準 ....................................................................................323
小結 ......................................................................................................................324
第9章 訊息端點.................................................................................................. 325
訊息傳輸網關 ......................................................................................................326
訊息傳輸映射 ......................................................................................................332
事務型客戶端/ Actor對象 ...................................................................................339
事務型客戶端 ..............................................................................................341
事務型Actor 對象 .......................................................................................342
輪詢消費者 ..........................................................................................................350
資源輪詢 ......................................................................................................354
由事件驅動的消費者 ..........................................................................................358
具有競爭性的消費者 ..........................................................................................359
訊息調度器 ..........................................................................................................361
選擇性消費者 ......................................................................................................364
持久訂閱者 ..........................................................................................................367
冪等接收者 ..........................................................................................................370
避免處理訊息副本 ......................................................................................370
使訊息具有相同的效果 ..............................................................................371
使狀態切換操作不受收到訊息副本的影響 ..............................................372
服務激活劑 ..........................................................................................................378
小結 ......................................................................................................................379
第10章 系統管理和基礎結構................................................................................ 380
控制匯流排 ..............................................................................................................380
改道器 ..................................................................................................................382
竊聽器 ..................................................................................................................384
訊息元數據/歷史記錄 .........................................................................................385
訊息日誌/存儲器 .................................................................................................389
智慧型代理 ..............................................................................................................392
測試訊息 ..............................................................................................................397
通道淨化器 ..........................................................................................................399
小結 ......................................................................................................................401
附錄A .NET平台上的Akka工具集:Dotsero......................................................... 402
Dotsero的Actor系統 ............................................................................................402
通過C#和.NET使用Actor對象 ...........................................................................405
Dotsero實現 .........................................................................................................410
小結 ......................................................................................................................413
參考資料................................................................................................................. 414
前言
譯者序
1965 年Intel 的創始人戈登· 摩爾發現了摩爾定律,50 多年來,計算機的性能一直遵循摩爾定律迅猛發展:CPU 可容納的電晶體數目,每隔約18 個月便會增加一倍,性能也將提升一倍。如今CPU 中電晶體的數量以指數形式增長的迅猛勢頭似乎要走到盡頭了。而計算機性能的另一要素—CPU 主頻速度的提高,早在2003 年就開始急劇下降。計算機的性能無法迅猛增長的同時,人們的需求卻仍舊以指數形式增長,供求矛盾日益尖銳。
傳統提高CPU 性能的技術已經被多核和超執行緒技術取代。事實證明,硬體工程師再也不能獨自承擔提高計算機性能的重任了。當前硬體工程師確實能夠設計出含有288 個核心的CPU,但如果該CPU 沒有被用於運行相應的並發程式,這個含有288 個核心的CPU 只能被當作單核CPU 使用。
該是軟體工程師挺身而出勇挑重擔的時候了。但是,使用傳統的並發技術(如執行緒、鎖和監控器等)開發軟體會遇到許多難以克服的難題。例如,到軟體開發過程的末尾階段,客戶提出增加功能的要求,或者需要對某個(些)功能進行改進,就不得不重新調整執行緒的分配和幾乎所有並發分支。這些工作量可能不比重新開發一個新的軟體少多少,甚至可能會比開發新的軟體更加困難。因此,傳統並發技術注定不能擔任當前軟體開發工作的主角。開發者們迫切需要的是高級並發編程技術。
Carl Hewitt 博士早在20 世紀70 年代初就發明了Actor 模型,這種優秀的高級並發編程思想超越了Carl Hewitt 博士所處的時代。但當時功能最強大的處理器也無法將該理論付諸實踐。直到多核處理器、雲計算、移動設備和網際網路無處不在的今天,Actor 模型才重新煥發了青春。
Actor 模型擁有下列優點:
1. 大幅度降低應用程式內部的耦合性。
2. Actor 模型的訊息傳遞形式簡化了並行程式的開發工作,使開發人員無須與並發編程基礎元素打交道。
3. 在高動態環境中,Actor 模型既可以利用順序編程技巧,也可以利用函式編程技巧。
4. Actor 模型可以解決許多並發編程難題,如死鎖、活鎖、互斥體等。
5. Actor 模型能夠大幅度提高調用方法的安全性和速度。
憑藉Actor 模型的這些優勢,通過回響式訊息傳輸模式,開發者能夠開發出具有高性能、高回響性、高可伸縮性和高韌性的並發應用程式。
本書的作者Vaughn Vernon 是一位資深的軟體開發者,並且是一位簡化軟體設計和實現思想的領袖人物。他在本書中使用了大量的實踐案例,這些範例程式既有實用性也有啟迪性,深入淺出地講解了使用Actor 模型通過Scala 語言和Akka 框架,編寫回響式應用程式的理論和實用技巧。
翻譯前沿計算機科學書籍的工作並不輕鬆,也不是單獨一個人能夠完成的。在此我要感謝電子工業出版社計算機出版分社的張春雨等編輯對本書提供的幫助。此外,石浩、孫顧、徐穎、朱晶晶、沈駿傑、何志穎、許詩怡、馬佳妮、尹曉婷、徐雯、郭昕、陸迎明和孫艷婷等也參與了本書的翻譯工作。
因時間倉促,譯者水平有限,本書的錯漏之處歡迎廣大讀者朋友們批評指正。
序
20 世紀70 年代初,Carl Hewitt 發明了Actor 模型,他超越了自己所處的時代。他通過Actor 概念,定義了一個含有不確定性的計算模型(假設所有計算操作都是通過異步方式執行的)。該模型使用並發處理模式和有穩定的狀態獨立處理過程的概念,全方位地降低了Actor 對象的耦合性,並使之支持分散式和移動架構。
當前,軟體行業已經跟上了Carl Hewitt 的創新思路;多核處理器、雲計算、移動設備和網際網路都成為常見的事物。這從根本上改變了軟體行業,而且使創建並發模型和分散式處理基礎理論的需求變得更為迫切。我相信Actor 模型能夠成為我們迫切需要的堅實理論基礎,使我們能夠通過具有回響性、韌性和彈性的回響式編程原則,創建複雜的分散式系統以應對當前的挑戰。這就是我編寫Akka框架的原因:將Actor 模型的強大功能交到普通開發者手中。
看到Vaughn Vernon 撰寫的這本書我感到非常興奮。這本書介紹了大家都很需要了解的知識——將Actor 對象與傳統的企業級訊息傳輸系統連線起來,以及使用Actor 對象創建回響式應用程式的方式。我喜歡這本書僅依賴Akka 框架基礎功能(是Actor 模型而不是Akka 框架中的高級庫)來介紹高級訊息傳輸和通信模式的方式。即使Actor 模型僅是一種低等級的計算模型,但看到使用它可以通過簡單直觀的方式實現功能強大且多樣的訊息傳輸模式,確實是一件令人賞心悅目的事情。一旦你了解了基礎的編程思路,就能夠向其中添加高級工具和技巧。
這本書還介紹了許多形式化和命名模式,這是Akka 社區成員通過數年的研究探索和反覆改進獲得的成果。這使我回憶起幾年前,讀到Gregor Hohpe 和Bobby Woolf 撰寫的經典著作Enterprise Integration Patterns[EIP] 時的驚喜之情。我對Vaughn Vernon 能夠繼承這本經典著作的精髓,並對其做了全新的詮釋感到很高興。但我認為這本書最重大的貢獻在於,它並沒有止步於前人探索過的區域,而是為Actor 對象的訊息傳輸操作定義了一種獨特的模式化語言。這使我們能夠使用專業術語來思考、討論和交流Actor 對象傳輸訊息的模式和編程思路。
不論你是初學者還是資深的編程高手,這本書都能夠為你提供重要幫助。我希望你能夠和我一樣與它成為好朋友。
Jonas Bonér
Akka 項目的創始人