第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
· · · · · · (
收起)