架構(gòu)演變實(shí)戰(zhàn):從單體到微服務(wù)再到中臺(tái)
定 價(jià):128 元
- 作者:潘志偉
- 出版時(shí)間:2022/6/1
- ISBN:9787121436123
- 出 版 社:電子工業(yè)出版社
- 中圖法分類:TP368.5
- 頁碼:420
- 紙張:
- 版次:01
- 開本:16開
本書從搭建單體架構(gòu)遇到的瓶頸開始,通過真實(shí)案例介紹從單體架構(gòu)轉(zhuǎn)型為微服務(wù)架構(gòu)及中臺(tái)架構(gòu)過程中遇到的困難、問題與具體解決方法。全書共計(jì)9章,前3章以案例和原理為基礎(chǔ),介紹微服務(wù)的優(yōu)劣勢(shì)及其使用場(chǎng)景;第4~6章描述如何基于單體架構(gòu)搭建和優(yōu)化微服務(wù)架構(gòu);第7~8章介紹如何掌握測(cè)試、部署交付流程等軟件工程中的各個(gè)關(guān)鍵環(huán)節(jié)和核心要素;第9章講解在多元化業(yè)務(wù)場(chǎng)景下如何構(gòu)建中臺(tái)架構(gòu),以實(shí)現(xiàn)通用能力的下沉,從而形成共享服務(wù),達(dá)到資源使用率的最大化。 本書適合技術(shù)管理者、架構(gòu)師和有一定開發(fā)基礎(chǔ)的技術(shù)人員閱讀,尤其適合已進(jìn)入或即將進(jìn)入微服務(wù)架構(gòu)和中臺(tái)架構(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é)車主端項(xiàng)目;鑫涌算力信息科技(上海)有限公司擔(dān)任技術(shù)總監(jiān)兼首席架構(gòu)師,負(fù)責(zé)項(xiàng)目整體的技術(shù)架構(gòu)和人員管理2019 Dubbo社區(qū)開發(fā)者日活動(dòng)講師、南京中臺(tái)大會(huì)講師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)對(duì)比 9
1.3.2 編程方式對(duì)比 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 自動(dòng)化部署 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ù)請(qǐng)求模型 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 注冊(cè)中心簡(jiǎn)介 47
3.2.1 ZooKeeper 47
3.2.2 Nacos 51
3.3 PROVIDER的配置與發(fā)布 53
3.4 CONSUMER的配置 56
3.5 對(duì)負(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ò)展使用場(chǎng)景 77
3.8.1 Dubbo Filter的執(zhí)行過程 77
3.8.2 Dubbo Filter的使用場(chǎng)景 81
3.9 DUBBO服務(wù)發(fā)布和調(diào)用分析 85
3.9.1 標(biāo)簽解析 87
3.9.2 服務(wù)注冊(cè)和發(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è)計(jì)模式 105
4.5 微服務(wù)實(shí)戰(zhàn)詳解 106
4.5.1 需求背景 107
4.5.2 技術(shù)選型 108
4.5.3 設(shè)計(jì)數(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 單級(jí)緩存 137
5.2.2 多級(jí)緩存 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ù)的熔斷與降級(jí) 150
5.4.1 熔斷器的工作原理 150
5.4.2 服務(wù)降級(jí)的原理 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 消息隊(duì)列 183
5.8.1 為什么使用消息隊(duì)列 183
5.8.2 消息隊(duì)列的使用場(chǎng)景 185
5.9 分布式事務(wù) 189
5.9.1 事務(wù)的特性 189
5.9.2 分布式事務(wù)方案 191
第6章 億級(jí)流量網(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è)計(jì) 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的注冊(cè)與發(fā)布 211
6.3.3 異步化請(qǐng)求 215
6.3.4 泛化調(diào)用 220
6.3.5 功能插件化 223
6.3.6 請(qǐng)求快照 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 錯(cuò)誤傳值 236
6.5.4 日期格式異常 237
6.5.5 自定義異常失效 238
6.5.6 源碼修改如何集成 239
第7章 微服務(wù)之服務(wù)測(cè)試的演進(jìn) 242
7.1 測(cè)試模型的演進(jìn) 243
7.1.1 倒三角測(cè)試模型 243
7.1.2 金字塔測(cè)試模型 244
7.1.3 橄欖球測(cè)試模型 245
7.1.4 契約測(cè)試模型 246
7.2 微服務(wù)架構(gòu)的測(cè)試流程 247
7.2.1 測(cè)試策略 247
7.2.2 單元測(cè)試 249
7.2.3 API測(cè)試 252
7.2.4 服務(wù)框架測(cè)試 254
7.3 構(gòu)建契約測(cè)試平臺(tái) 255
7.3.1 測(cè)試面臨的阻礙 255
7.3.2 契約測(cè)試的核心思想 258
7.3.3 自研契約測(cè)試平臺(tái) 260
7.3.4 數(shù)據(jù)采集流程 264
7.3.5 契約測(cè)試的核心代碼 269
7.3.6 契約驗(yàn)證流程 277
7.4 混沌工程之問題注入 280
7.4.1 理解混沌工程 281
7.4.2 如何實(shí)施混沌實(shí)驗(yàn) 283
7.4.3 CPU滿載實(shí)驗(yàn) 284
7.4.4 磁盤寫滿實(shí)驗(yàn) 285
7.4.5 內(nèi)存負(fù)載實(shí)驗(yàn) 286
7.4.6 數(shù)據(jù)庫調(diào)用延時(shí)實(shí)驗(yàn) 286
7.4.7 Redis調(diào)用延時(shí)實(shí)驗(yàn) 287
7.4.8 Dubbo服務(wù)延時(shí)實(shí)驗(yàn) 288
7.4.9 Dubbo線程池滿實(shí)驗(yàn) 289
7.4.10 混沌實(shí)驗(yàn)的可視化 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ù)集成平臺(tái) 301
8.1.4 持續(xù)集成項(xiàng)目實(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 搭建全鏈路壓測(cè)平臺(tái) 348
8.3.1 實(shí)施全鏈路壓測(cè)的原則 349
8.3.2 流量染色與數(shù)據(jù)隔離 351
8.3.3 如何生成壓測(cè)流量 353
8.3.4 全鏈路壓測(cè)實(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章 中臺(tái)架構(gòu)設(shè)計(jì) 376
9.1 什么是中臺(tái) 377
9.1.1 研發(fā)亂象 377
9.1.2 中臺(tái)的定義 379
9.1.3 中臺(tái)的分類 380
9.1.4 企業(yè)是否需要中臺(tái) 381
9.1.5 中臺(tái)對(duì)企業(yè)的價(jià)值 382
9.2 業(yè)務(wù)中臺(tái)的搭建步驟 382
9.2.1 高管的介入決定成敗 382
9.2.2 獨(dú)立中臺(tái)的產(chǎn)品經(jīng)理 385
9.2.3 獨(dú)立中臺(tái)的技術(shù)團(tuán)隊(duì) 389
9.2.4 需求邊界管理 390
9.2.5 業(yè)務(wù)中臺(tái)的架構(gòu)設(shè)計(jì) 391
9.3 業(yè)務(wù)中臺(tái)實(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 中臺(tái)的績效考核標(biāo)準(zhǔn) 401
9.5 中臺(tái)的弊端 403
9.5.1 不同的業(yè)務(wù)線,需求不具備共性 403
9.5.2 需求的優(yōu)先級(jí)被降低 403
9.5.3 項(xiàng)目組溝通難 404
9.5.4 業(yè)務(wù)線被動(dòng)升級(jí) 405
9.6 實(shí)戰(zhàn)總結(jié) 406