前言
第一篇 基 礎 篇
第1章 微服務架構 …… 2
1.1 為什麼需要微服務 …… 2
1.1.1 傳統單體服務的問題 …… 2
1.1.2 微服務的定義 …… 3
1.1.3 微服務與康威定律 …… 3
1.1.4 微服務的收益 …… 4
1.2 微服務架構的挑戰 …… 4
1.2.1 服務拆分 …… 4
1.2.2 開發挑戰 …… 5
1.2.3 測試挑戰 …… 5
1.2.4 運維挑戰 …… 6
1.3 微服務化的具體時機 …… 6
1.4 微服務化開展前的準備工作 …… 8
1.4.1 微服務開發框架 …… 8
1.4.2 微服務標準化 …… 15
1.4.3 持續集成與發布 …… 17
1.5 微服務實施 …… 17
1.5.1 微服務拆分 …… 17
1.5.2 微服務通信 …… 19
1.5.3 微服務穩定性保障 …… 20
1.6 本章小結 …… 25
第2章 微服務治理 …… 26
2.1 微服務治理基礎 …… 26
2.1.1 服務治理由來 …… 26
2.1.2 服務治理的目標與願景 …… 27
2.1.3 服務治理的工作範疇 …… 28
2.1.4 服務治理閉環體係 …… 29
2.2 正嚮服務治理 …… 29
2.2.1 效率治理 …… 30
2.2.2 穩定性治理 …… 31
2.3 效果治理 …… 34
2.4 可見可觀測 …… 35
2.4.1 服務可見性 …… 35
2.4.2 變更可見性 …… 36
2.4.3 可觀測性 …… 36
2.5 量化分析體係 …… 41
2.5.1 穩定性風險度量 …… 41
2.5.2 基於多維度監控的故障定位 …… 42
2.5.3 風險分析 …… 43
2.6 綫上治理 …… 43
2.6.1 綫上預案體係 …… 43
2.6.2 基於Metric的預案自動觸發 …… 44
2.6.3 治理參數動態調整 …… 44
2.7 綫下治理 …… 47
2.7.1 鏈路穩定性治理 …… 47
2.7.2 架構與資源治理 …… 50
2.8 服務治理演進 …… 50
2.8.1 遠程Proxy方式 …… 51
2.8.2 基於智能客戶端的服務框架 …… 52
2.8.3 本地Proxy …… 52
2.9 理想的服務治理架構 …… 53
2.10 本章小結 …… 54
第3章 下一代微服務框架Service Mesh概要 …… 55
3.1 Service Mesh基礎 …… 55
3.1.1 什麼是Service Mesh …… 55
3.1.2 Service Mesh的基本模式 …… 56
3.2 Service Mesh的發展曆程 …… 58
3.3 Service Mesh項目Linkerd …… 60
3.3.1 Linkerd演進 …… 60
3.3.2 Linkerd路由機製 …… 62
3.3.3 Linkerd 2.0核心架構 …… 63
3.4 Service Mesh項目Istio …… 64
3.4.1 Envoy …… 64
3.4.2 Istio …… 66
3.5 Service Mesh其他解決方案 …… 67
3.5.1 國外其他Service Mesh項目 …… 67
3.5.2 Service Mesh在中國的發展 …… 68
3.6 Service Mesh雲上産品 …… 69
3.6.1 AWS App Mesh …… 69
3.6.2 Azure Service Fabric Mesh …… 69
3.6.3 Google Cloud Service Mesh …… 70
3.6.4 SuperGloo …… 70
3.7 Service Mesh標準化 …… 71
3.8 本章小結 …… 71
第二篇 架 構 篇
第4章 Envoy架構剖析 …… 74
4.1 Envoy整體架構 …… 74
4.1.1 關鍵設計約束 …… 74
4.1.2 設計原則 …… 75
4.1.3 整體架構 …… 76
4.2 Envoy網絡模型 …… 78
4.2.1 Envoy事件調度模型 …… 78
4.2.2 Envoy綫程模型 …… 81
4.2.3 綫程本地存儲機製 …… 81
4.3 Envoy擴展模型 …… 84
4.3.1 插件擴展機製 …… 84
4.3.2 網絡相關插件 …… 86
4.3.3 其他擴展插件 …… 88
4.4 Envoy數據平麵API …… 88
4.4.1 XDS協議語義 …… 88
4.4.2 XDS協議通信 …… 90
4.5 Envoy啓動管理 …… 91
4.5.1 正常啓動 …… 92
4.5.2 熱重啓 …… 94
4.6 Envoy與Nginx架構層麵的對比 …… 95
4.6.1 功能與定位 …… 96
4.6.2 網絡模型 …… 96
4.6.3 連接處理 …… 97
4.6.4 插件機製 …… 98
4.6.5 配置管理 …… 99
4.6.6 內存管理 …… 99
4.6.7 部署與運維 …… 100
4.6.8 觀測與診斷 …… 100
4.7 本章小結 …… 100
第5章 Istio架構剖析 …… 101
5.1 Istio整體架構 …… 101
5.1.1 數據平麵組件 …… 102
5.1.2 控製平麵組件 …… 103
5.2 Istio的Kubernetes基礎 …… 104
5.2.1 Kubernetes綜述 …… 104
5.2.2 Kubernetes網絡訪問模型 …… 107
5.2.3 Kubernetes API管理 …… 110
5.2.4 Istio與Kubernetes的相互關係 …… 111
5.3 Istio流量控製模型 …… 112
5.3.1 流量管理API …… 112
5.3.2 Istio Mesh模型 …… 116
5.4 Mixer模型 …… 118
5.4.1 Mixer基本概念 …… 119
5.4.2 Mixer通用配置模型 …… 119
5.4.3 Mixer架構演進以及對性能的影響 …… 121
5.5 Istio安全 …… 122
5.5.1 Istio安全基礎 …… 122
5.5.2 Istio認證架構 …… 123
5.6 Istio配置處理框架 …… 124
5.6.1 配置驗證 …… 125
5.6.2 配置變更處理和分發 …… 125
5.7 本章小結 …… 125
第6章 Istio控製流設計 …… 126
6.1 Envoy生命周期管理 …… 126
6.1.1 Envoy注入 …… 126
6.1.2 Envoy啓動管理 …… 128
6.1.3 Envoy配置和運行狀態監控 …… 131
6.2 Istio配置變更管理 …… 133
6.2.1 通用模型和機製 …… 133
6.2.2 Kubernetes具體實現 …… 137
6.3 控製平麵和數據平麵的XDS交互 …… 138
6.3.1 控製平麵的gRPC Server啓動 …… 139
6.3.2 Envoy的XDS請求 …… 140
6.3.3 Istio XDS配置下發 …… 140
6.3.4 Envoy的XDS消息接收 …… 143
6.4 XDS配置生成 …… 143
6.4.1 可見性 …… 143
6.4.2 配置生成機製 …… 145
6.4.3 XDS配置生成實現 …… 147
6.5 XDS配置的Envoy處理 …… 149
6.5.1 XDS配置變更的判斷 …… 149
6.5.2 CDS配置的延遲處理 …… 150
6.5.3 集群和節點配置處理 …… 152
6.5.4 路由配置處理 …… 153
6.5.5 監聽器配置處理 …… 153
6.6 本章小結 …… 155
第7章 Istio數據流設計 …… 156
7.1 Iptables …… 156
7.1.1 Iptables的基本原理 …… 156
7.1.2 Iptables在Istio中的使用 …… 158
7.2 監聽管理 …… 158
7.2.1 監聽器建立 …… 158
7.2.2 監聽器和工作綫程綁定 …… 159
7.3 連接管理 …… 160
7.3.1 監聽器匹配 …… 160
7.3.2 協議過濾器匹配 …… 161
7.3.3 創建新連接 …… 161
7.4 網絡I/O和緩衝區管理 …… 162
7.4.1 傳輸層數據讀取 …… 162
7.4.2 插件處理 …… 163
7.5 Thrift協議處理 …… 164
7.5.1 Thrift插件的整體架構 …… 164
7.5.2 協議解析 …… 165
7.5.3 協議相關的插件機製 …… 166
7.6 HTTP請求處理 …… 168
7.6.1 HTTP請求處理流程 …… 168
7.6.2 協議解析 …… 169
7.6.3 路由管理 …… 171
7.6.4 HTTP過濾鏈處理 …… 174
7.6.5 負載均衡 …… 176
7.6.6 連接池實現 …… 179
7.7 本章小結 …… 182
第8章 Istio微服務治理 …… 183
8.1 鏈路穩定性治理 …… 183
8.1.1 超時機製 …… 183
8.1.2 重試機製和重試策略 …… 185
8.1.3 節點熔斷和健康檢查機製 …… 188
8.1.4 資源限製機製 …… 189
8.1.5 全局限流機製 …… 190
8.2 鏈路可觀測性 …… 190
8.2.1 Envoy分布式跟蹤支持 …… 190
8.2.2 Envoy Metric支持 …… 194
8.2.3 Envoy Log支持 …… 198
8.3 本章小結 …… 200
第9章 Service Mesh架構的工程化設計 …… 201
9.1 復用和解耦 …… 201
9.2 架構擴展機製 …… 203
9.2.1 服務注冊中心插件機製 …… 203
9.2.2 Envoy Filter插件機製 …… 203
9.3 性能設計 …… 204
9.3.1 基於TLS的無鎖設計 …… 204
9.3.2 多級緩存機製 …… 205
9.3.3 批量更新機製 …… 205
9.4 架構設計的權衡 …… 206
9.5 API和SDK設計 …… 207
9.5.1 聲明式API設計 …… 207
9.5.2 代碼自動生成機製 …… 207
9.6 配置管理 …… 208
9.6.1 基於Protobuf 3的配置Scheme描述 …… 208
9.6.2 配置動態加載機製 …… 210
9.7 本章小結 …… 210
第10章 Service Mesh與雲原生架構 …… 211
10.1 Service Mesh和Serverless …… 211
10.1.1 Serverless基礎 …… 211
10.1.2 Knative …… 213
10.2 東西嚮和南北嚮通信的統一 …… 215
10.3 雲原生時代的Service Mesh …… 216
10.4 Service Mesh現狀和展望 …… 217
10.5 本章小結 …… 218
附錄 Service Mesh遷移的要點與原則 …… 219
· · · · · · (
收起)