Istio權(quán)威指南(下):云原生服務(wù)網(wǎng)格Istio架構(gòu)與源碼
定 價:128 元
叢書名:華為云原生技術(shù)叢書
- 作者:張超盟 等
- 出版時間:2023/4/1
- ISBN:9787121453052
- 出 版 社:電子工業(yè)出版社
- 中圖法分類:TP368.5-62
- 頁碼:468
- 紙張:
- 版次:01
- 開本:16開
本書是《Istio權(quán)威指南》的下冊,重點講解Istio的架構(gòu)與源碼,分為架構(gòu)篇和源碼篇。 架構(gòu)篇從架構(gòu)的視角分別介紹Istio各組件的設(shè)計思想、數(shù)據(jù)模型和核心工作流程。在Istio 1.16中,Istiod以原有的Pilot為基礎(chǔ)框架構(gòu)建了包含Pilot、Citadel、Galley等組件的統(tǒng)一控制面。本書第15、16、17章會分別介紹以上三個組件各自的架構(gòu)、模型和流程機制;第18、19、20章依次講解服務(wù)網(wǎng)格數(shù)據(jù)面上Pilot-agent、Envoy和Istio-proxy的架構(gòu)和流程,包括三者的結(jié)合關(guān)系,配合Istio控制面組件實現(xiàn)流量管理功能,特別是Envoy的架構(gòu)、模型和關(guān)鍵流程。 源碼篇包括第21~26章,和《Istio權(quán)威指南(上)》中架構(gòu)篇的6章對應(yīng),分別介紹Istio管理面組件Pilot、Citadel、Galley與數(shù)據(jù)面Pilot-agent、Envoy和Istio-proxy的主要代碼結(jié)構(gòu)、代碼流程及關(guān)鍵代碼片段。本篇配合架構(gòu)篇中每個組件的架構(gòu)和機制,對Istio重要組件的實現(xiàn)進行了更詳細的講解和剖析,為讀者深入研讀Istio相關(guān)代碼,以及在生產(chǎn)環(huán)境中進行相應(yīng)代碼的調(diào)試和修改提供指導(dǎo)。
張超盟華為云應(yīng)用服務(wù)網(wǎng)格首席架構(gòu)師,開源技術(shù)愛好者,Istio社區(qū)成員,KubeCon、IstioCon及ServiceMeshCon等會議的演講者,技術(shù)圖書作者。擁有15年以上的開發(fā)經(jīng)驗,先后負責(zé)過華為云容器應(yīng)用運維、微服務(wù)平臺、云服務(wù)目錄、云服務(wù)可靠性、服務(wù)網(wǎng)格等云原生產(chǎn)品的架構(gòu)設(shè)計與開發(fā)工作,主導(dǎo)過多個重大項目的云原生和微服務(wù)化生產(chǎn)落地。在服務(wù)網(wǎng)格、Kubernetes容器服務(wù)、微服務(wù)架構(gòu)、應(yīng)用網(wǎng)絡(luò)、應(yīng)用性能管理、大數(shù)據(jù)、中間件及DevOps工具等方面有深入的研究與實踐。早期曾在中鐵一局從事路橋建設(shè)工作。徐中虎開源技術(shù)專家,華為云云原生團隊核心成員,開源技術(shù)愛好者,服務(wù)網(wǎng)格Istio核心Maintainer,Istio社區(qū)指導(dǎo)委員會成員,Kubernetes項目核心貢獻者,批量計算項目Volcano的核心Maintainer,擁有豐富的開源工作經(jīng)驗。主要研究方向有微服務(wù)架構(gòu)、服務(wù)網(wǎng)格、容器編排平臺Kubernetes和未來的分布式云原生架構(gòu)等。在分布式系統(tǒng)的性能優(yōu)化、高可靠和可擴展方面研究深入、經(jīng)驗豐富。張偉擁有18年架構(gòu)設(shè)計與開發(fā)經(jīng)驗,先后就職于億陽信通、加拿大北電網(wǎng)絡(luò)(中國)、甲骨文、Polycom、阿里巴巴及華為等公司。作為核心開發(fā)人員開發(fā)過傳輸網(wǎng)管系統(tǒng)、Tuxedo交易中間件、ts-server多媒體轉(zhuǎn)碼服務(wù)、GTS高性能事務(wù)云服務(wù)、sc高性能注冊中心、ASM數(shù)據(jù)面等多個產(chǎn)品,現(xiàn)主要負責(zé)華為云ASM服務(wù)網(wǎng)格數(shù)據(jù)面代理產(chǎn)品的設(shè)計與開發(fā)工作。冷雪西安電子科技大學(xué)杭州研究院菁英副教授,浙江大學(xué)博士。主要研究方向有云原生性能優(yōu)化、智能運維、安全性與可靠性增強等。曾就職于華為云,主導(dǎo)了服務(wù)網(wǎng)格項目中性能優(yōu)化與智能運維相關(guān)的落地與實施工作。
架 構(gòu) 篇
第15章 Pilot的架構(gòu) 2
15.1 Pilot的基本架構(gòu) 2
15.1.1 Istio的服務(wù)模型 4
15.1.2 xDS協(xié)議 6
15.2 Pilot的原理 12
15.2.1 xDS服務(wù)器 13
15.2.2 服務(wù)發(fā)現(xiàn) 24
15.2.3 配置規(guī)則發(fā)現(xiàn) 29
15.2.4 xDS的生成和分發(fā) 35
15.3 安全插件 42
15.3.1 認證插件 43
15.3.2 授權(quán)插件 46
15.4 Pilot的關(guān)鍵設(shè)計 48
15.4.1 三級緩存模型 48
15.4.2 去抖動分發(fā) 50
15.4.3 防過度分發(fā) 51
15.4.4 增量EDS 51
15.4.5 資源隔離 53
15.4.6 自動管理虛擬機工作負載 54
15.5 本章小結(jié) 55
第16章 Citadel的架構(gòu) 56
16.1 Istio的證書和身份管理 56
16.2 Citadel的基本架構(gòu) 59
16.3 Citadel的核心原理 60
16.3.1 核心組件的初始化 61
16.3.2 CA服務(wù)器 62
16.3.3 證書簽發(fā) 63
16.3.4 證書輪轉(zhuǎn)器 65
16.4 本章小結(jié) 67
第17章 Galley的架構(gòu) 68
17.1 簡化的Galley 68
17.2 Galley的整體架構(gòu) 69
17.2.1 早期的MCP 70
17.2.2 基于xDS的MCP 72
17.3 Galley的核心工作原理 72
17.3.1 啟動初始化 72
17.3.2 API校驗 75
17.3.3 對API配置的管理 78
17.4 本章小結(jié) 79
第18章 Pilot-agent的架構(gòu) 80
18.1 Pilot-agent的用途 81
18.2 Pilot-agent的核心架構(gòu) 82
18.3 Pilot-agent的原理 84
18.3.1 Envoy的啟動 84
18.3.2 優(yōu)雅退出 85
18.3.3 xDS代理 87
18.3.4 證書管理 90
18.3.5 DNS服務(wù)器 91
18.3.6 應(yīng)用健康檢查 92
18.4 本章小結(jié) 93
第19章 Envoy的架構(gòu) 94
19.1 Envoy的整體架構(gòu) 95
19.1.1 Envoy的內(nèi)部架構(gòu) 96
19.1.2 Envoy的通信架構(gòu) 100
19.2 Envoy的內(nèi)存管理 110
19.2.1 堆內(nèi)存管理 110
19.2.2 Buffer管理 111
19.3 Envoy過濾器的架構(gòu) 114
19.3.1 過濾器的注冊 115
19.3.2 過濾器的回調(diào)方法 117
19.3.3 過濾器的掛起與恢復(fù) 118
19.4 Envoy的初始化流程 119
19.4.1 靜態(tài)配置 120
19.4.2 動態(tài)配置 121
19.4.3 Envoy的創(chuàng)建及初始化流程 124
19.4.4 Envoy的運行流程 128
19.4.5 目標(biāo)服務(wù)Cluster的創(chuàng)建 129
19.4.6 監(jiān)聽器的創(chuàng)建 131
19.5 Envoy的網(wǎng)絡(luò)及線程模型 133
19.5.1 Server主線程 134
19.5.2 Accesslog線程 136
19.5.3 工作線程 138
19.5.4 GuardDog線程 139
19.5.5 線程間的同步 139
19.6 Envoy的熱升級流程 141
19.7 Envoy的新連接處理流程 144
19.8 Envoy的請求及響應(yīng)數(shù)據(jù)處理流程 145
19.8.1 對下游請求數(shù)據(jù)的接收及處理 146
19.8.2 對上游請求數(shù)據(jù)的處理及發(fā)送 149
19.8.3 對上游響應(yīng)數(shù)據(jù)的接收及發(fā)送 151
19.9 xDS的原理及工作流程 152
19.10 安全證書處理 155
19.11 WASM虛擬機的原理 158
19.12 本章小結(jié) 161
第20章 Istio-proxy的架構(gòu) 162
20.1 Istio-proxy的基本架構(gòu) 162
20.2 Istio-proxy的原理 163
20.2.1 Istio-proxy的整體工作流程 163
20.2.2 L4 metadata_exchange的工作流程 164
20.2.3 L7 metadata_exchange擴展的工作流程 169
20.2.4 Stats的工作流程 170
20.3 本章小結(jié) 173
源 碼 篇
第21章 Pilot源碼解析 175
21.1 啟動流程 175
21.2 關(guān)鍵代碼解析 177
21.2.1 ConfigController 178
21.2.2 ServiceController 186
21.2.3 xDS的異步分發(fā) 194
21.2.4 對xDS更新的預(yù)處理 202
21.2.5 xDS配置的生成及分發(fā) 208
21.3 本章小結(jié) 211
第22章 Citadel源碼解析 212
22.1 啟動流程 212
22.1.1 Istio CA的創(chuàng)建 213
22.1.2 SDS服務(wù)器的初始化 214
22.1.3 Istio CA的啟動 215
22.2 關(guān)鍵代碼解析 216
22.2.1 CA 服務(wù)器的核心原理 216
22.2.2 證書簽發(fā)實體IstioCA 218
22.2.3 CredentialsController的創(chuàng)建和核心原理 222
22.3 本章小結(jié) 224
第23章 Galley源碼解析 225
23.1 啟動流程 225
23.1.1 Galley WebhookServer的初始化 226
23.1.2 ValidatingWebhookConfiguration控制器的初始化 226
23.2 關(guān)鍵代碼解析 228
23.2.1 配置校驗 228
23.2.2 Validating控制器的實現(xiàn) 232
23.3 本章小結(jié) 235
第24章 Pilot-agent源碼解析 236
24.1 整體架構(gòu) 236
24.2 啟動及監(jiān)控 238
24.3 xDS轉(zhuǎn)發(fā)服務(wù) 243
24.4 SDS證書服務(wù) 248
24.5 健康檢查 255
24.5.1 應(yīng)用容器的LivenessProbe探測 255
24.5.2 應(yīng)用容器的ReadinessProbe探測 257
24.5.3 Envoy進程的ReadinessProbe探測 258
24.5.4 Pilot-agent進程的LivenessProbe探測 262
24.6 本章小結(jié) 265
第25章 Envoy源碼解析 266
25.1 Envoy的初始化 266
25.1.1 啟動參數(shù)bootstrap的初始化 267
25.1.2 初始化觀測指標(biāo) 268
25.1.3 過濾器注冊及信息補齊 269
25.1.4 Envoy自身信息解析 273
25.1.5 Admin API的初始化 273
25.1.6 Worker的初始化 276
25.1.7 Dispatcher內(nèi)存延遲析構(gòu) 279
25.1.8 CDS的初始化 283
25.1.9 LDS的初始化 286
25.1.10 初始化觀測管理系統(tǒng) 287
25.1.11 啟動Stats定期刷新 292
25.1.12 GuardDog的初始化 292
25.2 熱重啟的流程 296
25.3 Envoy的運行和連接創(chuàng)建 298
25.3.1 啟動Worker工作線程 299
25.3.2 監(jiān)聽器的加載 301
25.3.3 接收連接 304
25.4 Envoy接收及處理數(shù)據(jù) 309
25.4.1 讀取數(shù)據(jù) 310
25.4.2 接收數(shù)據(jù) 311
25.4.3 處理數(shù)據(jù) 312
25.5 Envoy發(fā)送數(shù)據(jù)到服務(wù)端 317
25.5.1 路由匹配 317
25.5.2 獲取連接池 320
25.5.3 創(chuàng)建上游請求 325
25.6 Envoy收到服務(wù)端響應(yīng) 333
25.6.1 接收響應(yīng)數(shù)據(jù) 333
25.6.2 發(fā)送響應(yīng)數(shù)據(jù) 335
25.7 xDS流程解析 337
25.7.1 xDS公共訂閱 337
25.7.2 xDS推送 342
25.7.3 LDS更新 343
25.7.4 SDS訂閱 350
25.8 遙測元數(shù)據(jù)存儲 352
25.8.1 創(chuàng)建遙測元數(shù)據(jù) 352
25.8.2 收集Stats觀測數(shù)據(jù) 360
25.8.3 定義靜態(tài)指標(biāo) 361
25.9 WASM擴展 363
25.9.1 WASM虛擬機的啟動 363
25.9.2 WASM虛擬機的運行 374
25.10 本章小結(jié) 387
第26章 Istio-proxy源碼解析 388
26.1 metadata_exchange 388
26.2 遙測數(shù)據(jù)Stats的上報 395
26.3 源碼地址 406
26.4 本章小結(jié) 408
結(jié) 語 409