微服務架構不僅延續了分布式系統與SOA 的特征,也汲取了DevOps、持續集成、持續交付等工程實踐的成功經驗,并正在借著云計算和容器化的春風開始其馳騁之旅。但是,微服務的落地并不像其概念描述的那樣舉重若輕,它不僅包括架構解耦,還涉及開發測試、部署運維、工程實踐、團隊合作與康威定律等多方面的因素,這些因素相輔相成,共同影響著如何高質量、快速地交付業務價值。本書是在第1 版的基礎之上,基于作者近年來對服務化改造的實戰經驗和思考,并結合業界的技術趨勢進行的一次體系化的精進。全書共分為3 部分,首先闡述了微服務架構的理論基礎。其次介紹了微服務生態系統、實施參考模型以及最佳實踐,并基于真實案例分析了遺留系統的服務化改造策略與應用場景。最后基于Apache 開源社區的微服務框架ServiceComb,設計并實現了案例SockShop 系統,從端到端交付的角度,指導讀者完成服務的設計、開發、測試、流水線,以及自動化部署和運維體系的建立。本書不僅適合架構師、開發人員以及技術管理者閱讀,也適合正在嘗試向微服務架構遷移的團隊或者個人。希望本書能夠在微服務落地的工作中對讀者有所幫助。
ThoughtWorks的首席咨詢師王磊是國內較早倡導和實踐微服務的先行者。王磊是開源軟件的愛好者和貢獻者,社區活動的參與者,《Ruby Gems開發實戰》(Practical RubyGems)一書的譯者,GDCR西安的組織者。他于2012年加入ThoughtWorks,為國內外諸多客戶提供項目交付和咨詢服務;在加入ThoughtWorks之前,曾就職過多家知名外企,具有豐富的敏捷項目實戰經驗。目前致力于微服務架構、高可用的Web應用以及DevOps的研究與實踐。
第1 部分 基礎篇
第1 章 微服務架構綜述 ................................................................................................. 2
1.1 軟件架構發展歷史 .......................................................................................................... 2
1.2 微服務的誕生背景 .......................................................................................................... 8
1.3 什么是微服務架構 ........................................................................................................ 15
1.4 微服務架構的本質 ........................................................................................................ 23
1.5 微服務架構的特征 ........................................................................................................ 28
1.6 微服務架構不是“銀彈” ............................................................................................ 34
1.7 微服務架構與SOA ....................................................................................................... 39
1.8 微服務與Serverless ....................................................................................................... 40
1.9 微服務與Service Mesh ................................................................................................. 46
1.10 小結 .............................................................................................................................. 53
第2 部分 策略篇
第2 章 微服務生態系統 ............................................................................................... 57
2.1 為什么定義生態系統 .................................................................................................... 57
2.2 微服務生態系統的核心內容 ........................................................................................ 59
2.3 生態系統的工程實踐 .................................................................................................... 66
2.4 小結 ............................................................................................................................... 73
第3 章 微服務關鍵技術 ............................................................................................... 74
3.1 服務設計 ........................................................................................................................ 74
3.2 服務治理 ...................................................................................................................... 116
3.3 服務運維 ...................................................................................................................... 131
3.4 小結 .............................................................................................................................. 142
第4 章 微服務參考模型 ............................................................................................. 143
4.1 為什么需要參考模型 .................................................................................................. 143
4.2 參考模型的核心內容 .................................................................................................. 144
4.3 如何使用參考模型 ...................................................................................................... 172
4.4 小結 .............................................................................................................................. 183
第5 章 基于參考模型的實踐 ...................................................................................... 184
5.1 微服務團隊 .................................................................................................................. 184
5.2 核心敏捷實踐 .............................................................................................................. 192
5.3 服務設計與實現 .......................................................................................................... 198
5.4 運維管理 ...................................................................................................................... 212
5.5 測試管理 ...................................................................................................................... 235
5.6 交付流水線 .................................................................................................................. 269
5.7 部署管理實踐 .............................................................................................................. 288
5.8 小結 .............................................................................................................................. 333
第6 章 遺留系統的微服務改造 .................................................................................. 334
6.1 遺留系統綜述 .............................................................................................................. 334
6.2 遺留系統改造策略 ...................................................................................................... 336
6.3 遺留系統改造場景 ...................................................................................................... 341
6.4 遺留系統改造案例 ...................................................................................................... 347
6.5 小結 .............................................................................................................................. 354
第3 部分 實戰篇
第7 章 微服務開發框架ServiceComb ...................................................................... 356
7.1 ServiceComb 綜述 ....................................................................................................... 356
7.2 Java Chassis .................................................................................................................. 361
7.3 Go Chassis 詳解 ........................................................................................................... 364
7.4 注冊中心ServiceCenter .............................................................................................. 365
7.5 數據一致性框架Saga ................................................................................................. 372
7.6 小結 .............................................................................................................................. 376
第8 章 微服務云應用平臺ServiceStage ................................................................... 377
8.1 ServiceStage 綜述 ........................................................................................................ 377
8.2 CCE 云容器引擎服務 ................................................................................................. 379
8.3 CSE 微服務引擎 .......................................................................................................... 384
8.4 SWR 軟件鏡像倉庫 .................................................................................................... 386
8.5 AOS 編排服務 ............................................................................................................. 387
8.6 APM 應用性能管理 .................................................................................................... 389
8.7 小結 .............................................................................................................................. 391
第9 章 SockShop 系統分析與設計 ............................................................................ 392
9.1 系統綜述 ...................................................................................................................... 392
9.2 需求理解與分析 .......................................................................................................... 395
9.3 服務劃分與設計 .......................................................................................................... 396
9.4 架構設計 ...................................................................................................................... 401
9.5 基礎設施塔建 .............................................................................................................. 404
9.6 小結 .............................................................................................................................. 407
第10 章 實現SockShop 系統的第一個服務 .............................................................. 408
10.1 使用Java Chassis 實現商品服務 .............................................................................. 408
10.2 使用Docker-Compose 本地運行服務 ...................................................................... 415
10.3 商品服務自動化測試 ................................................................................................ 416
10.4 搭建交付流水線 ........................................................................................................ 419
10.5 小結 ............................................................................................................................ 423
第11 章 實現SockShop 系統的其他服務 .................................................................. 424
11.1 實現用戶服務 ............................................................................................................ 425
11.2 實現購物車服務 ........................................................................................................ 432
11.3 實現訂單服務 ............................................................................................................ 434
11.4 實現支付服務 ............................................................................................................ 437
11.5 實現物流服務 ............................................................................................................ 438
11.6 實現用戶界面服務 .................................................................................................... 440
11.7 使用Pact 驗證服務 ................................................................................................... 451
11.8 運行SockShop 系統 .................................................................................................. 456
11.9 小結 ............................................................................................................................ 459
第12 章 部署SockShop 系統 ................................................................................... 460
12.1 SockShop 系統的TOSCA 模板 ................................................................................ 460
12.2 部署SockShop 系統 .................................................................................................. 465
第13 章 運維SockShop 系統 ................................................................................... 468
13.1 監控告警 .................................................................................................................... 468
13.2 日志聚合 .................................................................................................................... 475
13.3 服務治理 .................................................................................................................... 476
13.4 小結 ............................................................................................................................ 479
附錄A ServiceStage 相關概念 .................................................................................. 481
附錄B TOSCA 模板介紹 ........................................................................................... 483
寫在最后 ...................................................................................................................... 486
參考文獻 ...................................................................................................................... 488
資源列表 ...................................................................................................................... 490