Service Mesh微服務架構設計

劉俊海 著

下單後立即進貨 (約4週~6週)

買這商品的人也買了...

商品描述

資深架構師撰寫,從設計與工程化視角分析Service Mesh,穿插大量一線實踐真知灼見,涵蓋微服務實施細則、Istio/Envoy的架構設計與實現、Service Mesh工程化設計思想與發展趨勢等。本書分為兩篇,共計10章內容。
基礎篇(第1~3章),著重講解微服務架構和治理,以及Service Mesh技術當前的現狀。
本篇幫讀者釐清微服務架構的實施前準備,實施風險與痛點/難點問題,並引出應對微服務通信與服務治理問題的方案——Service Mesh,闡述Service Mesh生態的各個方面,包括Service Mesh的價值與企業需求的內在動因。
架構篇(第4~10章),深入剖析Service Mesh主流方案Istio/Envoy在架構設計層面的原理和實現,以及Service Mesh技術展望。其中第4~7章為重點章節,建議讀者認真研讀與實踐。
第4章詳細分析Envoy的整體架構,並就架構設計層面與Nginx進行全方位對比分析。
第5章分析Istio的整體架構以及各個組件的功能和設計。
第6~7章分別從控制流與數據流的角度,分析請求的處理策略與配置以及在整個Service Mesh中的流向和處理。
後續章節分別討論Istio的服務治理(聚焦可觀測性、鏈路治理),Service Mesh的架構思想的工程化應用,以及Service Mesh技術在雲原生架構下的發展暢想。

微服務近幾年一直是架構領域的技術熱點,但是從來就沒有“銀彈”。微服務帶來各種便利的同時,也導致服務間通信面臨服務發現、連接管理、流量控制、通信安全、熔斷降級等諸多問題,因此Service Mesh應運而生。Service Mesh作為一套標準化的微服務通信和服務治理解決方案,可以:
屏蔽不同語言、不同技術棧的差異;
將復雜的通信需求與業務代碼解耦;
對業務透明,讓業務人員可以聚焦功能需求。

打開本書,開啟一場別開生面的Service Mesh之旅!
本書以微服務架構演進為視角徐徐展開,鏡頭掃過微服務實施相關的各種關鍵節點,接下來看到的是微服務治理和Service Mesh,以更開闊的視角呈現;隨鏡頭拉近,我們看到了Istio/Envoy架構、控制流設計、微服務治理的各種細節;鏡頭再次拉高,我們看到了Service Mesh的工程化和雲原生環境下與各種技術的協作關系。至此,一次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 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