反應式設計模式 版權信息
- ISBN:9787302517146
- 條形碼:9787302517146 ; 978-7-302-51714-6
- 裝幀:一般膠版紙
- 冊數:暫無
- 重量:暫無
- 所屬分類:>>
反應式設計模式 本書特色
現代Web應用程序的用戶數量眾多,即使服務器出現故障或有新服務器上線,Web應用程序也需要繼續提供服務;Web應用程序需要在資源有限的情況下,將信息提供給分布于全球的廣大用戶。“反應式應用程序”能適應部分失敗以及負載變化情形,并在變化多端的分布式環境中保持即時響應性;如何做到這一點呢?秘訣就在于“消息驅動的架構”以及各種設計模式。
《反應式設計模式》圍繞反應式宣言展開,講述什么是反應式、為何需要反應式,以及反應式系統設計與開發中的一些常用模式,無論是軟件開發者還是系統架構師,都可從本書中汲取知識養分。書中提出許多真知灼見,勾勒出反應式應用程序、反應式系統以及反應式平臺等概念,有場景、有故事、有概念、有實踐,令人沉醉其中,流連忘返。
反應式設計模式 內容簡介
《反應式設計模式》介紹反應式應用程序設計的原則、模式和經典實踐,講述如何用斷路器模式將運行緩慢的組件與其他組件隔開、如何用事務序列(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.1 ACID 2.0 33
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.4 Future和Promise 53
3.4.5 反應式擴展工具包 58
3.4.6 Actor模型 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 模擬Actor 156
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
展開全部
反應式設計模式 作者簡介
Roland Kuhn博士曾在慕尼黑工業大學學習物理專業,獲得了博士學位;在歐洲核子研究中心(瑞士日內瓦)的高能粒子物理實驗中,發表了關于核子的膠子自旋結構測量的博士專題論文。該實驗需要使用和實現大型計算集群以及快速的數據處理網絡,這也為Roland透徹理解分布式計算奠定了基礎。此后,Roland博士在德國空間運營中心工作了4年,負責建設軍事衛星的控制中心和地面基礎設施。再后來,他加入Lightbend(之前叫做Typesafe)公司,在2012年11月到2016年3月期間負責帶領Akka團隊。在此期間,他與Martin Odersky和Erik Meijer一起在Coursera平臺上講授Principles of Reactive Programming課程,這門課程的學員超過12萬人。Roland與Jonas Bonér等人共同撰寫了第一版的《反應式宣言》,該宣言于2013年6月發表。目前,Roland是Actyx的首席技術官及聯合創始人,Actyx是一家總部位于慕尼黑的公司,致力于使歐洲的各類中小型制造企業享受到現代反應式系統的福澤。 Brian Hanafee在加利福尼亞大學伯克利分校獲得電氣工程與計算機科學學士學位,現任富國銀行的首席系統架構師,負責設計網上銀行和支付系統,并長期引領公司的技術門檻提升。此前,Brian曾在甲骨文公司工作,致力于研究新興產品、互動電視系統以及文本處理系統。Brian也曾任博思艾倫咨詢公司的咨詢師,并曾在ADS公司將人工智能技術應用到軍事規劃系統中。Brian還為第一代彈射安全的頭盔綜合顯示系統編寫了軟件。 Jamie Allen是星巴克UCP項目的技術總監,致力于以跨運營模式、跨地域的方式,為星巴克公司各地的消費者重新定義數字體驗。他是Effective Akka一書的作者,曾與Roland和Jonas一起在Lightbend公司工作4年以上。Jamie自2008年以來一直從事Scala和Actor開發工作,與世界各地的客戶合作,幫助他們理解和采用反應式系統設計。