反應(yīng)式設(shè)計模式 版權(quán)信息
- ISBN:9787302517146
- 條形碼:9787302517146 ; 978-7-302-51714-6
- 裝幀:一般膠版紙
- 冊數(shù):暫無
- 重量:暫無
- 所屬分類:>>
反應(yīng)式設(shè)計模式 本書特色
現(xiàn)代Web應(yīng)用程序的用戶數(shù)量眾多,即使服務(wù)器出現(xiàn)故障或有新服務(wù)器上線,Web應(yīng)用程序也需要繼續(xù)提供服務(wù);Web應(yīng)用程序需要在資源有限的情況下,將信息提供給分布于全球的廣大用戶!胺磻(yīng)式應(yīng)用程序”能適應(yīng)部分失敗以及負載變化情形,并在變化多端的分布式環(huán)境中保持即時響應(yīng)性;如何做到這一點呢?秘訣就在于“消息驅(qū)動的架構(gòu)”以及各種設(shè)計模式。
《反應(yīng)式設(shè)計模式》圍繞反應(yīng)式宣言展開,講述什么是反應(yīng)式、為何需要反應(yīng)式,以及反應(yīng)式系統(tǒng)設(shè)計與開發(fā)中的一些常用模式,無論是軟件開發(fā)者還是系統(tǒng)架構(gòu)師,都可從本書中汲取知識養(yǎng)分。書中提出許多真知灼見,勾勒出反應(yīng)式應(yīng)用程序、反應(yīng)式系統(tǒng)以及反應(yīng)式平臺等概念,有場景、有故事、有概念、有實踐,令人沉醉其中,流連忘返。
反應(yīng)式設(shè)計模式 內(nèi)容簡介
《反應(yīng)式設(shè)計模式》介紹反應(yīng)式應(yīng)用程序設(shè)計的原則、模式和經(jīng)典實踐,講述如何用斷路器模式將運行緩慢的組件與其他組件隔開、如何用事務(wù)序列(Saga)模式實現(xiàn)多階段事務(wù)以及如何通過分片模式來劃分?jǐn)?shù)據(jù)集,分析如何保持源代碼的可讀性以及系統(tǒng)的可測試性(即使在存在許多潛在交互和失敗點的情況下)。
主要內(nèi)容
? “反應(yīng)式宣言”很好不錯指南
? 流量控制、有界一致性、容錯等模式
? 得之不易的關(guān)于“什么行不通”的經(jīng)驗
? 在巨大的負載下保持伸縮性的架構(gòu)
反應(yīng)式設(shè)計模式 目錄
目 錄
第Ⅰ部分 簡介
第1章 為什么需要反應(yīng)式? 3
1.1 剖析反應(yīng)式應(yīng)用 5
1.2 應(yīng)對負載 6
1.3 應(yīng)對失敗 7
1.4 讓系統(tǒng)即時響應(yīng) 9
1.5 避免大泥球 10
1.6 整合非反應(yīng)式組件 11
1.7 小結(jié) 12
第2章 《反應(yīng)式宣言》概覽 13
2.1 對用戶作出反應(yīng) 13
2.1.1 理解傳統(tǒng)方法 14
2.1.2 使用共享資源的延遲分析 16
2.1.3 使用隊列限制*大延遲 17
2.2 利用并行性 18
2.2.1 通過并行化降低延遲 19
2.2.2 使用可組合的Future改善并行性 21
2.2.3 為序列式執(zhí)行表象買單 22
2.3 并行執(zhí)行的限制 24
2.3.1 阿姆達爾定律 24
2.3.2 通用伸縮性法則 25
2.4 對失敗作出反應(yīng) 26
2.4.1 劃分與隔離 28
2.4.2 使用斷路器 29
2.4.3 監(jiān)督 30
2.5 放棄強一致性 32
2.5.1 ACID 2.0 33
2.5.2 接受更新 34
2.6 對反應(yīng)式設(shè)計模式的需求 35
2.6.1 管理復(fù)雜性 36
2.6.2 使編程模型更貼近真實世界 37
2.7 小結(jié) 38
第3章 行業(yè)工具 39
3.1 反應(yīng)式的早期解決方案 39
3.2 函數(shù)式編程 41
3.2.1 不可變性 42
3.2.2 引用透明性 44
3.2.3 副作用 45
3.2.4 函數(shù)作為一等公民 46
3.3 即時響應(yīng)用戶 47
3.4 對反應(yīng)式設(shè)計的現(xiàn)有支持 49
3.4.1 綠色線程 49
3.4.2 事件循環(huán) 50
3.4.3 通信順序進程 51
3.4.4 Future和Promise 53
3.4.5 反應(yīng)式擴展工具包 58
3.4.6 Actor模型 59
3.5 小結(jié) 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 小結(jié) 79
第5章 位置透明性 81
5.1 什么是位置透明性? 81
5.2 透明化遠程處理的謬誤 82
5.3 基于顯式消息傳遞的糾正方案 83
5.4 優(yōu)化本地消息傳遞 84
5.5 消息丟失 85
5.6 水平擴展性 87
5.7 位置透明性使測試更加簡單 88
5.8 動態(tài)組合 88
5.9 小結(jié) 90
第6章 分而治之 91
6.1 分層拆解問題 92
6.2 “依賴”與“子模塊” 94
6.3 構(gòu)建你自己的大公司 96
6.4 規(guī)范和測試的優(yōu)點 97
6.5 水平擴展性和垂直伸縮性 98
6.6 小結(jié) 99
第7章 原則性失敗處理 101
7.1 所有權(quán)意味著承諾 101
7.2 所有權(quán)隱含生命周期控制 103
7.3 所有級別上的回彈性 104
7.4 小結(jié) 105
第8章 有界一致性 107
8.1 封裝模塊糾正方案 108
8.2 根據(jù)事務(wù)邊界對數(shù)據(jù)和行為進行分組 109
8.3 跨事務(wù)邊界建模工作流 109
8.4 失敗單元即一致性單元 110
8.5 分離職責(zé) 111
8.6 堅持一致性的隔離范圍 113
8.7 小結(jié) 114
第9章 按需使用非確定性 115
9.1 邏輯編程和聲明式數(shù)據(jù)流 115
9.2 函數(shù)式反應(yīng)式編程 117
9.3 不共享簡化并發(fā) 118
9.4 共享狀態(tài)的并發(fā) 119
9.5 如何窘境突圍? 119
9.6 小結(jié) 121
第10章 消息流 123
10.1 推動數(shù)據(jù)向前流動 123
10.2 模型化領(lǐng)域流程 125
10.3 認(rèn)清回彈性的局限性 125
10.4 估計速率和部署規(guī)模 126
10.5 為流量控制進行規(guī)劃 127
10.6 小結(jié) 127
第Ⅲ部分 設(shè)計模式
第11章 測試反應(yīng)式應(yīng)用程序 131
11.1 如何測試 131
11.1.1 單元測試 132
11.1.2 組件測試 133
11.1.3 聯(lián)動測試 133
11.1.4 集成測試 133
11.1.5 用戶驗收測試 134
11.1.6 黑盒測試與白盒測試 134
11.2 測試環(huán)境 135
11.3 異步測試 136
11.3.1 提供阻塞的消息接收者 137
11.3.2 選擇超時時間的難題 139
11.3.3 斷言消息的缺失 145
11.3.4 提供同步執(zhí)行引擎 146
11.3.5 異步斷言 148
11.3.6 完全異步的測試 149
11.3.7 斷言沒有發(fā)生異步錯誤 151
11.4 測試非確定性系統(tǒng) 154
11.4.1 執(zhí)行計劃的麻煩 155
11.4.2 測試分布式組件 155
11.4.3 模擬Actor 156
11.4.4 分布式組件 157
11.5 測試彈性 157
11.6 測試回彈性 158
11.6.1 應(yīng)用程序回彈性 158
11.6.2 基礎(chǔ)設(shè)施的回彈性 162
11.7 測試即時響應(yīng)性 164
11.8 小結(jié) 165
第12章 容錯及恢復(fù)模式 167
12.1 簡單組件模式 167
12.1.1 問題設(shè)定 168
12.1.2 模式應(yīng)用 168
12.1.3 模式回顧 170
12.1.4 適用性 171
12.2 錯誤內(nèi)核模式 171
12.2.1 問題設(shè)定 172
12.2.2 模式應(yīng)用 172
12.2.3 模式回顧 175
12.2.4 適用性 176
12.3 放任崩潰模式 176
12.3.1 問題設(shè)定 177
12.3.2 模式應(yīng)用 177
12.3.3 模式回顧 178
12.3.4 實現(xiàn)上的考慮 179
12.3.5 推論:心跳模式 180
12.3.6 推論:主動失敗信號模式 180
12.4 斷路器模式 181
12.4.1 問題設(shè)定 182
12.4.2 模式應(yīng)用 182
12.4.3 模式回顧 186
12.4.4 適用性 187
12.5 小結(jié) 187
第13章 復(fù)制模式 189
13.1 主動-被動復(fù)制模式 190
13.1.1 問題設(shè)定 190
13.1.2 模式應(yīng)用 191
13.1.3 模式回顧 203
13.1.4 適用性 204
13.2 多主復(fù)制模式 204
13.2.1 基于共識的復(fù)制 205
13.2.2 具有沖突檢測與處理方案的復(fù)制方式 208
13.2.3 無沖突的可復(fù)制數(shù)據(jù)類型 210
13.3 主動-主動復(fù)制模式 217
13.3.1 問題設(shè)定 218
13.3.2 模式應(yīng)用 218
13.3.3 模式回顧 225
13.3.4 與虛擬同步模型的關(guān)系 226
13.4 小結(jié) 227
第14章 資源管理模式 229
14.1 資源封裝模式 229
14.1.1 問題設(shè)定 230
14.1.2 模式應(yīng)用 230
14.1.3 模式回顧 236
14.1.4 適用性 237
14.2 資源借貸模式 237
14.2.1 問題設(shè)定 238
14.2.2 模式應(yīng)用 238
14.2.3 模式回顧 240
14.2.4 適用性 241
14.2.5 實現(xiàn)上的考慮 242
14.2.6 變體:使用資源借貸模式進行局部公開 242
14.3 復(fù)雜命令模式 243
14.3.1 問題設(shè)定 243
14.3.2 模式應(yīng)用 244
14.3.3 模式回顧 251
14.3.4 適用性 252
14.4 資源池模式 252
14.4.1 問題設(shè)定 253
14.4.2 模式應(yīng)用 253
14.4.3 模式回顧 255
14.4.4 實現(xiàn)上的考慮 256
14.5 托管阻塞模式 257
14.5.1 問題設(shè)定 257
14.5.2 模式應(yīng)用 258
14.5.3 模式回顧 260
14.5.4 適用性 261
14.6 小結(jié) 262
第15章 消息流模式 263
15.1 請求-響應(yīng)模式 264
15.1.1 問題設(shè)定 264
15.1.2 模式應(yīng)用 265
15.1.3 該模式的常見實例 267
15.1.4 模式回顧 272
15.1.5 適用性 272
15.2 消息自包含模式 273
15.2.1 問題設(shè)定 273
15.2.2 模式應(yīng)用 274
15.2.3 模式回顧 276
15.2.4 適用性 277
15.3 詢問模式 277
15.3.1 問題設(shè)定 278
15.3.2 模式應(yīng)用 278
15.3.3 模式回顧 281
15.3.4 適用性 283
15.4 轉(zhuǎn)發(fā)流模式 283
15.4.1 問題設(shè)定 283
15.4.2 模式應(yīng)用 284
15.4.3 模式回顧 284
15.4.4 適用性 285
15.5 聚合器模式 285
15.5.1 問題設(shè)定 285
15.5.2 模式應(yīng)用 286
15.5.3 模式回顧 289
15.5.4 適用性 290
15.6 事務(wù)序列模式 290
15.6.1 問題設(shè)定 291
15.6.2 模式應(yīng)用 291
15.6.3 模式回顧 293
15.6.4 適用性 294
15.7 業(yè)務(wù)握手協(xié)議(或可靠投遞模式) 294
15.7.1 問題設(shè)定 295
15.7.2 模式應(yīng)用 295
15.7.3 模式回顧 300
15.7.4 適用性 301
15.8 小結(jié) 301
第16章 流量控制模式 303
16.1 拉取模式 303
16.1.1 問題設(shè)定 304
16.1.2 模式應(yīng)用 304
16.1.3 模式回顧 306
16.1.4 適用性 307
16.2 托管隊列模式 307
16.2.1 問題設(shè)定 308
16.2.2 模式應(yīng)用 308
16.2.3 模式回顧 310
16.2.4 適用性 310
16.3 丟棄模式 311
16.3.1 問題設(shè)定 311
16.3.2 模式應(yīng)用 311
16.3.3 模式回顧 313
16.3.4 適用性 316
16.4 限流模式 316
16.4.1 問題設(shè)定 316
16.4.2 模式應(yīng)用 317
16.4.3 模式回顧 320
16.5 小結(jié) 320
第17章 狀態(tài)管理和持久化模式 321
17.1 領(lǐng)域?qū)ο竽J? 321
17.1.1 問題設(shè)定 322
17.1.2 模式應(yīng)用 322
17.1.3 模式回顧 326
17.2 分片模式 326
17.2.1 問題設(shè)定 326
17.2.2 模式應(yīng)用 327
17.2.3 模式回顧 329
17.2.4 重要警告 329
17.3 事件溯源模式 330
17.3.1 問題設(shè)定 330
17.3.2 模式應(yīng)用 330
17.3.3 模式回顧 333
17.3.4 適用性 333
17.4 事件流模式 334
17.4.1 問題設(shè)定 334
17.4.2 模式應(yīng)用 334
17.4.3 模式回顧 336
17.4.4 適用性 337
17.5 小結(jié) 337
附錄A 反應(yīng)式系統(tǒng)圖示 339
附錄B 一個虛構(gòu)的案例 341
附錄C 《反應(yīng)式宣言》正文 355
展開全部
反應(yīng)式設(shè)計模式 作者簡介
Roland Kuhn博士曾在慕尼黑工業(yè)大學(xué)學(xué)習(xí)物理專業(yè),獲得了博士學(xué)位;在歐洲核子研究中心(瑞士日內(nèi)瓦)的高能粒子物理實驗中,發(fā)表了關(guān)于核子的膠子自旋結(jié)構(gòu)測量的博士專題論文。該實驗需要使用和實現(xiàn)大型計算集群以及快速的數(shù)據(jù)處理網(wǎng)絡(luò),這也為Roland透徹理解分布式計算奠定了基礎(chǔ)。此后,Roland博士在德國空間運營中心工作了4年,負責(zé)建設(shè)軍事衛(wèi)星的控制中心和地面基礎(chǔ)設(shè)施。再后來,他加入Lightbend(之前叫做Typesafe)公司,在2012年11月到2016年3月期間負責(zé)帶領(lǐng)Akka團隊。在此期間,他與Martin Odersky和Erik Meijer一起在Coursera平臺上講授Principles of Reactive Programming課程,這門課程的學(xué)員超過12萬人。Roland與Jonas Bonér等人共同撰寫了第一版的《反應(yīng)式宣言》,該宣言于2013年6月發(fā)表。目前,Roland是Actyx的首席技術(shù)官及聯(lián)合創(chuàng)始人,Actyx是一家總部位于慕尼黑的公司,致力于使歐洲的各類中小型制造企業(yè)享受到現(xiàn)代反應(yīng)式系統(tǒng)的福澤。 Brian Hanafee在加利福尼亞大學(xué)伯克利分校獲得電氣工程與計算機科學(xué)學(xué)士學(xué)位,現(xiàn)任富國銀行的首席系統(tǒng)架構(gòu)師,負責(zé)設(shè)計網(wǎng)上銀行和支付系統(tǒng),并長期引領(lǐng)公司的技術(shù)門檻提升。此前,Brian曾在甲骨文公司工作,致力于研究新興產(chǎn)品、互動電視系統(tǒng)以及文本處理系統(tǒng)。Brian也曾任博思艾倫咨詢公司的咨詢師,并曾在ADS公司將人工智能技術(shù)應(yīng)用到軍事規(guī)劃系統(tǒng)中。Brian還為第一代彈射安全的頭盔綜合顯示系統(tǒng)編寫了軟件。 Jamie Allen是星巴克UCP項目的技術(shù)總監(jiān),致力于以跨運營模式、跨地域的方式,為星巴克公司各地的消費者重新定義數(shù)字體驗。他是Effective Akka一書的作者,曾與Roland和Jonas一起在Lightbend公司工作4年以上。Jamie自2008年以來一直從事Scala和Actor開發(fā)工作,與世界各地的客戶合作,幫助他們理解和采用反應(yīng)式系統(tǒng)設(shè)計。