Istio 權威指南(下):雲原生服務網格Istio架構與源碼

張超盟//徐中虎//張偉//冷雪著

  • 出版商: 電子工業
  • 出版日期: 2023-04-01
  • 售價: $768
  • 貴賓價: 9.5$730
  • 語言: 簡體中文
  • 頁數: 447
  • 裝訂: 平裝
  • ISBN: 7121453053
  • ISBN-13: 9787121453052
  • 立即出貨

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

商品描述

本書是《Istio權威指南》的下冊,重點講解Istio的架構與源碼,分為架構篇和源碼篇。
 架構篇從架構的視角分別介紹Istio各組件的設計思想、數據模型和核心工作流程。
在Istio 1.16中,Istiod以原有的Pilot為基礎框架構建了包含Pilot、Citadel、Galley等組件的統一控制面。
本書第15、16、17章會分別介紹以上三個組件各自的架構、模型和流程機制;
第18、19、20章依次講解服務網格數據面上Pilot-agent、Envoy和Istio-proxy的架構和流程,
包括三者的結合關係,配合Istio控制面組件實現流量管理功能,特別是Envoy的架構、模型和關鍵流程。
  源碼篇包括第21~26章,和《Istio權威指南(上)》中架構篇的6章對應,分別介紹Istio管理面組件Pilot、Citadel、
Galley與數據面Pilot-agent、Envoy和Istio-proxy的主要代碼結構、代碼流程及關鍵代碼片段。
本篇配合架構篇中每個組件的架構和機制,對Istio重要組件的實現進行了更詳細的講解和剖析,
為讀者深入研讀Istio相關代碼,以及在生產環境中進行相應代碼的調試和修改提供指導。

作者簡介

張超盟
華為雲應用服務網格架構師,擁有15年以上的開發經驗,先後負責過華為雲容器應用運維、微服務平台、雲服務目錄、
雲服務可靠性、服務網格等雲原生產品的架構設計與開發工作,主導過多個重大項目的雲原生和微服務化生產落地。
在服務網格、Kubernetes容器服務、微服務架構、應用性能管理、大數據、DevOps工具等方面有深入的研究與實踐。
Istio社區成員,KubeCon、IstioCon及ServiceMeshCon等會議的演講者,技術圖書作者。
早期曾在中鐵一局從事路橋建設工作。

徐中虎
華為云云原生團隊核心成員,開源技術專家,服務網格Istio核心維護者,Istio社區指導委員會成員,
Kubernetes項目核心貢獻者,批量計算項目Volcano的核心維護者,擁有豐富的開源工作經驗。
主要研究方向有微服務架構、服務網格、容器編排平台Kubernetes和未來的分佈式雲原生架構等。
在分佈式系統的性能優化、高可靠和可擴展方面研究深入、經驗豐富。

張偉
華為雲服務網格數據面資深專家,擁有18年架構設計與開發經驗,
先後就職於億陽信通、加拿大北電網絡(中國)、甲骨文、Polycom、阿里巴巴及華為等公司。
作為核心開發人員開發過傳輸網管系統、Tuxedo交易中間件、ts-server多媒體轉碼服務、GTS高性能事務雲服務、
sc高性能註冊中心、ASM數據面等多個產品,現主要負責華為雲ASM 11服務網格數據面代理產品的設計與開發工作。

冷雪
西安電子科技大學杭州研究院菁英副教授,浙江大學工學博士。
主要研究方向有云原生安全、性能優化和智能運維等,致力於解決云網環境下的關鍵問題。
曾參與並主持多項科研項目,在國際頂級會議和期刊上發表多篇論文並獲得多項授權專利。

目錄大綱

架構篇

第15章Pilot的架構 2
15.1 Pilot的基本架構 2
15.1.1 Istio的服務模型 4
15.1.2 xDS協議 6
15.2 Pilot的原理12
15.2.1 xDS服務器13
15.2.2 服務發現24
15.2.3 配置規則發現29
15.2.4 xDS的生成和分發35
15.3 安全插件42
15.3.1 認證插件43
15.3.2 授權插件46
15.4 Pilot的關鍵設計48
15.4.1 三級緩存模型48
15.4.2 去抖動分發50
15.4.3 防過度分發51
15.4.4 增量EDS 51
15.4.5 資源隔離53
15.4.6 自動管理虛擬機工作負載54
15.5 本章小結55

第16章Citadel的架構56
16.1 Istio的證書和身份管理56
16.2 Citadel的基本架構59
16.3 Citadel的核心原理60
16.3.1 核心組件的初始化61
16.3.2 CA服務器62
16.3.3 證書籤發63
16.3.4 證書輪轉器65
16.4 本章小結67

第17章Galley的架構68
17.1 簡化的Galley 68
17.2 Galley的整體架構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 本章小結79

第18章Pilot-agent的架構80
18.1 Pilot-agent的用途81
18.2 Pilot-agent的核心架構81
18.3 Pilot-agent的原理83
18.3.1 Envoy的啟動84
18.3.2 優雅退出85
18.3.3 xDS代理87
18.3.4 證書管理90
18.3.5 DNS服務器91
18.3.6 應用健康檢查92
18.4 本章小結93

第19章Envoy的架構94
19.1 Envoy的整體架構95
19.1.1 Envoy的內部架構96
19.1.2 Envoy的通信架構100
19.2 Envoy的內存管理110
19.2.1 堆內存管理110
19.2.2 Buffer管理111
19.3 Envoy過濾器的架構114
19.3.1 過濾器的註冊115
19.3.2 過濾器的回調方法117
19.3.3 過濾器的掛起與恢復118
19.4 Envoy的初始化流程119
19.4.1 靜態配置120
19.4.2 動態配置121
19.4.3 Envoy的創建及初始化流程124
19.4.4 Envoy的運行流程128
19.4.5 目標服務Cluster的創建129
19.4.6 監聽器的創建131
19.5 Envoy的網絡及線程模型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的請求及響應數據處理流程145
19.8.1 對下游請求數據的接收及處理146
19.8.2 對上游請求數據的處理及發送149
19.8.3 對上游響應數據的接收及發送151
19.9 xDS的原理及工作流程153
19.10 安全證書處理155
19.11 WASM虛擬機的原理158
19.12 本章小結161

第20章Istio-proxy的架構162
20.1 Istio-proxy的基本架構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 本章小結173

源碼篇

第21章Pilot源碼解析175
21.1 啟動流程175
21.2 關鍵代碼解析177
21.2.1 ConfigController 178
21.2.2 ServiceController 186
21.2.3 xDS的異步分發194
21.2.4 對xDS更新的預處理202
21.2.5 xDS配置的生成及分發208
21.3 本章小結211

第22章Citadel源碼解析212
22.1 啟動流程212
22.1.1 Istio CA的創建213
22.1.2 SDS服務器的初始化214
22.1.3 Istio CA的啟動215
22.2 關鍵代碼解析216
22.2.1 CA 服務器的核心原理216
22.2.2 證書籤發實體IstioCA 218
22.2.3 CredentialsController的創建和核心原理222
22.3 本章小結224

第23章Galley源碼解析225
23.1 啟動流程225
23.1.1 Galley WebhookServer的初始化226
23.1.2 ValidatingWebhookConfiguration控制器的初始化226
23.2 關鍵代碼解析228
23.2.1 配置校驗228
23.2.2 Validating控制器的實現232
23.3 本章小結235

第24章Pilot-agent源碼解析236
24.1 整體架構236
24.2 啟動及監控238
24.3 xDS轉發服務243
24.4 SDS證書服務248
24.5 健康檢查255
24.5.1 應用容器的LivenessProbe探測255
24.5.2 應用容器的ReadinessProbe探測257
24.5.3 Envoy進程的ReadinessProbe探測258
24.5.4 Pilot-agent進程的LivenessProbe探測262
24.6 本章小結265

第25章Envoy源碼解析266
25.1 Envoy的初始化266
25.1.1 啟動參數bootstrap的初始化267
25.1.2 初始化觀測指標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內存延遲析構279
25.1.8 CDS的初始化283
25.1.9 LDS的初始化286
25.1.10 初始化觀測管理系統287
25.1.11 啟動Stats定期刷新292
25.1.12 GuardDog的初始化292
25.2 熱重啟的流程296
25.3 Envoy的運行和連接創建298
25.3.1 啟動Worker工作線程299
25.3.2 監聽器的加載301
25.3.3 接收連接304
25.4 Envoy接收及處理數據309
25.4.1 讀取數據310
25.4.2 接收數據311
25.4.3 處理數據312
25.5 Envoy發送數據到服務端317
25.5.1 路由匹配317
25.5.2 獲取連接池320
25.5.3 創建上游請求325
25.6 Envoy收到服務端響應333
25.6.1 接收響應數據333
25.6.2 發送響應數據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 遙測元數據存儲352
25.8.1 創建遙測元數據352
25.8.2 收集Stats觀測數據360
25.8.3 定義靜態指標361
25.9 WASM擴展363
25.9.1 WASM虛擬機的啟動363
25.9.2 WASM虛擬機的運行374
25.10 本章小結387

第26章Istio-proxy源碼解析388
26.1 metadata_exchange 388
26.2 遙測數據Stats的上報395
26.3 源碼地址406
26.4 本章小結408

附錄A 源碼倉庫介紹409
附錄B 實踐問題總結416
附錄C 服務網格術語表432