重構(gòu)到微服務(wù)
-
>
決戰(zhàn)行測(cè)5000題(言語理解與表達(dá))
-
>
軟件性能測(cè)試.分析與調(diào)優(yōu)實(shí)踐之路
-
>
第一行代碼Android
-
>
深度學(xué)習(xí)
-
>
Unreal Engine 4藍(lán)圖完全學(xué)習(xí)教程
-
>
深入理解計(jì)算機(jī)系統(tǒng)-原書第3版
-
>
Word/Excel PPT 2013辦公應(yīng)用從入門到精通-(附贈(zèng)1DVD.含語音視頻教學(xué)+辦公模板+PDF電子書)
重構(gòu)到微服務(wù) 版權(quán)信息
- ISBN:9787519879501
- 條形碼:9787519879501 ; 978-7-5198-7950-1
- 裝幀:平裝-膠訂
- 冊(cè)數(shù):暫無
- 重量:暫無
- 所屬分類:>
重構(gòu)到微服務(wù) 本書特色
一句話推薦
單體遺留系統(tǒng)的現(xiàn)代化演進(jìn)之道。本書旨在從思考和執(zhí)行的維度,深入探討如何將現(xiàn)有系統(tǒng)分解為微服務(wù)架構(gòu)。
編輯推薦
對(duì)于單體系統(tǒng),你是如何來進(jìn)行梳理并且逐步將它演進(jìn)到微服務(wù)架構(gòu)的呢?你是如何在保證業(yè)務(wù)正常進(jìn)行的同時(shí)來做這件事的?作為其暢銷著作《Building Microservices》的姊妹篇,這本書詳細(xì)闡釋了一種從存量的單體應(yīng)用遷移到微服務(wù)架構(gòu)的可行方法。
本書作為一本改造指南,提供了大量針對(duì)如何將單體應(yīng)用演進(jìn)到微服務(wù)架構(gòu)的實(shí)操建議。書中包含了大量圖形化的示例、充滿洞見的改造模式、涉及從改造的初始規(guī)劃階段到應(yīng)用系統(tǒng)和數(shù)據(jù)庫的解耦,涵蓋了許多場(chǎng)景和策略,它們將幫助你實(shí)現(xiàn)成功的改造。你將從本書中學(xué)到這些經(jīng)過實(shí)踐檢驗(yàn)過的模式和技巧。在改造過程,你一定會(huì)發(fā)現(xiàn)它們非常有價(jià)值。
專家推薦
“在這本書中,本書作者為微服務(wù)改造定義了清晰的愿景,并且向你展示了在改造過程中需要注意哪些‘坑’(既有很明顯的,也有一些比較隱蔽的)。同時(shí),本書也提供了很多組織革新、架構(gòu)革新、技術(shù)革新方面非常有用的參考模式。”
——Daniel Bryant
DataWire和InfoQ的技術(shù)顧問
重構(gòu)到微服務(wù) 內(nèi)容簡介
本書作為一本改造指南,提供了大量針對(duì)如何將單體應(yīng)用演進(jìn)到微服務(wù)架構(gòu)的實(shí)操建議。書中包含了大量圖形化的示例、充滿洞見的改造模式、涉及從改造的初始規(guī)劃階段到應(yīng)用系統(tǒng)和數(shù)據(jù)庫的解耦,涵蓋了許多場(chǎng)景和策略,它們將幫助你實(shí)現(xiàn)成功的改造。你將從本書中學(xué)到這些經(jīng)過實(shí)踐檢驗(yàn)過的模式和技巧。在改造過程,你一定會(huì)發(fā)現(xiàn)它們非常有價(jià)值。本書的主要內(nèi)容有:適合于期望演進(jìn)到微服務(wù),而不是重寫的組織。幫助組織決策是否要改造、何時(shí)改造、以及從哪里入手進(jìn)行改造。如何解決遺留系統(tǒng)的通信、集成和遷移問題。闡述了若干不同的遷移模式,以及在什么情況下采用這些模式。提供了多種數(shù)據(jù)庫遷移方法的案例,以及對(duì)應(yīng)的同步機(jī)制。探索了應(yīng)用系統(tǒng)解耦的方法,包括若干架構(gòu)重構(gòu)的模式。深入探討了數(shù)據(jù)庫解耦的細(xì)節(jié),包括打破參照完整性和事務(wù)完整性的影響,新的失敗模式等。
重構(gòu)到微服務(wù) 目錄
前言 1
第1 章 剛剛好的微服務(wù) 7
1.1 什么是微服務(wù)? 7
1.1.1 部署獨(dú)立性 8
1.1.2 圍繞業(yè)務(wù)領(lǐng)域建模 8
1.1.3 擁有自己的數(shù)據(jù) 12
1.1.4 微服務(wù)將帶來哪些優(yōu)勢(shì)? 13
1.1.5 微服務(wù)會(huì)帶來什么問題? 13
1.1.6 用戶界面 .14
1.1.7 技術(shù) 14
1.1.8 顆粒度 15
1.1.9 所有權(quán) 17
1.2 單體架構(gòu)19
1.2.1 單進(jìn)程單體 19
1.2.2 分布式單體 21
1.2.3 第三方黑盒系統(tǒng) 22
1.2.4 單體架構(gòu)的挑戰(zhàn) 22
1.2.5 單體的優(yōu)勢(shì) 22
1.3 關(guān)于耦合和內(nèi)聚 23
1.3.1 內(nèi)聚 25
1.3.2 耦合 25
1.4 剛剛好的領(lǐng)域驅(qū)動(dòng)設(shè)計(jì) .36
1.4.1 聚合 37
1.4.2 限界上下文 38
1.4.3 將聚合和限界上下文映射到微服務(wù) 39
1.4.4 延伸閱讀 .39
1.5 總結(jié) .40
第2 章 規(guī)劃遷移到微服務(wù)的過程 41
2.1 理解目標(biāo)41
2.2 為什么要選擇微服務(wù)? .43
2.2.1 提高團(tuán)隊(duì)自主性 44
2.2.2 縮短上市時(shí)間 45
2.2.3 經(jīng)濟(jì)高效地?cái)U(kuò)展負(fù)載.46
2.2.4 提高健壯性 47
2.2.5 擴(kuò)展開發(fā)人員的數(shù)量.48
2.2.6 擁抱新技術(shù) 49
2.3 什么時(shí)候微服務(wù)可能是個(gè)壞主意?.51
2.3.1 不明確的業(yè)務(wù)領(lǐng)域 .51
2.3.2 初創(chuàng)公司 .52
2.3.3 客戶安裝和管理的軟件 54
2.3.4 沒有好的理由! 54
2.4 權(quán)衡利弊54
2.5 帶人踏上旅途 .56
2.6 改變組織56
2.6.1 建立緊迫感 57
2.6.2 組建領(lǐng)導(dǎo)團(tuán)隊(duì) 58
2.6.3 制定愿景和戰(zhàn)略 59
2.6.4 傳達(dá)變革愿景 59
2.6.5 善于授權(quán)賦能 60
2.6.6 快速得到成果 61
2.6.7 促進(jìn)變革深入 61
2.6.8 成果融入文化 62
2.7 增量遷移的重要性 62
2.8 變更成本64
2.8.1 可逆和不可逆的決定.64
2.8.2 更容易實(shí)驗(yàn)的地方 .66
2.9 那么我們從哪里開始呢? 66
2.10 領(lǐng)域驅(qū)動(dòng)設(shè)計(jì) 66
2.10.1 你需要走多遠(yuǎn)? 67
2.10.2 事件風(fēng)暴 68
2.10.3 利用領(lǐng)域模型進(jìn)行優(yōu)先級(jí)排序 68
2.11 一個(gè)組合模型 70
2.12 重組團(tuán)隊(duì) .72
2.12.1 改變團(tuán)隊(duì)結(jié)構(gòu) .72
2.12.2 不要一刀切73
2.12.3 做出改變 75
2.12.4 改變技能 78
2.13 你如何知道轉(zhuǎn)型成功與否? .81
2.13.1 有定期檢查點(diǎn) .81
2.13.2 定量度量 82
2.13.3 定性度量 82
2.13.4 避免沉沒成本誤區(qū) 83
2.13.5 對(duì)新方法持開放態(tài)度 83
2.14 總結(jié) 84
第3 章 拆分單體 87
3.1 單體系統(tǒng),修改還是不修改? 87
3.1.1 剪切、復(fù)制或者重新開發(fā)? .88
3.1.2 重構(gòu)單體系統(tǒng) 89
3.2 遷移模式90
3.3 模式:絞殺應(yīng)用 91
3.3.1 它是如何工作的 91
3.3.2 在哪里使用它 93
3.3.3 示例:HTTP 反向代理 .95
3.3.4 數(shù)據(jù) 98
3.3.5 代理選項(xiàng) .98
3.3.6 更改協(xié)議 102
3.3.7 示例:FTP 105
3.3.8 示例:消息攔截 106
3.3.9 其他協(xié)議 109
3.3.10 絞殺植物模式的其他例子 . 109
3.4 遷移功能時(shí)改變行為 110
3.5 模式:UI 組合 . 110
3.5.1 示例:頁面組合 111
3.5.2 示例:小部件(Widget)組合 112
3.5.3 示例:微前端 . 115
3.5.4 在哪里使用它 . 116
3.6 模式:抽象分支 . 116
3.6.1 它是如何工作的 117
3.6.2 作為后備機(jī)制 . 124
3.6.3 在哪里使用它 . 125
3.7 模式:并行運(yùn)行 . 126
3.7.1 示例:比較信用衍生品定價(jià) 126
3.7.2 示例:Homegate 列表 128
3.7.3 驗(yàn)證技術(shù) 129
3.7.4 使用Spy 129
3.7.5 GitHub Scientist 130
3.7.6 灰度發(fā)布與金絲雀發(fā)布 . 131
3.7.7 在哪里使用它 . 131
3.8 模式:裝飾合作者 . 131
3.8.1 示例:會(huì)員計(jì)劃 132
3.8.2 在哪里使用它 . 133
3.9 模式:變更數(shù)據(jù)捕獲 133
3.9.1 示例:發(fā)行會(huì)員卡 133
3.9.2 實(shí)現(xiàn)變更數(shù)據(jù)捕獲 135
3.9.3 在哪里使用它 . 137
3.10 總結(jié) 138
第4 章 分解數(shù)據(jù)庫 139
4.1 模式:共享數(shù)據(jù)庫 . 139
4.1.1 應(yīng)對(duì)模式 141
4.1.2 何處使用 141
4.2 但這是不可能做到的! . 141
4.3 模式:數(shù)據(jù)庫視圖 . 143
4.3.1 數(shù)據(jù)庫即公共契約 143
4.3.2 通過視圖來對(duì)外展現(xiàn) 144
4.3.3 限制條件 145
4.3.4 所有權(quán) 146
4.3.5 何處使用 146
4.4 模式:數(shù)據(jù)庫包裝服務(wù) 146
4.5 模式:數(shù)據(jù)庫即服務(wù)接口 . 149
4.5.1 實(shí)現(xiàn)映射引擎 . 151
4.5.2 與視圖相比 . 151
4.5.3 何處使用 151
4.6 轉(zhuǎn)讓所有權(quán) 152
4.6.1 模式:暴露單體中的聚合 152
4.6.2 模式:變更數(shù)據(jù)所有權(quán) . 155
4.7 數(shù)據(jù)同步. 156
4.8 模式:在應(yīng)用程序中同步數(shù)據(jù) 158
4.8.1 步驟1:批量同步數(shù)據(jù) 158
4.8.2 步驟2:同步寫入,從舊表結(jié)構(gòu)中讀取 159
4.8.3 步驟3:同步寫入,從新表結(jié)構(gòu)中讀取 160
4.8.4 在哪里使用它(一) 161
4.8.5 在哪里使用它(二) 161
4.9 模式:追蹤器寫入 . 162
4.9.1 數(shù)據(jù)同步 165
4.9.2 案例:Square 的訂單 . 167
4.9.3 在哪里使用它 . 171
4.10 拆分?jǐn)?shù)據(jù)庫 . 171
4.11 先拆分?jǐn)?shù)據(jù)庫,還是先拆分代碼? 173
4.11.1 先拆分?jǐn)?shù)據(jù)庫 174
4.11.2 先拆分代碼 178
4.11.3 將數(shù)據(jù)庫和代碼一起拆分 .183
4.11.4 那么,我應(yīng)該先拆分哪個(gè)? .184
4.12 表結(jié)構(gòu)拆分示例 184
4.13 模式:拆分表 184
4.14 模式:將外鍵關(guān)系移動(dòng)到代碼中 187
4.14.1 移動(dòng)連表查詢 188
4.14.2 數(shù)據(jù)一致性 190
4.14.3 在哪里使用 192
4.14.4 示例:共享靜態(tài)數(shù)據(jù) 192
4.15 事務(wù) 201
4.15.1 ACID 事務(wù) .202
4.15.2 仍然保持ACID,但缺乏整體的原子性? 203
4.15.3 兩階段提交 205
4.15.4 對(duì)分布式事務(wù)說不 207
4.16 saga . 208
4.16.1 saga 的失敗模式 . 209
4.16.2 實(shí)施saga 213
4.16.3 saga 與分布式事務(wù) 220
4.17 總結(jié) 220
第5 章 成長的煩惱 223
5.1 服務(wù)越多,痛苦越多 223
5.2 規(guī)模化下的所有權(quán) . 225
5.2.1 這個(gè)問題如何表現(xiàn)出來? 225
5.2.2 這個(gè)問題什么時(shí)候會(huì)發(fā)生? 226
5.2.3 潛在的解決方案 226
5.3 破壞性變更 227
5.3.1 這個(gè)問題如何表現(xiàn)出來? 227
5.3.2 這個(gè)問題什么時(shí)候會(huì)發(fā)生? 227
5.3.3 潛在的解決方案 228
5.4 報(bào)表 231
5.4.1 這個(gè)問題什么時(shí)候會(huì)發(fā)生? 232
5.4.2 潛在的解決方案 . 233
5.5 監(jiān)控和故障排除 . 234
5.5.1 什么時(shí)候會(huì)出現(xiàn)這些問題? 234
5.5.2 這些問題是如何發(fā)生的? . 235
5.5.3 潛在的解決方案 . 235
5.6 本地開發(fā)者體驗(yàn) . 239
5.6.1 這個(gè)問題如何表現(xiàn)出來? 239
5.6.2 什么時(shí)候會(huì)出現(xiàn)這些問題? 239
5.6.3 潛在的解決方案 240
5.7 運(yùn)行太多東西 240
5.7.1 這個(gè)問題如何表現(xiàn)出來? 241
5.7.2 這個(gè)問題什么時(shí)候會(huì)發(fā)生? 241
5.7.3 潛在的解決方案 241
5.8 端到端測(cè)試 242
5.8.1 這個(gè)問題如何表現(xiàn)出來? 243
5.8.2 這個(gè)問題什么時(shí)候會(huì)發(fā)生? 243
5.8.3 潛在的解決方案 243
5.9 全局與局部優(yōu)化 . 245
5.9.1 這個(gè)問題如何表現(xiàn)出來? 246
5.9.2 這個(gè)問題什么時(shí)候會(huì)發(fā)生? 246
5.9.3 潛在的解決方案 247
5.10 健壯性和彈性 248
5.10.1 這個(gè)問題如何表現(xiàn)出來? . 248
5.10.2 這個(gè)問題什么時(shí)候會(huì)發(fā)生? 249
5.10.3 潛在的解決方案 . 249
5.11 孤兒服務(wù) 250
5.11.1 這個(gè)問題如何表現(xiàn)出來? .250
5.11.2 這個(gè)問題什么時(shí)候會(huì)發(fā)生? .250
5.11.3 潛在的解決方案 .251
5.12 總結(jié) 252
第6 章 結(jié)語 . 255
附錄A 參考書目 . 257
附錄B 模式列表 . 261
重構(gòu)到微服務(wù) 作者簡介
作者介紹經(jīng)歷了幾個(gè)創(chuàng)業(yè)公司,并在Thoughtworks工作了12年之后,目前Sam Newman是一位獨(dú)立顧問。他專注于微服務(wù)、云技術(shù)、以及持續(xù)交付方面。通過培訓(xùn)和技術(shù)咨詢服務(wù),Sam幫助分布在全球的客戶實(shí)現(xiàn)更快且更可靠的軟件交付。他是經(jīng)驗(yàn)豐富的演講者,曾在全球多個(gè)大會(huì)上發(fā)表演講。同時(shí),他也是O’Reilly出版的《Building Microservices》一書的作者。譯者介紹王威,Thoughtworks總監(jiān)級(jí)咨詢師,知樸咨詢創(chuàng)始人,DDD中國社區(qū)聯(lián)合創(chuàng)始人,Cynefin框架培訓(xùn)講師,微服務(wù)架構(gòu)、領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)、遺留系統(tǒng)重構(gòu)的實(shí)踐者。梅雪松,Thoughtworks總監(jiān)級(jí)咨詢師,遺留系統(tǒng)現(xiàn)代化服務(wù)負(fù)責(zé)人,微服務(wù)架構(gòu)、領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)、遺留系統(tǒng)重構(gòu)的實(shí)踐者。姚琪琳,Thoughtworks專家級(jí)咨詢師,遺留系統(tǒng)現(xiàn)代化服務(wù)負(fù)責(zé)人,極客時(shí)間《遺留系統(tǒng)現(xiàn)代化實(shí)戰(zhàn)》專欄作者,技術(shù)書籍譯者。
- >
隨園食單
- >
月亮虎
- >
經(jīng)典常談
- >
苦雨齋序跋文-周作人自編集
- >
龍榆生:詞曲概論/大家小書
- >
人文閱讀與收藏·良友文學(xué)叢書:一天的工作
- >
企鵝口袋書系列·偉大的思想20:論自然選擇(英漢雙語)
- >
【精裝繪本】畫給孩子的中國神話