定 價:¥69.80
作 者: | [美] 鄧肯·德沃爾(Duncan DeVore) 著 |
出版社: | 清華大學(xué)出版社 |
叢編項(xiàng): | |
標(biāo) 簽: | 暫缺 |
ISBN: | 9787302563563 | 出版時間: | 2020-10-01 | 包裝: | 平裝 |
開本: | 16開 | 頁數(shù): | 字?jǐn)?shù): |
第Ⅰ部分 基礎(chǔ)知識
第1章 什么是反應(yīng)式應(yīng)用 3
1.1 為何需要反應(yīng)式應(yīng)用 5
1.1.1 分布式計(jì)算 5
1.1.2 云計(jì)算 6
1.2 網(wǎng)上購物車:表象之下的復(fù)雜性 7
1.2.1 單體式架構(gòu):難以分布 7
1.2.2 反應(yīng)式架構(gòu):默認(rèn)就是分布式的 13
1.2.3 理解反應(yīng)式架構(gòu) 15
1.2.4 單體式購物車:創(chuàng)建訂單 17
1.2.5 事件溯源:銀行賬戶登記 19
1.2.6 反應(yīng)式購物車:使用事件溯源創(chuàng)建訂單 20
1.3 反應(yīng)式應(yīng)用能對哪些對象做出反應(yīng) 23
1.4 通過本書能學(xué)到什么 24
1.4.1 使用松耦合設(shè)計(jì)的異步通信 24
1.4.2 伸縮性 24
1.4.3 回彈性 25
1.4.4 響應(yīng)性 25
1.4.5 測試 25
1.5 本章小結(jié) 26
第2章 初識Akka 27
2.1 理解消息和參與者 28
2.1.1 從函數(shù)轉(zhuǎn)向參與者 28
2.1.2 使用參與者和消息進(jìn)行領(lǐng)域建模 30
2.1.3 定義消息 31
2.1.4 定義參與者 32
2.2 安裝示例項(xiàng)目 34
2.3 啟動參與者系統(tǒng) 36
2.3.1 創(chuàng)建驅(qū)動 37
2.3.2 運(yùn)行驅(qū)動程序 37
2.4 跨多個系統(tǒng)分布參與者 38
2.4.1 分布到兩個JVM 38
2.4.2 為遠(yuǎn)程參與者進(jìn)行配置 39
2.4.3 設(shè)置驅(qū)動程序 40
2.4.4 運(yùn)行分布式參與者 42
2.5 使用多個參與者進(jìn)行擴(kuò)展 43
2.5.1 傳統(tǒng)方案 43
2.5.2 像參與者函數(shù)那樣路由 44
2.6 創(chuàng)建參與者池 45
2.6.1 添加池路由器 46
2.6.2 運(yùn)行池化的參與者系統(tǒng) 47
2.7 使用多參與者系統(tǒng)進(jìn)行擴(kuò)展 48
2.7.1 添加分組路由器 49
2.7.2 運(yùn)行多個參與者系統(tǒng) 51
2.8 應(yīng)用反應(yīng)式原則 51
2.9 本章小結(jié) 52
第3章 理解Akka 53
3.1 Akka是什么 54
3.2 Akka現(xiàn)狀 55
3.2.1 變得可響應(yīng) 56
3.2.2 可靠地保留數(shù)據(jù) 56
3.2.3 需求越來越大的回彈性和易伸縮性 57
3.2.4 使用Spark支持大數(shù)據(jù) 58
3.3 Akka專用術(shù)語 58
3.3.1 并發(fā)和并行 58
3.3.2 異步和同步 59
3.3.3 競爭 62
3.3.4 完全無共享 63
3.4 參與者 65
3.4.1 狀態(tài) 66
3.4.2 參與者引用 66
3.4.3 異步消息傳遞 66
3.4.4 郵箱 68
3.4.5 行為和receive循環(huán) 69
3.4.6 監(jiān)管 75
3.5 參與者系統(tǒng) 76
3.5.1 層級結(jié)構(gòu) 76
3.5.2 監(jiān)管 78
3.5.3 參與者路徑 79
3.5.4 參與者生命周期 80
3.5.5 微內(nèi)核容器 81
3.6 本章小結(jié) 82
第Ⅱ部分 構(gòu)建反應(yīng)式應(yīng)用
第4章 從領(lǐng)域映射到工具集 85
4.1 基于領(lǐng)域模型進(jìn)行設(shè)計(jì) 86
4.1.1 一種更好的解決方案 86
4.1.2 從類比轉(zhuǎn)向應(yīng)用 86
4.1.3 創(chuàng)建卡片目錄 88
4.2 轉(zhuǎn)變?yōu)橄Ⅱ?qū)動 89
4.3 使用消息控制參與者狀態(tài) 91
4.3.1 向自己發(fā)送消息 91
4.3.2 使用狀態(tài)改變行為 93
4.3.3 管理更多的復(fù)雜交互 95
4.3.4 保持簡單性 99
4.3.5 運(yùn)行應(yīng)用 102
4.3.6 進(jìn)展回顧 102
4.4 增大伸縮性 103
4.4.1 Akka路由 103
4.4.2 調(diào)度器 106
4.4.3 運(yùn)行具有路由器的應(yīng)用 108
4.5 回彈性 109
4.5.1 故障的Librarian參與者 109
4.5.2 運(yùn)行故障應(yīng)用 111
4.5.3 Librarian監(jiān)管 111
4.5.4 運(yùn)行具有回彈監(jiān)管的應(yīng)用 113
4.6 本章小結(jié) 113
第5章 領(lǐng)域驅(qū)動設(shè)計(jì) 115
5.1 什么是領(lǐng)域驅(qū)動設(shè)計(jì) 116
5.1.1 大泥球 117
5.1.2 限界上下文 121
5.1.3 通用語言 122
5.1.4 實(shí)體、聚合與值對象 123
5.1.5 服務(wù)、倉儲和工廠 126
5.1.6 防腐層 128
5.1.7 分層架構(gòu) 129
5.1.8 Saga 130
5.1.9 共享內(nèi)核 130
5.2 基于參與者的領(lǐng)域 131
5.2.1 簡單的Akka航班領(lǐng)域 131
5.2.2 Aircraft參與者 132
5.2.3 Akka Process Manager 133
5.3 本章小結(jié) 135
第6章 使用遠(yuǎn)程參與者 137
6.1 重構(gòu)為分布式系統(tǒng) 138
6.1.1 劃分成多個參與者系統(tǒng) 138
6.1.2 使用sbt進(jìn)行結(jié)構(gòu)化 139
6.2 配置應(yīng)用 140
6.2.1 創(chuàng)建第一個驅(qū)動程序 141
6.2.2 引入application.conf 142
6.2.3 使用HOCON 143
6.2.4 配置應(yīng)用 144
6.3 使用Akka進(jìn)行遠(yuǎn)程通信 145
6.3.1 構(gòu)造遠(yuǎn)程引用 145
6.3.2 解析引用 146
6.3.3 在客戶端之間進(jìn)行替換 148
6.3.4 創(chuàng)建另一個驅(qū)動程序 151
6.4 運(yùn)行分布式示例 153
6.4.1 啟動Customer驅(qū)動程序 154
6.4.2 啟動RareBooks驅(qū)動程序 155
6.4.3 創(chuàng)建一些顧客 155
6.4.4 檢查結(jié)果 155
6.5 分布式系統(tǒng)中的可靠性 156
6.5.1 將可靠性作為一種設(shè)計(jì)規(guī)范 157
6.5.2 Akka提供的保障方法 159
6.6 本章小結(jié) 163
第7章 反應(yīng)式流 165
7.1 緩存過多的消息 166
7.2 使用背壓進(jìn)行防護(hù) 167
7.2.1 停止和等待 167
7.2.2 表明多條消息的信號 170
7.2.3 流的控制 171
7.3 使用Akka進(jìn)行流處理 172
7.3.1 將流添加到項(xiàng)目 173
7.3.2 從文件創(chuàng)建流的源 174
7.3.3 轉(zhuǎn)換流 175
7.3.4 將流轉(zhuǎn)換成參與者消息 176
7.3.5 小結(jié) 178
7.4 Reactive Streams介紹 179
7.4.1 創(chuàng)建反應(yīng)式流 179
7.4.2 消費(fèi)反應(yīng)式流 180
7.4.3 構(gòu)建使用流處理的應(yīng)用 181
7.5 本章小結(jié) 181
第8章 CQRS與事件溯源 183
8.1 面向CQRS/ES的驅(qū)動因素 184
8.1.1 ACID事務(wù) 184
8.1.2 傳統(tǒng)的RDBMS缺乏分片 185
8.1.3 CRUD 185
8.2 CQRS的起源:命令、查詢以及兩條不同的路徑 186
8.3 CQRS中的C 189
8.3.1 什么是命令 189
8.3.2 拒絕 190
8.3.3 原子性 190
8.3.4 雜而不精 191
8.3.5 行為的欠缺 192
8.3.6 訂單示例:訂單命令 192
8.3.7 不間斷命令驗(yàn)證 193
8.3.8 沖突解決 196
8.4 CQRS中的Q 197
8.4.1 阻抗不匹配 197
8.4.2 什么是查詢 199
8.4.3 不必動態(tài)查詢 201
8.4.4 對比SQL與NoSQL數(shù)據(jù)庫 201
8.5 事件溯源 202
8.5.1 什么是事件 202
8.5.2 所有一切都與行為有關(guān) 204
8.5.3 分布式事務(wù)之外的考慮事項(xiàng) 204
8.5.4 訂單示例 204
8.5.5 再談一致性 208
8.5.6 重試模式 209
8.5.7 對比命令溯源與事件溯源 210
8.6 本章小結(jié) 210
第9章 反應(yīng)式接口 211
9.1 什么是反應(yīng)式接口 212
9.1.1 API層 212
9.1.2 無頭API 212
9.2 表述性RESTful接口 213
9.2.1 對比JSON與XML 214
9.2.2 表述性RESTful接口URL 214
9.2.3 Location 215
9.3 選擇反應(yīng)式API庫 216
9.3.1 Play 216
9.3.2 專斷 217
9.3.3 Play應(yīng)用的結(jié)構(gòu) 217
9.3.4 簡單路由 219
9.3.5 非阻塞服務(wù)接口 220
9.4 Akka HTTP:一個簡單的CQRS式的服務(wù) 223
9.5 Lagom:訂單示例 227
9.6 Play、Akka HTTP和Lagom之間的對比 228
9.7 本章小結(jié) 229
第10章 生產(chǎn)上線準(zhǔn)備 231
10.1 測試反應(yīng)式應(yīng)用 232
10.1.1 識別測試模式 232
10.1.2 測試并發(fā)行為 233
10.2 應(yīng)用安全防護(hù) 234
10.2.1 認(rèn)識STRIDE中定義的威脅 235
10.2.2 御敵于國門之外 236
10.2.3 添加HTTPS 237
10.3 對參與者進(jìn)行日志記錄 238
10.3.1 可堆疊日志 239
10.3.2 配置日志系統(tǒng) 240
10.4 跟蹤消息 242
10.4.1 使用Dapper模式收集跟蹤數(shù)據(jù) 243
10.4.2 減少對OpenTracing的依賴 245
10.4.3 集成OpenTracing與Akka 246
10.4.4 使用Spider模式找出路徑 253
10.5 監(jiān)控反應(yīng)式應(yīng)用 254
10.5.1 使用Lightbend Monitoring監(jiān)控核心指標(biāo) 254
10.5.2 使用Kamon創(chuàng)建自定義指標(biāo) 255
10.6 應(yīng)對故障 255
10.6.1 決定要重啟的對象 256
10.6.2 路由考量 256
10.6.3 某種程度上的恢復(fù) 257
10.7 部署到云端 258
10.7.1 要素隔離 258
10.7.2 將參與者Docker化 259
10.7.3 其他打包選項(xiàng) 261
10.8 本章小結(jié) 261