Envoy 1.40 介绍与选型指南

介绍 Envoy v1.40.0 云原生代理:worker 线程模型、过滤器链、xDS 动态配置、热重启与可观测性,并对比 Nginx、HAProxy、Caddy 给出选型建议

Envoy反向代理API网关2026/10/18

Envoy 1.40 介绍与选型指南

一、信息基准

本文为 Envoy 的认知篇(软件介绍与选型指南),全部信息基于官方渠道溯源,查询日期为 2026-10-18,未做任何本地安装与实测。

信息项内容
查询日期2026-10-18
最新稳定版v1.40.0(2026-10-13 发布)
并行维护线v1.39.4(2026-10-12)、v1.38.7、v1.37.9(均为官方补丁版本)
开源许可Apache-2.0
项目治理CNCF 毕业项目(官方官网明确标注 graduated project)
官网https://www.envoyproxy.io
源码仓库https://github.com/envoyproxy/envoy
版本依据GitHub releases.atom 订阅源实查

官方来源清单:

来源链接用途
GitHub releases.atomhttps://github.com/envoyproxy/envoy/releases.atom版本号与发布日期溯源
官方文档https://www.envoyproxy.io/docs/envoy/latest/架构、xDS 与入门口径
许可文件https://github.com/envoyproxy/envoy/blob/main/LICENSEApache-2.0 原文
官方 GitHub 主页https://github.com/envoyproxy/envoystars 数据(2026-10-18 实查 29.1k)

二、软件概述

本文介绍的是 Envoy v1.40.0(2026-10-13 发布)。Envoy 是由 CNCF 托管的毕业项目,一款面向云原生架构的高性能边缘与服务间代理,使用 C++ 实现。它最初诞生于 Lyft 的基础设施,2017 年捐入 CNCF 并于 2018 年毕业,目前是服务网格领域事实上的标准数据面(Istio 默认数据面即基于 Envoy)。

Envoy 同时具备 L3/L4 网络代理与 L7(HTTP/gRPC)代理能力,最大特色是"通过 xDS API 动态编程":监听器、路由、集群、端点等全部配置都可以在运行时由控制面下发并即时生效,从而支撑服务网格、API 网关类产品的构建。Envoy 还内建了丰富的可观测性输出:结构化访问日志、细粒度统计指标与分布式追踪(支持 Zipkin、OpenTelemetry 等多种追踪后端对接格式)。

截至查询日,Envoy GitHub stars 为 29.1k(官方主页实查)。版本节奏为每年四个 minor 版本(官方发布政策口径),同时对最近多个 minor 线并行发布补丁版本——查询日可见 v1.40.0、v1.39.4、v1.38.7、v1.37.9 四条维护线同时活跃。

三、核心架构

3.1 单进程多线程与事件驱动

Envoy 采用单进程、多线程、事件驱动的架构:每个 worker 线程独立运行完整的事件循环(基于 libevent),处理各自监听器上的全部连接,避免了多进程模型的锁与状态共享问题;管理面(统计、热重启协调)由独立线程承担。官方架构文档将其总结为"几乎完全并行的 worker 线程模型"。

3.2 监听器与过滤器链

网络流量进入 Envoy 后按"监听器 → 网络过滤器链"处理。常见组合是 HTTP 连接管理器(HttpConnectionManager)作为网络过滤器,再挂接 HTTP 过滤器链(认证、限流、路由、压缩、gRPC-Web 转换、路由器等)。过滤器支持第三方扩展,官方文档提供了扩展过滤器 API。

3.3 xDS 动态配置 API

xDS(发现服务族)是 Envoy 的灵魂:LDS(监听器发现)、RDS(路由发现)、CDS(集群发现)、EDS(端点发现)、SDS(密钥发现)等 API 允许控制面在运行时增删改配置,无需重启进程。xDS 支持 REST/gRPC 两种传输与增量/全量两种订阅模式,官方文档对此有完整的协议定义。静态配置与动态配置可共存(如动态路由 + 静态集群)。

3.4 热重启与可观测性

  • 热重启(hot restart):新旧两个 Envoy 进程通过共享内存协商,平滑交接监听套接字与状态,实现升级零丢包(官方文档架构章节口径);
  • 统计指标:按集群、监听器、HTTP 维度输出海量计数器/直方图,可对接 Prometheus 等聚合系统;
  • 访问日志与分布式追踪:异步刷新的访问日志,以及基于请求 header 传播的调用链追踪支持。

四、功能特性

4.1 L7 负载均衡与路由

Envoy 提供基于域名的虚拟主机路由、路径/请求头匹配、权重与路径前缀切流、请求/响应改写、重试与超时策略、熔断(并发与挂起请求数上限)、本地与主动健康检查等(官方路由与集群文档口径)。负载均衡策略涵盖轮询、最小请求、随机、带环哈希(Ring Hash)、Maglev 等算法。

4.2 协议支持

原生支持 HTTP/1.1、HTTP/2 与 HTTP/3(QUIC)之间的转换代理,gRPC 代理为一流场景(含 gRPC-Web 转换);TLS 终止与双向 TLS 由 SDS 动态下发证书。官方文档同时列出 Redis 代理、MongoDB 嗅探、Kafka 嗅探等 L4 协议扩展。

4.3 服务网格与网关形态

同一套 Envoy 二进制既可作为前端边缘代理/网关运行,也可作为 sidecar 数据面运行;围绕它形成的上层项目(Istio、Emissary-ingress、Contour 等)构成了其生态主体。这也是 Envoy 与传统 Web 服务器最大的定位差异——它是"可编程的代理基础设施底座"。

4.4 二进制与平台覆盖

官方为 Linux x86_64/ARM64 提供包仓库与发布产物,macOS 等平台可经包管理器获取社区构建;作为数据面,其运行形态由上层平台(如网格控制面)托管。

五、快速上手

以下最小示例改写自官方入门文档的最小静态配置(本文未做本地实测):一个 8080 端口的 HTTP 监听器把全部请求转发到本机 9000 端口的上游集群。

static_resources:
  listeners:
    - name: http_listener
      address:
        socket_address: { address: 0.0.0.0, port_value: 8080 }
      filter_chains:
        - filters:
            - name: envoy.filters.network.http_connection_manager
              typed_config:
                "@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager
                stat_prefix: ingress_http
                route_config:
                  virtual_hosts:
                    - name: backend
                      domains: ["*"]
                      routes:
                        - match: { prefix: "/" }
                          route: { cluster: service_backend }
                http_filters:
                  - name: envoy.filters.http.router
                    typed_config:
                      "@type": type.googleapis.com/envoy.extensions.filters.http.router.v3.Router
  clusters:
    - name: service_backend
      connect_timeout: 5s
      type: STATIC
      load_assignment:
        cluster_name: service_backend
        endpoints:
          - lb_endpoints:
              - endpoint:
                  address:
                    socket_address: { address: 127.0.0.1, port_value: 9000 }

启动命令(官方文档口径):

envoy -c envoy.yaml

官方来源:https://www.envoyproxy.io/docs/envoy/latest/start/start

六、适用场景与限制

6.1 适用场景

  • 服务网格数据面:与 Istio 等控制面配合,承接服务间 mTLS、灰度、熔断与可观测性;
  • API 网关与边缘代理:L7 路由、限流、认证过滤器与动态 xDS 配置适合构建网关产品;
  • gRPC 与多协议代理:需要 HTTP/2、gRPC、HTTP/3 原生支持的接入层;
  • 高度动态的基础设施:端点频繁变化、需要控制面编程的云原生环境。

6.2 限制与注意点

  • 配置复杂度高:xDS/过滤器/集群三层模型学习曲线明显,简单转发场景运维成本高于传统 Web 服务器;
  • 资源占用:C++ 实现性能强,但常驻内存与统计指标体量大于轻量级代理,小规模场景需要评估;
  • 版本演进快:每年四个 minor,API 在废弃策略下持续演进,升级需要跟随官方支持窗口;
  • 无内建静态站点服务能力:与 Nginx 不同,Envoy 不做静态文件服务,定位纯代理。

七、同类选型对比

对比对象选取代理/网关赛道的主流开源项目:Nginx、HAProxy、Caddy。stars 为 2026-10-18 实查;Nginx 与 HAProxy 的官方主仓库不在 GitHub(其 GitHub 仓库为官方只读同步副本),stars 以副本页面显示为准。

维度EnvoyNginxHAProxyCaddy
开源许可Apache-2.0类 BSD 双子句(nginx license)GPL-2.0 主体(导出头文件 LGPL)Apache-2.0
GitHub stars29.1k31.9k(GitHub 只读同步副本)6.9k(GitHub 只读同步副本)78.1k
最近发版v1.40.0(2026-10-13)官网下载页:stable 1.30.6 / mainline 1.31.7官网:3.4.7v2.11.7(2026-10-03)
版本节奏每年 4 个 minor,多维护线并行补丁stable/mainline 双轨,官网发布周期性 minor + 多维护线(官网列出 3.4/3.3/3.2/3.1)活跃小步迭代
兼容矩阵Linux x86_64/ARM64 官方包仓库;网格平台托管全主流平台,包仓库成熟Linux/BSD 为主全主流平台单二进制
定位差异可编程数据面/网关底座,xDS 动态配置Web 服务器 + 反向代理,配置简单稳定高性能 TCP/HTTP 负载均衡自动 HTTPS 的一体化 Web 服务器/代理

数据来源:GitHub releases.atom 与仓库主页、nginx.org 官网下载页、haproxy.org 官网、各仓库 LICENSE 文件(2026-10-18 实查)。

选型建议:需要动态可编程、服务网格或 gRPC 原生接入的云原生网关与数据面选 Envoy;传统静态站点与简单反向代理选 Nginx 或 Caddy;极致四层负载均衡与成熟稳定的企业接入选 HAProxy。

八、参考链接

  1. 官网:https://www.envoyproxy.io
  2. 官方文档:https://www.envoyproxy.io/docs/envoy/latest/
  3. 架构文档:https://www.envoyproxy.io/docs/envoy/latest/intro/architecture
  4. 源码仓库:https://github.com/envoyproxy/envoy
  5. 版本发布记录:https://github.com/envoyproxy/envoy/releases.atom
  6. 许可文件(Apache-2.0):https://github.com/envoyproxy/envoy/blob/main/LICENSE
  7. CNCF 项目页:https://www.cncf.io/projects/envoy/