內容簡介
全書分為3部分:第一部分是基礎篇,首先從
微服務架構的挑戰講起,接下來剖析service mesh產生的背景,service mesh當前的現狀以及主流的一些開源項目。第二部分是實戰篇,深入講解如何從零開始構建一個生產環境可用的service mesh系統,包含技術選型、架構設計和技術難度深入分析等。其中高性能、高可用、高擴展性方面的一些設計和考量都會深入闡述。第三部分是套用篇,實例分析service mesh對服務治理帶來的便利和影響。
通過閱讀本書,讀者不僅能深入了解service mesh對微服務領域的影響,而且還可以了解service mesh架構和設計的全過程,全書也包含高性能、高可用、高擴展性、服務治理等多個重要主題。
作者簡介
劉俊海,高級架構師,曾在滴滴、百度等知名網際網路公司任職,超過8年C/C++開發和架構設計經驗;精通服務框架和業務高可用技術,多年億級流量環境下高並發和高可用實戰經驗,精通微服務架構和微服務基礎設施,近期關注Service Mesh。
圖書目錄
前言
第一篇 基 礎 篇
第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.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