第1章 單體架構應用程序分解 1
1.1 導語 1
1.2 組織開發(fā)團隊 1
1.2.1 實戰(zhàn)操作 2
1.2.2 示例討論 3
1.3 按業(yè)務功能分解微服務 3
1.3.1 理論闡釋 4
1.3.2 實戰(zhàn)操作 4
1.4 識別有界上下文 5
1.4.1 理論闡釋 5
1.4.2 實戰(zhàn)操作 8
1.5 遷移生產環(huán)境中的數據 9
1.5.1 理論闡釋 9
1.5.2 實戰(zhàn)操作 9
1.6 重構單體架構應用程序 12
1.6.1 理論闡釋 12
1.6.2 實戰(zhàn)操作 14
1.7 將單體架構應用程序升級為服務 16
1.7.1 理論闡釋 16
1.7.2 實戰(zhàn)操作 16
1.8 升級測試套件 18
1.8.1 做好準備 18
1.8.2 實戰(zhàn)操作 18
1.9 使用Docker進行本地開發(fā) 19
1.9.1 做好準備 19
1.9.2 實戰(zhàn)操作 19
1.10 將請求路由到服務 20
1.10.1 理論闡釋 21
1.10.2 實戰(zhàn)操作 21
第2章 邊緣服務 23
2.1 導語 23
2.2 使用邊緣代理服務器控制對服務的訪問 23
2.2.1 操作說明 24
2.2.2 實戰(zhàn)操作 25
2.3 通過邊車模式擴展服務 28
2.3.1 理論闡釋 28
2.3.2 實戰(zhàn)操作 29
2.4 使用API網關將請求路由到服務 31
2.4.1 設計時需要考慮的問題 32
2.4.2 實戰(zhàn)操作 33
2.5 使用Hystrix停止級聯(lián)故障 40
2.5.1 理論闡釋 41
2.5.2 實戰(zhàn)操作 41
2.6 速率限制 45
2.6.1 理論闡釋 45
2.6.2 實戰(zhàn)操作 46
2.7 使用服務網格解決共同關注的問題 46
2.7.1 理論闡釋 47
2.7.2 實戰(zhàn)操作 47
第3章 服務間通信 49
3.1 導語 49
3.2 從服務到服務的通信 50
3.2.1 理論闡釋 50
3.2.2 實戰(zhàn)操作 51
3.3 并發(fā)異步請求 56
3.3.1 理論闡釋 56
3.3.2 實戰(zhàn)操作 57
3.4 使用服務發(fā)現來查找服務 61
3.4.1 理論闡釋 61
3.4.2 實戰(zhàn)操作 62
3.5 服務器端負載均衡 67
3.5.1 理論闡釋 67
3.5.2 實戰(zhàn)操作 68
3.6 客戶端負載均衡 69
3.6.1 理論闡釋 69
3.6.2 實戰(zhàn)操作 69
3.7 構建事件驅動的微服務 71
3.7.1 理論闡釋 72
3.7.2 實戰(zhàn)操作 72
3.8 不斷演變的API 77
3.8.1 理論闡釋 77
3.8.2 實戰(zhàn)操作 78
第4章 客戶端模式 79
4.1 導語 79
4.2 使用依賴性的Future對并發(fā)進行建模 79
4.2.1 理論闡釋 80
4.2.2 實戰(zhàn)操作 80
4.3 服務于前端的后端 88
4.3.1 理論闡釋 88
4.3.2 實戰(zhàn)操作 90
4.4 使用JSON和HTTP實現RPC一致性 97
4.4.1 理論闡釋 98
4.4.2 實戰(zhàn)操作 98
4.5 使用Thrift 103
4.5.1 理論闡釋 103
4.5.2 實戰(zhàn)操作 103
4.6 使用gRPC 107
4.6.1 理論闡釋 107
4.6.2 實戰(zhàn)操作 107
第5章 可靠性模式 113
5.1 導語 113
5.2 使用斷路器實現背壓 114
5.2.1 理論闡釋 114
5.2.2 實戰(zhàn)操作 115
5.3 使用指數退避算法重試請求 126
5.3.1 理論闡釋 126
5.3.2 實戰(zhàn)操作 127
5.4 通過緩存提高性能 130
5.4.1 理論闡釋 130
5.4.2 實戰(zhàn)操作 131
5.5 通過CDN提供更高效的服務 136
5.5.1 理論闡釋 137
5.5.2 實戰(zhàn)操作 138
5.5.3 優(yōu)雅地降低用戶體驗 138
5.6 通過游戲日演習驗證容錯能力 139
5.6.1 理論闡釋 139
5.6.2 先決條件 140
5.6.3 實戰(zhàn)操作 140
5.6.4 游戲日演習的模板 141
5.7 引入自動化混沌工程 142
5.7.1 理論闡釋 142
5.7.2 實戰(zhàn)操作 143
第6章 安全性 145
6.1 導語 145
6.2 身份驗證微服務 146
6.2.1 理論闡釋 146
6.2.2 實戰(zhàn)操作 148
6.3 確保容器安全 162
6.3.1 理論闡釋 162
6.3.2 實戰(zhàn)操作 162
6.4 安全配置 163
6.4.1 理論闡釋 163
6.4.2 實戰(zhàn)操作 164
6.5 安全日志記錄 176
6.6 基礎架構即代碼 176
6.6.1 理論闡釋 176
6.6.2 實戰(zhàn)操作 177
第7章 監(jiān)控和可觀察性 181
7.1 導語 181
7.2 結構化JSON日志記錄 182
7.2.1 理論闡釋 182
7.2.2 實戰(zhàn)操作 182
7.3 使用StatsD和Graphite收集度量值 186
7.3.1 理論闡釋 186
7.3.2 實戰(zhàn)操作 186
7.4 使用Prometheus收集度量值 190
7.4.1 理論闡釋 190
7.4.2 實戰(zhàn)操作 191
7.5 通過跟蹤使調試更容易 194
7.5.1 理論闡釋 195
7.5.2 實戰(zhàn)操作 195
7.6 出現問題時發(fā)出警報 197
7.6.1 理論闡釋 198
7.6.2 實戰(zhàn)操作 198
第8章 擴展 203
8.1 導語 203
8.2 使用Vegeta對微服務進行負載測試 203
8.2.1 理論闡釋 203
8.2.2 實戰(zhàn)操作 204
8.3 使用Gatling對微服務進行負載測試 209
8.3.1 理論闡釋 209
8.3.2 實戰(zhàn)操作 209
8.4 構建自動擴展集群 212
8.4.1 理論闡釋 212
8.4.2 實戰(zhàn)操作 212
第9章 部署微服務 215
9.1 導語 215
9.2 配置服務以在容器中運行 216
9.2.1 理論闡釋 217
9.2.2 實戰(zhàn)操作 217
9.3 使用Docker Compose運行多容器應用程序 218
9.3.1 理論闡釋 218
9.3.2 實戰(zhàn)操作 218
9.4 在Kubernetes上部署服務 220
9.4.1 理論闡釋 220
9.4.2 實戰(zhàn)操作 221
9.5 使用金絲雀部署方式測試版本 223
9.5.1 理論闡釋 223
9.5.2 實戰(zhàn)操作 224