2. 服务网格基础:Istio/Envoy 架构解析与 Sidecar 代理工作原理

2.1 服务网格核心架构:数据平面与控制平面

服务网格将网络通信能力从应用容器中剥离,形成独立的 基础设施层。Istio 作为最流行的服务网格实现,其架构分为两个关键平面:

  • 数据平面 (Data Plane):由一组高性能 Sidecar 代理(Envoy)组成,负责处理所有微服务间的网络流量,执行路由、负载均衡、认证、可观测性等策略。
  • 控制平面 (Control Plane):负责管理和配置数据平面中的代理,下发策略规则,收集遥测数据。在 Istio 1.5+ 中,控制平面组件整合为 istiod。
关键认知: 控制平面不直接参与业务数据包转发,它只负责下发配置;所有业务流量均经过数据平面的 Sidecar 代理,这是理解延迟瓶颈的基础。
Istio 服务网格架构:控制平面与数据平面 Istio 服务网格架构总览 控制平面 (Control Plane) — istiod Pilot (配置下发) Citadel (证书管理) Galley (配置验证) 数据平面 (Data Plane) — Envoy Sidecar 代理 Pod A: 服务 frontend App 容器 Envoy Sidecar iptables 规则拦截流量 → Envoy Pod B: 服务 backend App 容器 Envoy Sidecar iptables 规则拦截流量 → Envoy xDS 协议 (发现/监听器/路由/集群) 业务流量

2.2 Sidecar 代理的工作原理

Sidecar 模式是服务网格的核心部署形态。Envoy 代理以独立容器的形式与业务容器部署在同一个 Pod 中,共享网络命名空间。其工作流程如下:

  1. 流量劫持:通过 Init 容器注入 iptables 规则,将 Pod 内所有入站和出站流量透明地重定向到 Envoy 代理。
  2. 策略执行:Envoy 根据从控制平面获取的动态配置(监听器、路由、集群),对流量进行精细控制。
  3. 遥测生成:Envoy 自动生成详细的访问日志、指标(如请求延迟、流量大小)和分布式追踪数据。
  4. 安全通信:Envoy 之间建立 mTLS 连接,实现传输加密和身份认证。
延迟影响点: 每次请求在源端 Envoy 和目标端 Envoy 之间经过两次额外的网络栈处理(iptables + Envoy 自身处理),这是服务网格引入的固有延迟开销,通常在 1-5ms 级别。

2.3 Envoy 代理内部架构

Envoy 是一个基于 C++ 实现的高性能 L4/L7 代理,其内部采用多线程、事件驱动模型。理解其内部架构对于诊断 CPU 资源瓶颈至关重要:

组件 功能描述 CPU 敏感度
Listener (监听器) 绑定端口,接收入站连接。支持 L3/L4 过滤器和 L7 HTTP 过滤器链。 高 — 连接建立与 TLS 握手
Filter Chain (过滤器链) 按顺序处理请求,包括 HTTP 连接管理、路由、限流、故障注入等。 高 — 每个过滤器均消耗 CPU
Router (路由) 根据请求头、路径等元数据匹配路由规则,选择目标集群。 中 — 路由表查找与匹配
Cluster (集群) 管理上游服务端点,执行负载均衡、熔断、重试、连接池等策略。 中 — 负载均衡算法与健康检查
Stats (统计) 收集并聚合计数器、仪表盘、直方图等指标数据。 低 — 但高频统计会累积开销
Envoy 代理内部请求处理流程 Envoy 代理内部请求处理流水线 入站请求 Listener 端口绑定/TLS Filter Chain HTTP 连接管理 限流/故障注入 Router 路由匹配 Cluster 负载均衡 连接池 出站 CPU 瓶颈热点区域 TLS 握手 (Listener) → 过滤器解析 (Filter Chain) → 路由表查找 (Router) → 连接池管理 (Cluster)

2.4 数据平面与控制平面的交互协议:xDS

控制平面通过 xDS (Discovery Service) 协议族与数据平面的 Envoy 代理通信。xDS 是一组基于 gRPC 流式 API 的配置发现接口,Envoy 通过订阅这些接口获取动态配置:

协议 全称 配置内容 更新频率
LDS Listener Discovery Service 监听器配置(端口、协议、过滤器链) 低(服务部署时)
RDS Route Discovery Service 路由规则(域名、路径匹配、流量拆分) 中(策略变更时)
CDS Cluster Discovery Service 集群定义(上游服务端点、负载均衡策略) 中(服务扩缩容时)
EDS Endpoint Discovery Service 集群内的具体端点列表(IP:Port) 高(Pod 频繁启停时)
SDS Secret Discovery Service TLS 证书和密钥 低(证书轮转时)
延迟诊断要点: 当控制平面与数据平面之间的 xDS 通信出现延迟或配置推送失败时,Envoy 可能使用过期配置路由流量,导致请求被发送到已终止的 Pod,引发 503 或连接超时。这是服务网格 API 延迟的常见根因之一。

2.5 关键总结:服务网格对 API 延迟的影响路径

基于上述架构分析,服务网格引入的延迟主要来自以下路径:

  • 路径 1:iptables 劫持 — 每个数据包在进入和离开 Pod 时,需要经过 Netfilter 规则匹配,增加微秒级延迟。
  • 路径 2:Envoy 内部处理 — 包括 TLS 加解密、HTTP 协议解析、过滤器链执行、路由查找等,增加毫秒级延迟。
  • 路径 3:控制平面配置下发 — 当配置更新时,Envoy 需要热重启或动态更新,期间可能产生短暂连接中断。
  • 路径 4:Sidecar 资源竞争 — 当 Envoy 的 CPU 资源配额不足时,请求排队和处理延迟会显著增加,这是本课程后续章节的核心优化目标。