編輯推薦
Akka是一個分布式計算工具集,支持開發者使用Java以及Scala便捷地構建正確的並發分布式應用程序。用戶使用Akka構建的應用程序能夠擴展至多颱服務器,並能通過自恢復對失效情況做齣響應。
《Akka入門與實踐》旨在對Akka進行係統的介紹。對剛開始使用Akka構建並發分布式應用程序的讀者來說,本書將帶領大傢學習所需的所有概念。本書首先從Actor的概念開始,然後逐步介紹Akka中的並發實現以及網絡應用程序的構建。在教授如何使用Akka來解決疑難問題的同時,本書將介紹如何規避其中常見的陷阱。
從本書中學到的知識
·使用Akka來解決並發編程中遇到的挑戰
·使用Akka來構建集群,並在多颱機器上分配工作
·擴展應用程序,使之支持大量並發用戶
·利用自恢復的應用程序為係統提供容錯性
·使用事件驅動的方法構建低延遲應用程序
·通過高效利用係統資源來減少硬件開銷
·通過擴展來有效提高網絡效率
內容簡介
《Akka入門與實踐》主要麵嚮使用Akka工具集來構建大規模分布式應用程序的Java和Scala開發者。Akka入門與實踐 介紹瞭分布式係統的基本概念以及如何使用Akka來構建容錯性高、可橫嚮擴展的分布式應用程序。
《Akka入門與實踐》的主要內容包括:Akka工具集、Actor模型、響應式編程、Actor及Future的使用、Akka消息傳遞模式、Actor生命周期、監督機製、狀態與錯誤處理、Akka並發編程、路由、阻塞IO的處理、Akka Cluster、CAP理論、Akka郵箱問題的處理、Akka Testkit、領域驅動設計等。
《Akka入門與實踐》貫穿使用瞭分布式鍵值存儲以及文章解析服務兩個實例,將原理與實踐結閤,介紹瞭使用Akka設計並實現分布式應用程序的方法。
作者簡介
Jason Goodwin,自學成纔的開發者,從15歲起就開始學習編程,並且一直對技術保持著濃厚的興趣。他在mDialog公司初次接觸到Akka項目,這傢公司zui終被Google收購。他同時還是一名很有影響力的“技術控”,將Akka引入加拿大一傢主要的電信公司,幫助該公司為客戶提供容錯性更高、響應更及時的軟件。現在他主要從事大規模分布式係統的開發。在業餘時間,他喜歡自己原創電子音樂。
譯者簡介
諸豪文,網名clasnake,畢業於清華大學,現為全職軟件開發工程師,常用的開發語言有Java、Scala、JavaScript和Python。其個人博客地址為http://clasnake.net。他也是開源項目Swagger的貢獻者,並譯有《Python網絡編程》(第3版)一書。
目錄
第1章 初識Actor 1
1.1 本章概述 1
1.2 什麼是Akka 1
1.2.1 Actor模型的起源 1
1.2.2 什麼是Actor 2
1.2.3 Actor和消息傳遞 2
1.3 本書示例係統 7
1.3.1 示例1:處理分布式狀態 7
1.3.2 示例2:完成更多工作 8
1.4 配置環境 8
1.4.1 選擇一門語言 9
1.4.2 安裝Java——Oracle JDK8 9
1.4.3 確認Java環境配置 10
1.4.4 安裝Scala 10
1.4.5 安裝Typesafe Activator 10
1.4.6 新建項目 11
1.4.7 安裝IDE 12
1.5 創建第一個Akka應用程序——設置SBT項目 15
1.5.1 將Akka添加至build.sbt 16
1.5.2 創建第一個Actor 17
1.5.3 使用單元測試驗證代碼 21
1.5.4 運行測試用例 24
1.6 課後作業 25
1.7 小結 26
第2章 Actor與並發 27
2.1 響應式係統設計 27
2.2 響應式四準則 28
2.2.1 靈敏性 28
2.2.2 伸縮性 28
2.2.3 容錯性 28
2.2.4 事件驅動/消息驅動 28
2.2.5 響應式準則的相關性 29
2.3 剖析Actor 29
2.3.1 Java Actor API 29
2.3.2 Scala Actor API 32
2.4 Actor的創建 33
2.5 Promise、Future和事件驅動的編程模型 36
2.5.1 阻塞與事件驅動API 36
2.5.2 使用Future進行響應的Actor 40
2.5.3 理解Future和Promise 45
2.5.4 在失敗情況下執行代碼 49
2.5.5 從失敗中恢復 49
2.5.6 異步地從失敗中恢復 50
2.5.7 鏈式操作 51
2.5.8 組閤Future 51
2.5.9 處理Future列錶 52
2.5.10 Future速查錶 53
2.5.11 準備數據庫與消息 54
2.5.12 編寫客戶端 59
2.6 課後作業 62
2.6.1 基本知識 62
2.6.2 項目作業 62
2.7 小結 63
第3章 傳遞消息 64
3.1 示例問題 64
3.2 消息傳遞 65
3.2.1 消息是不可變的 66
3.2.2 Ask消息模式 69
3.2.3 Tell 78
3.3 課後作業 88
3.4 小結 88
第4章 Actor的生命周期——處理狀態與錯誤 90
4.1 分布式計算的8個誤區 90
4.1.1 網絡是可靠的 90
4.1.2 沒有延遲 91
4.1.3 帶寬是無限的 91
4.1.4 網絡是安全的 92
4.1.5 網絡拓撲不會改變 92
4.1.6 隻有一個管理員 92
4.1.7 網絡傳輸沒有開銷 93
4.1.8 網絡是同構的 93
4.2 錯誤 93
4.2.1 隔離錯誤 94
4.2.2 監督 95
4.3 狀態 102
4.3.1 在綫/離綫狀態 103
4.3.2 條件語句 104
4.3.3 熱交換(Hotswap):Become/Unbecome 105
4.3.4 通過重啓轉移狀態 113
4.4 課後作業 113
4.5 小結 114
第5章 縱嚮擴展 115
5.1 摩爾定律 115
5.2 多核架構的分布式問題 116
5.3 選擇Future或Actor進行並發編程 117
5.4 並行編程 117
5.4.1 使用Future進行並行編程 118
5.4.2 使用Actor進行並行編程 119
5.5 使用Dispatcher 123
5.5.1 Dispatcher解析 123
5.5.2 Executor 124
5.5.3 創建Dispatcher 124
5.5.4 決定何時使用哪種Dispatcher 126
5.5.5 默認Dispatcher 128
5.5.6 使用Future的阻塞IO Dispatcher 130
5.5.7 用於解析文章的Dispatcher 132
5.5.8 並行最優化 135
5.6 課後作業 135
5.7 小結 136
第6章 橫嚮擴展——集群化 137
6.1 Akka Cluster介紹 137
6.2 巨型單體應用vs微服務 137
6.3 集群的定義 138
6.3.1 失敗檢測 139
6.3.2 通過gossip協議達到最終一緻性 139
6.4 CAP理論 140
6.4.1 C –一緻性(Consistency) 140
6.4.2 A –可用性(Availability) 140
6.4.3 P –分區容錯性(Partition Tolerance) 140
6.4.4 CAP理論中的妥協 141
6.5 使用Akka Cluster構建係統 143
6.5.1 創建集群 143
6.5.2 集群成員的狀態 150
6.5.3 通過路由嚮集群發送消息 151
6.5.4 編寫分布式文章解析服務 151
6.5.5 用於集群服務的集群客戶端 153
6.5.6 集群設計 159
6.6 結閤分區與冗餘 164
6.7 遠程Actor尋址 166
6.8 課後作業 167
6.9 小結 167
第7章 處理郵箱問題 169
7.1 搞垮最可能齣問題的服務 169
7.1.1 響應時間變長 170
7.1.2 崩潰 171
7.2 恢復能力 171
7.3 在高負載情況下保持響應速度 175
7.4 課後作業 181
7.5 小結 182
第8章 測試與設計 183
8.1 示例問題 183
8.2 應用程序設計 184
8.3 設計、構建並測試領域模型 186
8.3.1 行為說明 186
8.3.2 設計領域模型 187
8.3.3 構建並測試領域模型 188
8.3.4 基於行為說明編寫代碼 190
8.4 測試Actor 192
8.4.1 測試Actor行為及狀態 192
8.4.2 測試消息流 195
8.5 測試建議 198
8.6 課後作業 199
8.7 小結 200
第9章 尾聲 201
9.1 其他Akka功能及模塊 201
9.1.1 Akka中的日誌 202
9.1.2 消息信道與EventBus 204
9.1.3 Agent 206
9.1.4 Akka Persistence 209
9.1.5 Akka I/O 210
9.1.6 Akka Streams與HTTP 210
9.2 部署工具 210
9.3 監控日誌與事件 212
9.4 下一步 212
9.4.1 編寫一些Actor代碼 213
9.4.2 Coursera課程 213
9.5 小結 214
Akka入門與實踐 下載 mobi epub pdf txt 電子書