第1 章 分布式發展史 ............................................................................................... 1
1.1 單機小型機時期 ......................................................................................................... 1
1.1.1 互聯網的誕生................................................................................................. 2
1.1.2 復雜應用拆分................................................................................................. 3
1.1.3 遭遇性能問題................................................................................................. 3
1.2 集群化時期 ................................................................................................................. 4
1.2.1 從高端設備到普通PC ................................................................................... 4
1.2.2 硬件負載均衡設備 ......................................................................................... 5
1.2.3 資源配置問題................................................................................................. 5
1.2.4 積少成多的優勢 ............................................................................................. 6
1.2.5 集群化架構 .................................................................................................... 6
1.2.6 軟件負載設備................................................................................................. 7
1.3 服務化時期 ................................................................................................................. 8
1.3.1 應用到服務 .................................................................................................... 8
1.3.2 遠程調用 ........................................................................................................ 8
1.3.3 虛擬IP 地址 ................................................................................................... 9
1.3.4 復雜的調用關係 ........................................................................................... 10
1.3.5 服務治理 ...................................................................................................... 11
1.3.6 旁路負載 ...................................................................................................... 12
1.4 微服務時期 ............................................................................................................... 13
1.4.1 服務細化 ...................................................................................................... 13
1.4.2 架構輕量化 .................................................................................................. 14
1.5 服務網格(Service Mesh)新時期 ......................................................................... 15
1.5.1 多語言的睏難............................................................................................... 15
1.5.2 指數級增加的係統復雜度 ........................................................................... 15
1.5.3 Linkerd 誕生 ................................................................................................ 16
1.5.4 第一代服務網格架構 ................................................................................... 17
1.5.5 第二代服務網格架構 ................................................................................... 18
1.5.6 生産應用情況............................................................................................... 19
1.6 本章小結 ................................................................................................................... 20
第2 章 Service Mesh:以Istio 為例 ...................................................................... 21
2.1 Istio 的設計理念 ...................................................................................................... 21
2.1.1 Istio 的誕生背景 ......................................................................................... 22
2.1.2 控製一切的兩個平麵 ................................................................................... 23
2.1.3 接口與平颱化............................................................................................... 24
2.1.4 中心化與分散化的抉擇 ............................................................................... 25
2.2 數據平麵 ................................................................................................................... 27
2.2.1 xDS-API ........................................................................................................ 27
2.2.2 服務負載及流量控製 ................................................................................... 28
2.2.3 入口與齣口網關 ........................................................................................... 31
2.2.4 故障應急機製............................................................................................... 32
2.2.5 故障注入 ...................................................................................................... 32
2.3 控製平麵 ................................................................................................................... 33
2.3.1 Pilot 結構及功能 ......................................................................................... 33
2.3.2 Mixer 結構及功能 ....................................................................................... 34
2.3.3 穩定性與容災能力 ....................................................................................... 37
2.3.4 請求屬性(Attribute) ................................................................................ 37
2.3.5 操作配置(Operator Config) .................................................................... 38
2.4 安全控製 ................................................................................................................... 40
2.4.1 Citadel 結構及功能 ..................................................................................... 42
2.4.2 Istio 身份(Identity) ................................................................................. 42
2.4.3 認證(Authentication) ............................................................................... 43
2.4.4 鑒權(Authorization) ................................................................................ 44
2.5 Hello, Istio! ............................................................................................................... 45
2.5.1 安裝 Docker ................................................................................................. 45
2.5.2 安裝 Kubernetes .......................................................................................... 47
2.5.3 初始化 Master 節點 ................................................................................... 48
2.5.4 配置 weave 網絡插件 ................................................................................ 49
2.5.5 安裝 Istio ..................................................................................................... 49
2.5.6 嚮 Istio 部署第一個應用 ............................................................................ 50
2.5.7 部署 BookInfo 係統 ................................................................................... 51
2.6 動手體驗Istio ........................................................................................................... 53
2.6.1 幾個基本概念............................................................................................... 53
2.6.2 體驗1:按版本路由 .................................................................................... 55
2.6.3 體驗2:按權重分流 .................................................................................... 56
2.7 BookInfo 示例分析 ................................................................................................. 57
2.7.1 IngressGateway ............................................................................................. 57
2.7.2 IngressGateway 配置 .................................................................................... 58
2.7.3 Sidecar 路由配置 ......................................................................................... 59
2.8 本章小結 ................................................................................................................... 62
第3 章 理解Istio 服務網格 .................................................................................... 65
3.1 Kubernetes 服務組網原理 ....................................................................................... 65
3.1.1 四層服務部署結構 ....................................................................................... 66
3.1.2 Node 內部流量路由 .................................................................................... 67
3.1.3 Pause 容器 ................................................................................................... 69
3.1.4 節點間通信接口CNI ................................................................................... 72
3.1.5 服務發現與 DNS ......................................................................................... 74
3.2 Sidecar 流量接管原理 ............................................................................................. 76
3.2.1 Sidecar 注入方式 ......................................................................................... 76
3.2.2 優雅的容器調試方式 ................................................................................... 78
3.2.3 Sidecar 流量劫持配置 ................................................................................. 79
3.3 Istio 服務組網 ........................................................................................................... 81
3.3.1 鏈路優勢總結............................................................................................... 81
3.3.2 服務傳輸路徑全覽 ....................................................................................... 82
3.4 組建零信任安全網絡(Zero Trust Network) ....................................................... 83
3.4.1 點對點的安全傳輸 ....................................................................................... 84
3.4.2 身份認證(Authentication) ....................................................................... 86
3.4.3 安全命名(Secure Naming) ...................................................................... 89
3.4.4 服務鑒權(Authorization) ........................................................................ 89
3.4.5 啓用Istio 服務網格安全 .............................................................................. 91
3.5 Istio 的擴展設計 ...................................................................................................... 96
3.5.1 Sidecar 對接適配 ......................................................................................... 96
3.5.2 平颱適配 .................................................................................................... 100
3.5.3 擴展模闆(Template) .............................................................................. 104
3.6 本章小結 ................................................................................................................. 108
第4 章 Istio 周邊生態一覽 ................................................................................... 109
4.1 鏈路跟蹤 Jaeger/Zipkin ......................................................................................... 110
4.1.1 鏈路跟蹤誕生的前因後果 ......................................................................... 110
4.1.2 Jaeger 能做什麼 ........................................................................................ 110
4.1.3 如何在 Istio 中使用 Jaeger ..................................................................... 112
4.1.4 使用 Trace ID 來查詢跟蹤信息 ............................................................... 115
4.2 分布式監控 Prometheus ........................................................................................ 117
4.2.1 監控需求的由來及現狀 ............................................................................. 117
4.2.2 Prometheus 的功能及特點 ........................................................................ 118
4.2.3 Prometheus 架構簡介 ................................................................................ 118
4.2.4 如何在 Istio 中使用 Prometheus ............................................................. 120
4.2.5 配置監控報警來實時掌握應用狀態 ......................................................... 124
4.3 監控大盤 Grafana .................................................................................................. 129
4.3.1 什麼是 Grafana .......................................................................................... 129
4.3.2 如何在 Istio 中使用 Grafana ................................................................... 130
4.3.3 生成新的 Grafana 儀錶盤 ........................................................................ 132
4.3.4 配置 Grafana 報警通道 ............................................................................ 135
4.4 分布式日誌 Fluentd............................................................................................... 137
4.4.1 什麼是 Fluentd .......................................................................................... 137
4.4.2 如何在 Istio 中使用 Fluentd ................................................................... 139
4.4.3 在 Kibana 中查看日誌 ............................................................................. 147
4.4.4 Elasticsearch 映射配置 .............................................................................. 149
4.5 服務圖譜 ................................................................................................................. 156
4.6 本章小結 ................................................................................................................. 157
第5 章 Istio 部分源碼剖析 ................................................................................... 159
5.1 Sidecar(Envoy)源碼分析 .................................................................................. 160
5.1.1 準備編輯器 ................................................................................................ 160
5.1.2 編譯Envoy 調試版本 ................................................................................ 161
5.1.3 配置 Envoy 調試環境 .............................................................................. 162
5.1.4 整體架構 .................................................................................................... 168
5.1.5 過濾鏈與 HTTP 代理 ............................................................................... 171
5.1.6 xDS 相關邏輯 ............................................................................................ 182
5.2 Pilot 源碼分析 ........................................................................................................ 187
5.2.1 Go 語言簡介 .............................................................................................. 187
5.2.2 編譯 Istio 調試版本 ................................................................................. 188
5.2.3 配置 Istio 調試環境 ................................................................................. 192
5.2.4 用單元測試快速調試 ................................................................................. 195
5.2.5 如何進行啓動調試 ..................................................................................... 196
5.2.6 Pilot 初始化與平颱對接 ........................................................................... 198
5.2.7 模型數據映射及CRD 監聽 ..................................................................... 203
5.2.8 Envoy xDS 對接服務 ................................................................................ 206
5.3 Mixer 源碼分析 ..................................................................................................... 211
5.3.1 Mixer 初始化邏輯 ..................................................................................... 213
5.3.2 前置檢查邏輯詳解 ..................................................................................... 217
5.3.3 適配器數據流及模闆原理 ......................................................................... 223
5.3.4 緩存原理與實現 ......................................................................................... 233
5.4 本章小結 ................................................................................................................. 244
第6 章 服務網格企業實踐 .................................................................................... 245
6.1 升級,值得嗎 ......................................................................................................... 246
6.1.1 升級服務網格的基本要求 ......................................................................... 246
6.1.2 如何評估是否需要升級 ............................................................................. 247
6.2 從架構上考慮的問題 ............................................................................................. 248
6.2.1 當前係統所處的狀態 ................................................................................. 248
6.2.2 遷移中需要考慮的幾點 ............................................................................. 249
6.3 螞蟻金服SOFAMesh 簡介 .................................................................................... 251
6.3.1 項目組成 .................................................................................................... 251
6.3.2 特色功能 .................................................................................................... 252
6.4 螞蟻金服漸近式遷移最佳實踐 ............................................................................. 253
6.4.1 製定總體路綫............................................................................................. 253
6.4.2 保證遷移前後服務網絡互通 ..................................................................... 256
6.4.3 透明攔截帶來的彈性升級 ......................................................................... 256
6.4.4 遺留架構在遷移過程中的問題 ................................................................. 257
6.5 本章小結 ................................................................................................................. 260
第7 章 結語及附錄 .............................................................................................. 261
7.1 服務網格在整體架構中的定位 ............................................................................. 261
7.1.1 現代軟負載應具備的功能 ......................................................................... 261
7.1.2 服務網格在係統技術棧中的定位 ............................................................. 262
7.2 軟負載發展方嚮與未來 ......................................................................................... 263
7.2.1 技術發展的本質 ......................................................................................... 263
7.2.2 再談軟負載的發展 ..................................................................................... 264
7.3 附錄——A-Mixer 所有的支持屬性值 .................................................................. 266
7.4 引用目錄 ................................................................................................................. 266
· · · · · · (
收起)