圖書信息
反應式設計模式
作者:[美]羅蘭·庫恩(Roland Kuhn)布賴恩·哈納菲(Brian Hanafee)傑米·艾倫(Jamie Allen)著 何 品 邱嘉和 王石沖 譯 林煒翔審校
定價:98元
印次:1-1
ISBN:9787302517146
出版日期:2019.01.01
印刷日期:2018.12.11
內容簡介
《反應式設計模式》介紹反應式應用程式設計的原則、模式和經典實踐,講述如何用斷路器模式將運行緩慢的組件與其他組件隔開、如何用事務序列(Saga)模式實現多階段事務以及如何通過分片模式來劃分數據集,分析如何保持原始碼的可讀性以及系統的可測試性(即使在存在許多潛在互動和失敗點的情況下)。 主要內容 ? “反應式宣言”權威指南 ? 流量控制、有界一致性、容錯等模式 ? 得之不易的關於“什麼行不通”的經驗 ? 在巨大的負載下保持伸縮性的架構
圖書目錄
第Ⅰ部分簡介
第1章為什麼需要反應式?3
1.1剖析反應式套用5
1.2應對負載6
1.3應對失敗7
1.4讓系統即時回響9
1.5避免大泥球10
1.6整合非反應式組件11
1.7小結12
第2章《反應式宣言》概覽13
2.1對用戶作出反應13
2.1.1理解傳統方法14
2.1.2使用共享資源的延遲分析16
2.1.3使用佇列限制最大延遲17
2.2利用並行性18
2.2.1通過並行化降低延遲19
2.2.2使用可組合的Future改善並行性21
2.2.3為序列式執行表象買單22
2.3並行執行的限制24
2.3.1阿姆達爾定律24
2.3.2通用伸縮性法則25
2.4對失敗作出反應26
2.4.1劃分與隔離28
2.4.2使用斷路器29
2.4.3監督30
2.5放棄強一致性32
2.5.1ACID2.033
2.5.2接受更新34
2.6對反應式設計模式的需求35
2.6.1管理複雜性36
2.6.2使編程模型更貼近真實世界37
2.7小結38
第3章行業工具39
3.1反應式的早期解決方案39
3.2函式式編程41
3.2.1不可變性42
3.2.2引用透明性44
3.2.3副作用45
3.2.4函式作為一等公民46
3.3即時回響用戶47
3.4對反應式設計的現有支持49
3.4.1綠色執行緒49
3.4.2事件循環50
3.4.3通信順序進程51
3.4.4Future和Promise53
3.4.5反應式擴展工具包58
3.4.6Actor模型59
3.5小結64
第Ⅱ部分微言大義
第4章訊息傳遞67
4.1訊息67
4.2垂直伸縮68
4.3“基於事件”與“基於訊息”69
4.4“同步”與“異步”71
4.5流量控制73
4.6送達保證75
4.7作為訊息的事件77
4.8同步訊息傳遞79
4.9小結79
第5章位置透明性81
5.1什麼是位置透明性?81
5.2透明化遠程處理的謬誤82
5.3基於顯式訊息傳遞的糾正方案83
5.4最佳化本地訊息傳遞84
5.5訊息丟失85
5.6水平擴展性87
5.7位置透明性使測試更加簡單88
5.8動態組合88
5.9小結90
第6章分而治之91
6.1分層拆解問題92
6.2“依賴”與“子模組”94
6.3構建你自己的大公司96
6.4規範和測試的優點97
6.5水平擴展性和垂直伸縮性98
6.6小結99
第7章原則性失敗處理101
7.1所有權意味著承諾101
7.2所有權隱含生命周期控制103
7.3所有級別上的回彈性104
7.4小結105
第8章有界一致性107
8.1封裝模組糾正方案108
8.2根據事務邊界對數據和行為進行分組109
8.3跨事務邊界建模工作流109
8.4失敗單元即一致性單元110
8.5分離職責111
8.6堅持一致性的隔離範圍113
8.7小結114
第9章按需使用非確定性115
9.1邏輯編程和聲明式數據流115
9.2函式式反應式編程117
9.3不共享簡化並發118
9.4共享狀態的並發119
9.5如何窘境突圍?119
9.6小結121
第10章訊息流123
10.1推動數據向前流動123
10.2模型化領域流程125
10.3認清回彈性的局限性125
10.4估計速率和部署規模126
10.5為流量控制進行規劃127
10.6小結127
第Ⅲ部分設計模式
第11章測試反應式應用程式131
11.1如何測試131
11.1.1單元測試132
11.1.2組件測試133
11.1.3聯動測試133
11.1.4集成測試133
11.1.5用戶驗收測試134
11.1.6黑盒測試與白盒測試134
11.2測試環境135
11.3異步測試136
11.3.1提供阻塞的訊息接收者137
11.3.2選擇逾時時間的難題139
11.3.3斷言訊息的缺失145
11.3.4提供同步執行引擎146
11.3.5異步斷言148
11.3.6完全異步的測試149
11.3.7斷言沒有發生異步錯誤151
11.4測試非確定性系統154
11.4.1執行計畫的麻煩155
11.4.2測試分散式組件155
11.4.3模擬Actor156
11.4.4分散式組件157
11.5測試彈性157
11.6測試回彈性158
11.6.1應用程式回彈性158
11.6.2基礎設施的回彈性162
11.7測試即時回響性164
11.8小結165
第12章容錯及恢復模式167
12.1簡單組件模式167
12.1.1問題設定168
12.1.2模式套用168
12.1.3模式回顧170
12.1.4適用性171
12.2錯誤核心模式171
12.2.1問題設定172
12.2.2模式套用172
12.2.3模式回顧175
12.2.4適用性176
12.3放任崩潰模式176
12.3.1問題設定177
12.3.2模式套用177
12.3.3模式回顧178
12.3.4實現上的考慮179
12.3.5推論:心跳模式180
12.3.6推論:主動失敗信號模式180
12.4斷路器模式181
12.4.1問題設定182
12.4.2模式套用182
12.4.3模式回顧186
12.4.4適用性187
12.5小結187
第13章複製模式189
13.1主動-被動複製模式190
13.1.1問題設定190
13.1.2模式套用191
13.1.3模式回顧203
13.1.4適用性204
13.2多主複製模式204
13.2.1基於共識的複製205
13.2.2具有衝突檢測與處理方案的複製方式208
13.2.3無衝突的可複製數據類型210
13.3主動-主動複製模式217
13.3.1問題設定218
13.3.2模式套用218
13.3.3模式回顧225
13.3.4與虛擬同步模型的關係226
13.4小結227
第14章資源管理模式229
14.1資源封裝模式229
14.1.1問題設定230
14.1.2模式套用230
14.1.3模式回顧236
14.1.4適用性237
14.2資源借貸模式237
14.2.1問題設定238
14.2.2模式套用238
14.2.3模式回顧240
14.2.4適用性241
14.2.5實現上的考慮242
14.2.6變體:使用資源借貸模式進行局部公開242
14.3複雜命令模式243
14.3.1問題設定243
14.3.2模式套用244
14.3.3模式回顧251
14.3.4適用性252
14.4資源池模式252
14.4.1問題設定253
14.4.2模式套用253
14.4.3模式回顧255
14.4.4實現上的考慮256
14.5託管阻塞模式257
14.5.1問題設定257
14.5.2模式套用258
14.5.3模式回顧260
14.5.4適用性261
14.6小結262
第15章訊息流模式263
15.1請求-回響模式264
15.1.1問題設定264
15.1.2模式套用265
15.1.3該模式的常見實例267
15.1.4模式回顧272
15.1.5適用性272
15.2訊息自包含模式273
15.2.1問題設定273
15.2.2模式套用274
15.2.3模式回顧276
15.2.4適用性277
15.3詢問模式277
15.3.1問題設定278
15.3.2模式套用278
15.3.3模式回顧281
15.3.4適用性283
15.4轉發流模式283
15.4.1問題設定283
15.4.2模式套用284
15.4.3模式回顧284
15.4.4適用性285
15.5聚合器模式285
15.5.1問題設定285
15.5.2模式套用286
15.5.3模式回顧289
15.5.4適用性290
15.6事務序列模式290
15.6.1問題設定291
15.6.2模式套用291
15.6.3模式回顧293
15.6.4適用性294
15.7業務握手協定(或可靠投遞模式)294
15.7.1問題設定295
15.7.2模式套用295
15.7.3模式回顧300
15.7.4適用性301
15.8小結301
第16章流量控制模式303
16.1拉取模式303
16.1.1問題設定304
16.1.2模式套用304
16.1.3模式回顧306
16.1.4適用性307
16.2託管佇列模式307
16.2.1問題設定308
16.2.2模式套用308
16.2.3模式回顧310
16.2.4適用性310
16.3丟棄模式311
16.3.1問題設定311
16.3.2模式套用311
16.3.3模式回顧313
16.3.4適用性316
16.4限流模式316
16.4.1問題設定316
16.4.2模式套用317
16.4.3模式回顧320
16.5小結320
第17章狀態管理和持久化模式321
17.1領域對象模式321
17.1.1問題設定322
17.1.2模式套用322
17.1.3模式回顧326
17.2分片模式326
17.2.1問題設定326
17.2.2模式套用327
17.2.3模式回顧329
17.2.4重要警告329
17.3事件溯源模式330
17.3.1問題設定330
17.3.2模式套用330
17.3.3模式回顧333
17.3.4適用性333
17.4事件流模式334
17.4.1問題設定334
17.4.2模式套用334
17.4.3模式回顧336
17.4.4適用性337
17.5小結337
附錄A反應式系統圖示339
附錄B一個虛構的案例341
附錄C《反應式宣言》正文355