Cloud Native · CNCF Graduated Project

云原生高性能
服务代理

Envoy 是专为大型现代面向服务架构而设计的 L7 代理和通信总线,为每个服务提供通用网络能力,助力微服务可观测性与弹性。

L3/L7
全层代理
~2MB
内存占用
HTTP/3
协议支持
xDS
动态配置
C++
高性能内核

不仅仅是一个代理

开源 C++17 CNCF 毕业项目 Sidecar 模式

Envoy 是由 Lyft 开源、现隶属于 CNCF(云原生计算基金会)的高性能代理。它以独立进程方式运行,与任何编程语言和框架无关,天然适配异构微服务环境。

与应用内嵌 SDK 的代理方案不同,Envoy 采用进程外架构(Out-of-Process),将网络关注点从业务逻辑中彻底分离,实现基础设施与应用解耦。

Envoy 是 Istio、Contour 等主流服务网格与 Ingress 控制器的核心数据平面,也是 Google、AWS 等云平台负载均衡器的底层引擎。

数据平面 — 进程外架构
Kubernetes Pod
App Container
业务逻辑
Envoy Sidecar
透明代理
Control Plane (xDS API)
Istio / Contour / Custom
📊 Metrics
🔍 Tracing
📝 Logging

为现代架构而生

Envoy 提供一整套网络基础能力,无需修改业务代码即可为每个服务赋能。

L3/L4 & L7 过滤器
支持从网络层到应用层的完整过滤器链,可执行 TCP 代理、UDP 代理、HTTP 路由、TLS 认证等多种任务,灵活可组合。
HTTP/1.1、HTTP/2、HTTP/3
原生支持全部三个 HTTP 版本,可在任意版本间透明转换。内建 gRPC 路由、代理与桥接能力,也是 HTTP/3 (QUIC) 的早期采用者。
高级负载均衡
内置轮询、随机、最少请求数、一致性哈希等算法。支持健康检查、断路器(Circuit Breaker)、自动重试、超时与限流策略。
TLS 终止与 mTLS
完整的 TLS/mTLS 支持,包括客户端证书认证。可作为 TLS 终止网关或将加密流量透传到后端,轻松实现零信任网络。
xDS 动态配置
通过 xDS (Discovery Service) API 实现配置热更新,无需重启即可动态变更路由、集群和监听器,支持灰度发布与流量迁移。
全栈可观测性
内置 Prometheus 格式 Metrics 指标、分布式追踪(Zipkin/Jaeger/X-Ray)及结构化访问日志,开箱即用,无侵入集成。
多线程高性能
基于 libevent 的非阻塞 I/O 事件驱动架构,单进程多 Worker 线程模型,每连接分配固定 Worker,避免锁竞争,吞吐极高。
Lua & WebAssembly 扩展
支持通过 Lua 脚本或 WebAssembly 插件扩展过滤器行为,无需重新编译即可插入自定义业务逻辑,生态丰富。

四大基础构建块

理解 Envoy 的关键抽象,掌握配置的本质。

请求流转路径
Client下游客户端
Listener:10000
Filter ChainHTTP / Router
Route路径匹配
Cluster后端集群
Endpoints后端实例
L
Listener(监听器)
定义 Envoy 接受连接的地址和端口。每个监听器绑定一个过滤器链,是请求进入 Envoy 的入口点,支持 TCP、UDP 等多种协议。
R
Route(路由)
定义请求如何被匹配并转发到上游集群。可基于路径前缀、Header、Host、方法等进行精细化匹配,支持流量拆分与重定向。
C
Cluster(集群)
代表一组功能等价的上游服务端点。Envoy 对集群内 Endpoint 执行健康检查和负载均衡,支持 DNS、EDS 等多种服务发现方式。
F
Filter(过滤器)
插件化请求/响应处理单元,链式执行。内置 HTTP 连接管理器、JWT 认证、限流、外部授权等过滤器,也可通过 Wasm/Lua 自定义扩展。

5 分钟快速上手

以下是一个完整的 Envoy 静态配置,将流量代理到后端 HTTP 服务。

envoy.yaml static configuration
# Envoy 静态配置示例 — HTTP 反向代理
static_resources:

  # ── 监听器:接受下游连接 ──
  listeners:
  - name: http_listener
    address:
      socket_address:
        address: 0.0.0.0
        port_value: 10000
    filter_chains:
    - filters:
      - name: envoy.filters.network.http_connection_manager
        typed_config:
          "@type": type.googleapis.com/.../HttpConnectionManager
          stat_prefix: ingress_http
          codec_type: AUTO        # 自动检测 HTTP/1.1 or /2
          route_config:
            virtual_hosts:
            - name: backend
              domains: ["*"]
              routes:
              - match:
                  prefix: "/api"    # 路径匹配
                route:
                  cluster: api_service
                  timeout: 30s
              - match:
                  prefix: "/"
                route:
                  cluster: frontend_service
          http_filters:
          - name: envoy.filters.http.router

  # ── 集群:上游后端服务 ──
  clusters:
  - name: api_service
    connect_timeout: 5s
    type: STRICT_DNS       # DNS 服务发现
    lb_policy: ROUND_ROBIN
    load_assignment:
      cluster_name: api_service
      endpoints:
      - lb_endpoints:
        - endpoint:
            address:
              socket_address:
                address: api.default.svc.cluster.local
                port_value: 8080

# Docker 运行:
# docker run --rm -p 10000:10000 \
#   -v $(pwd)/envoy.yaml:/etc/envoy/envoy.yaml \
#   envoyproxy/envoy:v1.33-latest

广泛适用的核心组件

从边缘网关到服务网格 Sidecar,Envoy 在各种场景中发挥关键作用。

🌐
API 网关 / 边缘代理
作为集群入口,统一处理 TLS 终止、认证鉴权、限流熔断,替代 Nginx/HAProxy。
🕸
服务网格数据平面
以 Sidecar 模式注入每个 Pod,构成 Istio、Linkerd 2 等服务网格的数据平面。
Kubernetes Ingress
Contour、Ambassador、Gloo 等 Ingress 控制器均以 Envoy 为底层,实现 K8s 流量治理。
🔁
灰度 / 金丝雀发布
通过权重路由和 Header 匹配实现按比例灰度发布、A/B 测试、蓝绿切换。
🔒
零信任安全
mTLS 加密服务间通信,配合 OPA/Ext-Authz 实现细粒度访问控制策略。
云平台负载均衡
AWS App Mesh、Google Cloud Traffic Director 均基于 Envoy 构建托管负载均衡器。

开始使用 Envoy

加入 Lyft、Google、AWS、Stripe 等公司,将 Envoy 作为核心网络基础设施。

快速开始 → 📄 GitHub