Akka 入門與實踐 (Learning Akka)

賈森·古德溫 (Jason Goodwin)

買這商品的人也買了...

商品描述

《Akka入門與實踐》主要面向使用Akka工具集來構建大規模分佈式應用程序的Java和Scala開發者。Akka入門與實踐 介紹了分佈式系統的基本概念以及如何使用Akka來構建容錯性高、可橫向擴展的分佈式應用程序。
《Akka入門與實踐》的主要內容包括:Akka工具集、Actor模型、響應式編程、Actor及Future的使用、Akka消息傳遞模式、Actor生命周期、監督機制、狀態與錯誤處理、Akka並發編程、路由、阻塞IO的處理、Akka Cluster、CAP理論、Akka郵箱問題的處理、Akka Testkit、領域驅動設計等。
《Akka入門與實踐》貫穿使用了分佈式鍵值存儲以及文章解析服務兩個實例,將原理與實踐結合,介紹了使用Akka設計並實現分佈式應用程序的方法。

目錄大綱

第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