架構(gòu)演變實(shí)戰(zhàn):從單體到微服務(wù)再到中臺
定 價:128 元
- 作者:潘志偉
- 出版時間:2022/6/1
- ISBN:9787121436123
- 出 版 社:電子工業(yè)出版社
- 中圖法分類:TP368.5
- 頁碼:420
- 紙張:
- 版次:01
- 開本:16開
本書從搭建單體架構(gòu)遇到的瓶頸開始,通過真實(shí)案例介紹從單體架構(gòu)轉(zhuǎn)型為微服務(wù)架構(gòu)及中臺架構(gòu)過程中遇到的困難、問題與具體解決方法。全書共計9章,前3章以案例和原理為基礎(chǔ),介紹微服務(wù)的優(yōu)劣勢及其使用場景;第4~6章描述如何基于單體架構(gòu)搭建和優(yōu)化微服務(wù)架構(gòu);第7~8章介紹如何掌握測試、部署交付流程等軟件工程中的各個關(guān)鍵環(huán)節(jié)和核心要素;第9章講解在多元化業(yè)務(wù)場景下如何構(gòu)建中臺架構(gòu),以實(shí)現(xiàn)通用能力的下沉,從而形成共享服務(wù),達(dá)到資源使用率的最大化。 本書適合技術(shù)管理者、架構(gòu)師和有一定開發(fā)基礎(chǔ)的技術(shù)人員閱讀,尤其適合已進(jìn)入或即將進(jìn)入微服務(wù)架構(gòu)和中臺架構(gòu)領(lǐng)域的相關(guān)人員閱讀。希望本書能為讀者提供一些技術(shù)路線上的啟發(fā)和指引,幫其少走彎路。
在上海若雅軟件系統(tǒng)有限公司擔(dān)任技術(shù)總監(jiān),負(fù)責(zé)工業(yè)互聯(lián)網(wǎng)和大數(shù)據(jù);諸葛天下(北京)信息技術(shù)有限公司擔(dān)任上海研發(fā)中心負(fù)責(zé)人,負(fù)責(zé)車主端項目;鑫涌算力信息科技(上海)有限公司擔(dān)任技術(shù)總監(jiān)兼首席架構(gòu)師,負(fù)責(zé)項目整體的技術(shù)架構(gòu)和人員管理2019 Dubbo社區(qū)開發(fā)者日活動講師、南京中臺大會講師2018 QCon講師
第1章 從單體架構(gòu)開始 1
1.1 單體應(yīng)用優(yōu)化之路 2
1.1.1 應(yīng)用無狀態(tài) 3
1.1.2 數(shù)據(jù)讀/寫分離 4
1.1.3 分庫分表 5
1.2 比性能更可怕的問題 7
1.3 微服務(wù)框架選型 8
1.3.1 總體架構(gòu)對比 9
1.3.2 編程方式對比 10
1.4 第一次失敗的微服務(wù)重構(gòu) 10
第2章 服務(wù)拆分與工程劃分 14
2.1 實(shí)施微服務(wù)架構(gòu)的前置條件 15
2.1.1 思想統(tǒng)一 15
2.1.2 充分培訓(xùn) 16
2.1.3 標(biāo)準(zhǔn)化的工程 17
2.1.4 自動化部署 18
2.2 服務(wù)拆分的角度和原則 19
2.2.1 服務(wù)拆分的角度 20
2.2.2 服務(wù)拆分的原則 21
2.3 服務(wù)拆分案例剖析 23
2.4 服務(wù)工具化替代文檔約束 26
2.5 微服務(wù)的數(shù)據(jù)請求模型 31
2.6 日志收集和控制 33
第3章 微服務(wù)模式開發(fā) 39
3.1 服務(wù)治理的核心概念 40
3.1.1 分布式系統(tǒng) 40
3.1.2 RPC框架 43
3.1.3 服務(wù)治理 44
3.2 注冊中心簡介 47
3.2.1 ZooKeeper 47
3.2.2 Nacos 51
3.3 PROVIDER的配置與發(fā)布 53
3.4 CONSUMER的配置 56
3.5 對負(fù)載均衡策略的選擇 58
3.6 DUBBO的常用特性 64
3.6.1 服務(wù)的多版本管理 65
3.6.2 上下文信息 66
3.6.3 隱式傳參 67
3.7 SPI原理介紹 67
3.7.1 Java SPI的執(zhí)行流程 68
3.7.2 Dubbo SPI的執(zhí)行流程 70
3.7.3 Dubbo SPI原理解析 74
3.8 FILTER的擴(kuò)展使用場景 77
3.8.1 Dubbo Filter的執(zhí)行過程 77
3.8.2 Dubbo Filter的使用場景 81
3.9 DUBBO服務(wù)發(fā)布和調(diào)用分析 85
3.9.1 標(biāo)簽解析 87
3.9.2 服務(wù)注冊和發(fā)布流程 88
3.9.3 服務(wù)引用流程和服務(wù)調(diào)用流程 91
第4章 實(shí)施微服務(wù)架構(gòu)的全過程 94
4.1 前后端分離 95
4.2 服務(wù)無狀態(tài)化 96
4.3 統(tǒng)一認(rèn)證服務(wù) 97
4.3.1 令牌方式 98
4.3.2 JWT方式 100
4.4 微服務(wù)設(shè)計模式 105
4.5 微服務(wù)實(shí)戰(zhàn)詳解 106
4.5.1 需求背景 107
4.5.2 技術(shù)選型 108
4.5.3 設(shè)計數(shù)據(jù)庫表 110
4.5.4 代碼結(jié)構(gòu)模型 114
4.5.5 服務(wù)發(fā)布上線 120
4.6 線上問題及解決方案 122
4.6.1 服務(wù)線程池滿 122
4.6.2 數(shù)據(jù)庫的CPU占用率飚高 124
4.6.3 無止境的循環(huán)依賴 125
第5章 微服務(wù)進(jìn)階優(yōu)化 126
5.1 緩存分類 127
5.1.1 CDN緩存 128
5.1.2 本地緩存 129
5.1.3 分布式緩存 135
5.2 微服務(wù)緩存優(yōu)化 137
5.2.1 單級緩存 137
5.2.2 多級緩存 138
5.2.3 緩存管理策略 140
5.3 串行轉(zhuǎn)并行 144
5.3.1 串行、并行的概念 144
5.3.2 將串行調(diào)用轉(zhuǎn)為并行調(diào)用的方法 145
5.3.3 案例實(shí)戰(zhàn) 147
5.4 服務(wù)的熔斷與降級 150
5.4.1 熔斷器的工作原理 150
5.4.2 服務(wù)降級的原理 152
5.4.3 Hystrix詳解 153
5.4.4 Sentinel詳解 158
5.4.5 熔斷器與Dubbo的集成 165
5.4.6 狀態(tài)監(jiān)控 168
5.5 限流 170
5.5.1 限流算法 170
5.5.2 如何進(jìn)行限流 171
5.5.3 單機(jī)限流 171
5.5.4 分布式限流 172
5.5.5 混合限流 174
5.6 接口的冪等性 174
5.6.1 為什么需要冪等性 175
5.6.2 如何保證接口的冪等性 175
5.6.3 冪等實(shí)戰(zhàn) 179
5.7 配置中心 180
5.7.1 常見的配置方式 180
5.7.2 配置中心 181
5.7.3 案例實(shí)戰(zhàn) 182
5.7.4 案例說明 183
5.8 消息隊列 183
5.8.1 為什么使用消息隊列 183
5.8.2 消息隊列的使用場景 185
5.9 分布式事務(wù) 189
5.9.1 事務(wù)的特性 189
5.9.2 分布式事務(wù)方案 191
第6章 億級流量網(wǎng)關(guān)開發(fā)實(shí)戰(zhàn) 200
6.1 為什么使用網(wǎng)關(guān) 201
6.1.1 網(wǎng)關(guān)的職責(zé)和工作原理 202
6.1.2 核心功能 203
6.2 網(wǎng)關(guān)的高可用性設(shè)計 207
6.2.1 高可用性的衡量標(biāo)準(zhǔn) 207
6.2.2 影響系統(tǒng)高可用性的因素 209
6.2.3 提升系統(tǒng)可用性的常用方法 209
6.3 從零開始自研高性能異步網(wǎng)關(guān) 211
6.3.1 API協(xié)議的制定 211
6.3.2 API的注冊與發(fā)布 211
6.3.3 異步化請求 215
6.3.4 泛化調(diào)用 220
6.3.5 功能插件化 223
6.3.6 請求快照 226
6.3.7 API生命周期 227
6.4 網(wǎng)關(guān)優(yōu)化 228
6.4.1 資源隔離 228
6.4.2 業(yè)務(wù)線程分離 230
6.4.3 Epoll加速 231
6.4.4 高速緩存 232
6.4.5 自恢復(fù)能力 234
6.5 自研網(wǎng)關(guān)所遇到的難題 234
6.5.1 網(wǎng)關(guān)找不到服務(wù)提供者 235
6.5.2 多余的class字段 236
6.5.3 錯誤傳值 236
6.5.4 日期格式異常 237
6.5.5 自定義異常失效 238
6.5.6 源碼修改如何集成 239
第7章 微服務(wù)之服務(wù)測試的演進(jìn) 242
7.1 測試模型的演進(jìn) 243
7.1.1 倒三角測試模型 243
7.1.2 金字塔測試模型 244
7.1.3 橄欖球測試模型 245
7.1.4 契約測試模型 246
7.2 微服務(wù)架構(gòu)的測試流程 247
7.2.1 測試策略 247
7.2.2 單元測試 249
7.2.3 API測試 252
7.2.4 服務(wù)框架測試 254
7.3 構(gòu)建契約測試平臺 255
7.3.1 測試面臨的阻礙 255
7.3.2 契約測試的核心思想 258
7.3.3 自研契約測試平臺 260
7.3.4 數(shù)據(jù)采集流程 264
7.3.5 契約測試的核心代碼 269
7.3.6 契約驗證流程 277
7.4 混沌工程之問題注入 280
7.4.1 理解混沌工程 281
7.4.2 如何實(shí)施混沌實(shí)驗 283
7.4.3 CPU滿載實(shí)驗 284
7.4.4 磁盤寫滿實(shí)驗 285
7.4.5 內(nèi)存負(fù)載實(shí)驗 286
7.4.6 數(shù)據(jù)庫調(diào)用延時實(shí)驗 286
7.4.7 Redis調(diào)用延時實(shí)驗 287
7.4.8 Dubbo服務(wù)延時實(shí)驗 288
7.4.9 Dubbo線程池滿實(shí)驗 289
7.4.10 混沌實(shí)驗的可視化 290
第8章 容量預(yù)估與服務(wù)上線 291
8.1 持續(xù)集成和持續(xù)交付 292
8.1.1 為什么需要持續(xù)集成和持續(xù)交付 292
8.1.2 持續(xù)集成和持續(xù)交付的流程 296
8.1.3 搭建持續(xù)集成平臺 301
8.1.4 持續(xù)集成項目實(shí)戰(zhàn) 324
8.2 灰度發(fā)布 337
8.2.1 灰度發(fā)布介紹 338
8.2.2 灰度發(fā)布的流程 340
8.2.3 灰度發(fā)布實(shí)戰(zhàn) 343
8.3 搭建全鏈路壓測平臺 348
8.3.1 實(shí)施全鏈路壓測的原則 349
8.3.2 流量染色與數(shù)據(jù)隔離 351
8.3.3 如何生成壓測流量 353
8.3.4 全鏈路壓測實(shí)戰(zhàn) 355
8.4 線上容量的預(yù)估 367
8.4.1 容量預(yù)估的參考指標(biāo) 368
8.4.2 硬件選型 370
8.4.3 容量預(yù)估實(shí)戰(zhàn) 371
第9章 中臺架構(gòu)設(shè)計 376
9.1 什么是中臺 377
9.1.1 研發(fā)亂象 377
9.1.2 中臺的定義 379
9.1.3 中臺的分類 380
9.1.4 企業(yè)是否需要中臺 381
9.1.5 中臺對企業(yè)的價值 382
9.2 業(yè)務(wù)中臺的搭建步驟 382
9.2.1 高管的介入決定成敗 382
9.2.2 獨(dú)立中臺的產(chǎn)品經(jīng)理 385
9.2.3 獨(dú)立中臺的技術(shù)團(tuán)隊 389
9.2.4 需求邊界管理 390
9.2.5 業(yè)務(wù)中臺的架構(gòu)設(shè)計 391
9.3 業(yè)務(wù)中臺實(shí)戰(zhàn) 392
9.3.1 需求分析 393
9.3.2 架構(gòu)實(shí)現(xiàn) 395
9.3.3 業(yè)務(wù)流程 396
9.3.4 業(yè)務(wù)線接入 399
9.4 中臺的績效考核標(biāo)準(zhǔn) 401
9.5 中臺的弊端 403
9.5.1 不同的業(yè)務(wù)線,需求不具備共性 403
9.5.2 需求的優(yōu)先級被降低 403
9.5.3 項目組溝通難 404
9.5.4 業(yè)務(wù)線被動升級 405
9.6 實(shí)戰(zhàn)總結(jié) 406