內容簡介
近些年來,微服務一直是非常熱門的話題,關於微服務架構的討論也是層出不窮。本書以貫穿整書的示例為出發點,由淺入深地闡述使用微服務的最佳實踐,以及如何避免採用微服務架構可能帶來的複雜性陷阱。本書從微服務架構本身的特徵入手,討論微服務組件的設計指導原則、有效通信的方式以及常見的安全挑戰和數據模型的選擇;然後進入微服務架構的測試部分,探討微服務的測試挑戰和解決方法、監控和擴展常用的實踐以及如何將現有架構演變為微服務架構;最後總結微服務架構在設計和開發方面遇到的常見問題及解決方案。
圖書目錄
第 1章 微服務架構簡介 1
1.1 常規微服務架構 2
1.2 微服務架構的特徵 2
1.2.1 問題定義 2
1.2.2 解決方案 3
1.3 做好微服務架構面臨的挑戰 4
1.3.1 通過日誌調試 5
1.3.2 服務監控 5
1.3.3 公共庫 5
1.3.4 服務之間的訊息傳遞 5
1.3.5 微服務的部署和版本管理 6
1.4 微服務的未來 6
1.4.1 無服務架構 7
1.4.2 微服務即PaaS 7
1.5 與傳統架構相比微服務架構的
優勢 7
1.6 是不是看起來與SOA很像 9
1.7 將業務領域劃分為微服務組件 11
1.8 到底要不要使用微服務 13
1.8.1 組織認同度 13
1.8.2 體驗DevOps 14
1.8.3 分析現有資料庫模型 14
1.8.4 自動化和CI/CD 14
1.8.5 集成 14
1.8.6 安全 14
1.8.7 成功遷移的例子 15
1.9 示例項目(信用風險評估引擎) 15
1.10 Spring 15
1.11 Spring Boot 16
1.12 小結 19
第 2章 定義微服務組件 21
2.1 微服務的定義 21
2.2 服務發現及其用途 22
2.2.1 DNS 22
2.2.2 服務發現的請求 23
2.2.3 服務發現模式示例 26
2.2.4 整個架構中的配置外化 29
2.3 API網關及其訴求 32
2.3.1 認證鑒權 33
2.3.2 不同協定 34
2.3.3 負載均衡 34
2.3.4 請求轉發(包括服務
發現) 34
2.3.5 回響轉換 34
2.3.6 斷路器 35
2.3.7 API網關的優劣性 35
2.4 API網關的例子 36
2.5 用戶註冊微服務的開發 39
2.6 小結 59
第3章 微服務端點之間的通信 61
3.1 微服務間應該如何通信 61
3.2 編制和編排 62
3.2.1 編制 62
3.2.2 編排 63
3.3 同步通信和異步通信 65
3.3.1 同步通信 65
3.3.2 異步通信 68
3.3.3 財務服務 79
3.4 小結 90
第4章 微服務端點的安全 91
4.1 微服務的安全挑戰 91
4.1.1 複合技術棧或者存在遺留
代碼 92
4.1.2 認證和授權(訪問
控制) 92
4.1.3 基於令牌的安全實踐 92
4.1.4 安全性的責任 92
4.1.5 編制風格的風險 92
4.1.6 微服務之間的通信 93
4.2 與OpenID的OAuth 2.0一起
使用JWT 94
4.2.1 OpenID 94
4.2.2 OAuth 2.0 95
4.2.3 JWT 97
4.2.4 示例套用 99
4.3 小結 111
第5章 創建高效的數據模型 113
5.1 數據和建模 113
5.2 單體架構中的數據模型 114
5.3 SOA中的數據模型 115
5.4 微服務架構中的數據模型 116
5.4.1 每個微服務限定一些
資料庫表 116
5.4.2 每個微服務一個資料庫 117
5.4.3 Saga模式 117
5.4.4 必要時採用混合數據
技術 119
5.5 從單體套用向微服務遷移數據
模型 120
5.5.1 領域驅動設計 120
5.5.2 數據模型遷移方式 121
5.6 小結 126
第6章 測試微服務 127
6.1 微服務中測試的目的 127
6.2 單元測試 128
6.3 集成測試 131
6.4 組件(服務)測試 131
6.5 契約測試 133
6.5.1 Pact 133
6.5.2 Spring Cloud Contract 134
6.6 端到端測試 135
6.7 更進一步 135
6.8 小結 136
第7章 部署微服務 137
7.1 持續集成 137
7.2 持續交付 138
7.3 用微服務配置CI和CD工具 140
7.4 微服務的Docker化 147
7.4.1 Docker 148
7.4.2 Docker引擎 148
7.4.3 Docker鏡像 148
7.4.4 Docker存儲 148
7.4.5 應用程式在Docker中是
如何工作的 149
7.4.6 公共、私有和官方的
鏡像庫 149
7.4.7 Docker與VM的區別 149
7.4.8 在Linux中安裝Docker 150
7.5 在Docker化的微服務中使用
開源CI工具 154
7.6 小結 156
第8章 演進現有系統 157
8.1 從哪裡開始 159
8.1.1 架構視角和最佳實踐 159