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