Envoy 1.40 介绍与选型指南
介绍 Envoy v1.40.0 云原生代理:worker 线程模型、过滤器链、xDS 动态配置、热重启与可观测性,并对比 Nginx、HAProxy、Caddy 给出选型建议
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.atom | https://github.com/envoyproxy/envoy/releases.atom | 版本号与发布日期溯源 |
| 官方文档 | https://www.envoyproxy.io/docs/envoy/latest/ | 架构、xDS 与入门口径 |
| 许可文件 | https://github.com/envoyproxy/envoy/blob/main/LICENSE | Apache-2.0 原文 |
| 官方 GitHub 主页 | https://github.com/envoyproxy/envoy | stars 数据(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 以副本页面显示为准。
| 维度 | Envoy | Nginx | HAProxy | Caddy |
|---|---|---|---|---|
| 开源许可 | Apache-2.0 | 类 BSD 双子句(nginx license) | GPL-2.0 主体(导出头文件 LGPL) | Apache-2.0 |
| GitHub stars | 29.1k | 31.9k(GitHub 只读同步副本) | 6.9k(GitHub 只读同步副本) | 78.1k |
| 最近发版 | v1.40.0(2026-10-13) | 官网下载页:stable 1.30.6 / mainline 1.31.7 | 官网:3.4.7 | v2.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。
八、参考链接
- 官网:https://www.envoyproxy.io
- 官方文档:https://www.envoyproxy.io/docs/envoy/latest/
- 架构文档:https://www.envoyproxy.io/docs/envoy/latest/intro/architecture
- 源码仓库:https://github.com/envoyproxy/envoy
- 版本发布记录:https://github.com/envoyproxy/envoy/releases.atom
- 许可文件(Apache-2.0):https://github.com/envoyproxy/envoy/blob/main/LICENSE
- CNCF 项目页:https://www.cncf.io/projects/envoy/