商品簡介
本書一共分為10章,全面介紹了Akka的基礎架構、Actor模型、常用組件、分布式&集群、微服務等。下面是各個章節的簡介及閱讀說明。第1章介紹了Akka的技術背景、應用場景及架構體系,為大家日後做技術選型提供參考依據。第2章介紹了Actor的相關概念、常見用法、生命週期、容錯處理等。第3章介紹了Dispatcher的用途和常見配置方法。第4章介紹了郵箱的常見類型及配置,同時也給出了一個自定義郵箱類型的簡單案例。第5章介紹了消息路由器的基本概念和創建方式(Pool和Group),然後分別演示了幾種常見路由策略。第6章介紹了Akka的一些實用工具包,如Future、EventBus等。第7、8章介紹了Akka分布式&集群相關的內容。第9章介紹了如何使用Akka構建HTTP和WebSocket服務,並完整實現了一個圖文聊天系統。第10章介紹了一款“全家桶式”的微服務框架Lagom。
作者簡介
杜雲飛,資深Java技術專家,上海小蟲科技合夥人兼CTO。
目次
Contents 目錄
前言
第1章 認識Akka1
1.1 Akka簡介1
1.1.1 技術背景1
1.1.2 Akka是什麼3
1.2 Akka應用場景4
1.3 Akka架構體系4
1.3.1 Actor模型4
1.3.2 體系結構4
1.4 本章小結7
第2章 走進Actor8
2.1 Actor組件8
2.1.1 Akka中的Actor8
2.1.2 ActorSystem與監管9
2.1.3 生命週期監控9
2.1.4 引用與路徑10
2.2 Akka環境搭建10
2.2.1 環境準備11
2.2.2 使用Lightbend Activator平臺12
2.3 創建一個Actor14
2.3.1 定義Actor14
2.3.2 創建Actor實例14
2.3.3 工廠模式---Props/Creator15
2.4 發送-接收消息16
2.4.1 tell方法16
2.4.2 ask方法17
2.4.3 消息轉發18
2.5 查找一個Actor18
2.6 消息不可變21
2.7 Actor行為切換21
2.8 Actor生命週期25
2.9 停掉一個Actor26
2.10 監督與容錯處理29
2.11 Circuit Breaker(熔斷)33
2.12 配置相關35
2.13 本章小結36
第3章 線程調度38
3.1 什麼是Dispatcher?38
3.2 Executor選擇39
3.3 配置Dispatcher39
3.4 使用Dispatcher41
3.5 PinnedDispatcher41
3.6 本章小結42
第4章 郵箱43
4.1 消息處理順序43
4.2 默認郵箱配置44
4.3 內置郵箱45
4.3.1 內置郵箱說明45
4.3.2 自定義優先級45
4.3.3 控制指令優先48
4.4 Actor使用郵箱的多種方式49
4.4.1 配置Actor郵箱49
4.4.2 配置dispatcher郵箱49
4.4.3 實現RequiresMessageQueue接口50
4.5 自定義郵箱類型50
4.6 本章小結52
第5章 消息路由53
5.1 Router和Routee53
5.2 路由器及路由邏輯53
5.3 路由Actor56
5.3.1 Pool方式56
5.3.2 Group方式58
5.4 常見路由類型59
5.4.1 廣播-Broadcast60
5.4.2 最快響應-ScatterGatherFirstCompleted61
5.4.3 隨機-最快響應-TailChopping62
5.4.4 創建可修改容量的池62
5.5 特殊消息處理63
5.5.1 Broadcast消息64
5.5.2 PoisonPill消息64
5.5.3 其他管理類消息64
5.6 本章小結65
第6章 實用工具67
6.1 定時調度―Scheduler67
6.2 處理併發結果―Future68
6.2.1 Future常規用法68
6.2.2 函數式Future70
6.3 事件總線72
6.3.1 實現事件總線72
6.3.2 事件流處理74
6.4 日誌處理75
6.4.1 基礎配置76
6.4.2 使用slf4j76
6.5 Akka擴展78
6.5.1 TypedActor初探78
6.5.2 自定義擴展81
6.5.3 集成Spring83
6.6 Akka I/O87
6.6.1 TCP服務87
6.6.2 UDP服務90
6.7 Akka Streams91
6.7.1 Streams組件91
6.7.2 組合Source、Sink94
6.7.3 案例:日誌處理95
6.7.4 錯誤處理99
6.7.5 關聯Actor101
6.8 本章小結102
第7章 遠程103
7.1 遠程介紹103
7.1.1 Java RPC103
7.1.2 Akka遠程106
7.2 創建遠程ActorSystem107
7.3 Actor遠程訪問108
7.4 創建遠程Actor109
7.5 遠程路由器110
7.6 遠程事件113
7.7 序列化114
7.7.1 Protobuf框架114
7.7.2 序列化API115
7.8 本章小結116
第8章 集群117
8.1 Akka集群概述117
8.1.1 種子節點118
8.1.2 領導節點118
8.1.3 節點狀態及生命週期118
8.1.4 故障檢測119
8.2 創建Akka集群119
8.2.1 代碼及集群配置119
8.2.2 啟動集群122
8.2.3 加入集群123
8.2.4 akka-cluster集群工具123
8.3 集群示例―實現文章單詞統計125
8.3.1 示例分析125
8.3.2 代碼實現127
8.4 使用路由133
8.4.1 Group路由133
8.4.2 Pool路由133
8.5 集群指標136
8.5.1 指標收集136
8.5.2 基於指標的負載均衡138
8.6 集群單例139
8.7 集群客戶端140
8.7.1 集群客戶端概述140
8.7.2 使用 ClusterClient141
8.7.3 事件監聽142
8.8 集群分片143
8.8.1 分片概念143
8.8.2 持久化Actor144
8.8.3 分片示例148
8.9 本章小結155
第9章 HTTP服務156
9.1 HTTP協議156
9.1.1 header信息157
9.1.2 狀態碼159
9.2 Akka HTTP159
9.2.1 配置依賴159
9.2.2 HTTP服務端160
9.2.3 請求和響應160
9.2.4 HTTP客戶端163
9.2.5 使用Routing DSL163
9.2.6 常用Directive165
9.3 Akka WebSocket166
9.3.1 WebSocket協議167
9.3.2 Akka WebSocket167
9.3.3 WebSocket應用之聊天室169
9.4 本章小結176
第10章 微服務全家桶之Lagom177
10.1 Lagom簡介177
10.2 Lagom初探178
10.3 搭建Lagom服務181
10.3.1 項目結構181
10.3.2 編寫Lagom服務182
10.4 持久化實體186
10.4.1 持久化簡介186
10.4.2 PersistentEntity API187
10.4.3 持久化示例187
10.4.4 MySQL支持191
10.5 Lagom部署(SandBox)192
10.5.1 安裝ConductR SandBox192
10.5.2 部署Maven項目195
10.6 本章小結199