1. 服务网格与Envoy概述

1.1 服务网格核心概念

服务网格(Service Mesh)是云原生时代微服务通信的基础设施层,它将服务间通信的复杂性从应用代码中剥离,下沉到独立的代理层。其核心思想是:让服务只关注业务逻辑,通信由网格代管。

维度 传统微服务 服务网格
通信控制 嵌入在应用代码中(重试、超时、熔断) 由Sidecar代理统一处理
可观测性 依赖业务埋点,指标分散 代理层自动采集流量指标与链路
安全策略 mTLS需业务库支持 代理层透明双向TLS
升级影响 业务代码需重新编译部署 仅升级Sidecar,业务无感
关键认知:服务网格不是取代微服务框架,而是将流量治理、安全、可观测性从SDK升级为基础设施层能力,实现业务与基础设施的解耦。

1.2 Istio架构概览

Istio是目前最成熟的服务网格实现,其架构分为控制平面与数据平面两部分:

  • 控制平面(istiod):统一管理配置分发、证书签发、策略下发。核心组件包括Pilot(配置转换与下发)、Citadel(证书管理)、Galley(配置验证)。
  • 数据平面(Envoy Proxy):以Sidecar模式注入到每个Pod中,拦截所有进出流量,执行路由、负载均衡、熔断、遥测等治理逻辑。
Istio 架构总览 控制平面 — istiod Pilot(配置分发) Citadel(证书管理) Galley(配置验证) Envoy xDS 数据平面 — Envoy Sidecar 集群 Pod A App v1 Envoy Pod B App v2 Envoy Pod C App v3 Envoy 服务间流量经 Envoy 透明代理

1.3 Envoy作为数据平面的角色

Envoy是Istio数据平面的唯一代理实现,由Lyft开源,后捐给CNCF。它在服务网格中承担以下核心角色:

  • L4/L7代理:支持TCP、HTTP/1.1、HTTP/2、gRPC协议,具备完整的七层路由能力。
  • 流量拦截与转发:通过iptables规则透明拦截Pod内进出流量,所有请求先经过Envoy再到达业务容器。
  • 动态配置(xDS):通过Aggregated Discovery Service(ADS)从控制平面拉取监听器、路由、集群、端点等配置,实现热更新。
  • 可观测性数据面:自动生成HTTP指标(请求数、延迟、错误率)、分布式追踪span、访问日志,无需业务埋点。
  • 安全执行点:在代理层执行mTLS握手、RBAC鉴权、JWT验证,确保网格内通信加密与策略合规。
Envoy在网格中的独特价值:相比Nginx/HAProxy等传统代理,Envoy原生支持xDS动态配置、热重启、多线程模型、以及丰富的可扩展Filter链,是唯一被Istio选为数据平面标配的代理。

1.4 Envoy核心组件与Filter链

Envoy内部采用Filter链架构处理流量,每个请求经过一系列可插拔的Filter,实现协议解析、路由、限流、日志等能力:

Envoy 内部 Filter 链处理流程 入站流量 Listener 端口绑定 协议检测 Filter 链 HTTP 连接管理器 Router / RBAC / 限流 Tracing / Access Log Cluster 负载均衡 连接池 出站 Filter 链可动态扩展 Istio 通过 EnvoyFilter CRD 注入自定义 Lua / WASM Filter

1.5 为什么Envoy适合服务网格

特性 Envoy实现方式 网格收益
热重启 父进程保持连接,子进程接管新连接 Sidecar升级不中断业务流量
多线程模型 Worker线程 + 非阻塞事件循环 高吞吐低延迟,适合网格大规模代理
xDS协议 gRPC流式推送配置增量 控制平面秒级生效,无需重启代理
可扩展Filter C++原生Filter + Lua/WASM沙箱 支持自定义治理逻辑(如租户配额校验)
全链路可观测 OpenTelemetry + 标准指标格式 网格内任意请求可追踪、可度量
注意:Envoy虽然功能强大,但配置模型复杂。在服务网格中,运维人员通常不直接编写Envoy配置,而是通过Istio的VirtualService/DestinationRule等CRD间接管理。理解Envoy底层原理,有助于排查网格治理回滚与配额校准中的疑难问题。