1. 服务网格与 Envoy 概述

1.1 服务网格架构演进

服务网格(Service Mesh)是云原生时代处理服务间通信的基础设施层。其架构演进经历了三个阶段:

阶段 架构特征 代表技术 核心痛点
第一阶段 通信逻辑内嵌于应用代码(熔断、重试、超时) Spring Cloud、Netflix OSS 语言绑定、升级困难、重复造轮子
第二阶段 独立代理库(Sidecar 雏形) SmartStack、Finagle 运维复杂、代理性能瓶颈
第三阶段 Sidecar 代理 + 集中控制面 Istio + Envoy、Linkerd 数据面性能调优、控制面规模扩展

当前主流架构以 Sidecar 代理模式为核心:每个服务实例旁挂一个轻量级代理,所有进出流量均经过该代理,由代理执行路由、负载均衡、熔断、观测等逻辑。应用代码只需关注业务逻辑,彻底与网络通信解耦。

关键演进驱动力:微服务规模从数十增长到数千,传统 SDK 模式无法满足多语言、多版本、动态路由和细粒度可观测性的需求。服务网格将通信能力下沉为平台层,实现了基础设施与业务逻辑的完全分离。

1.2 Envoy 在 Istio 中的角色

Envoy 是 Istio 的 默认数据平面代理,承担了所有服务间流量的拦截、转发和治理职责。在 Istio 架构中,Envoy 扮演以下核心角色:

  • 流量拦截器:通过 iptables 规则透明拦截 Pod 内所有入站和出站流量,无需修改应用代码。
  • 协议处理器:原生支持 HTTP/1.1、HTTP/2、gRPC、TCP、WebSocket 等多种协议,并提供协议转换能力。
  • 负载均衡器:内置加权轮询、最少请求、一致性哈希、磁悬浮等负载均衡算法,支持主动/被动健康检查。
  • 熔断与重试引擎:基于集群级别的熔断阈值(连接数、请求数、异常比例)和精细化的重试策略。
  • 可观测性采集器:自动生成全量访问日志、分布式追踪 Span 和 Prometheus 指标,无需额外埋点。
  • 安全执行点:实现 mTLS 加密、RBAC 鉴权、JWT 验证等安全策略,所有策略在代理层强制生效。
Envoy 与 Istio 的分工:Envoy 负责执行(数据面),Istiod 负责决策(控制面)。Envoy 通过 xDS 协议(LDS、RDS、CDS、EDS、SDS)从 Istiod 动态获取配置,实现零停机配置更新。

1.3 Envoy 数据平面与控制平面分离原理

Envoy 架构的核心设计哲学是 数据平面与控制平面严格分离。这种分离带来了极高的性能和灵活性。

数据平面:由 Envoy 代理进程组成,直接处理用户流量。每个 Envoy 实例包含以下关键组件:

  • Listener(监听器):绑定端口,接收入站连接。
  • Filter Chain(过滤器链):按顺序执行协议解析、路由匹配、流量镜像、RBAC 等操作。
  • Cluster(集群):定义上游服务端点集合及负载均衡策略。
  • Endpoint(端点):具体的后端实例 IP:Port。

控制平面:负责生成和下发配置,不参与数据路径。在 Istio 中,控制平面由 Istiod 组件实现,它聚合服务注册信息、用户策略和网格配置,通过 xDS 协议将配置推送给所有 Envoy 实例。

Envoy 数据平面与控制平面分离架构 控制平面(Control Plane) Istiod(聚合服务注册 + 策略 + 配置) xDS 协议(LDS / RDS / CDS / EDS / SDS) 数据平面(Data Plane) Envoy Sidecar A Listener(监听器 :8080) Filter Chain(路由/鉴权) Cluster(上游集群) Endpoint(10.0.1.2:80) Envoy Sidecar B Listener(监听器 :8080) Filter Chain(路由/鉴权) Cluster(上游集群) Endpoint(10.0.2.3:80) 应用容器 业务代码(无网络逻辑) 只关心业务逻辑 localhost 通信 分离优势 • 控制面故障不影响数据面 • 数据面可独立热升级 • 策略变更无需重启应用

Envoy 通过 xDS 协议族实现与控制平面的动态配置同步。每个 xDS 对应一种资源类型:

xDS 类型 全称 下发内容 更新频率
LDS Listener Discovery Service 监听器配置(端口、协议、过滤器链) 低(服务暴露变更时)
RDS Route Discovery Service 路由规则(域名、路径匹配、流量拆分) 中(路由策略变更时)
CDS Cluster Discovery Service 集群配置(负载均衡算法、熔断阈值) 中(集群定义变更时)
EDS Endpoint Discovery Service 端点列表(IP:Port、健康状态、权重) 高(Pod 扩缩容时)
SDS Secret Discovery Service TLS 证书、私钥 低(证书轮换时)
性能关键点:在大型网格中(数千 Sidecar),EDS 的更新频率最高。Envoy 的集群管理与负载均衡优化,核心就在于如何高效处理 EDS 推送的端点变更,避免因端点列表抖动导致负载均衡失效或连接池震荡。这也是本课程后续章节重点诊断和优化的方向。

1.4 分离架构的延迟优势

数据平面与控制平面分离的设计,直接影响了 API 延迟的稳定性:

  • 控制面故障隔离:即使 Istiod 短暂不可用,Envoy 仍能基于本地缓存的最新配置继续转发流量,数据面零中断。
  • 配置热更新:Envoy 支持 xDS 配置的增量推送和原地热加载,无需重启进程,避免连接断开导致的延迟毛刺。
  • 无锁数据路径:Envoy 的工作线程(Worker)各自持有独立的连接池和负载均衡状态,线程间无锁竞争,最大化 CPU 利用率。
  • 按需加载:Envoy 只加载与自身相关的 Listener 和 Cluster 配置,避免全量配置带来的内存和 CPU 开销。