Envoy Proxy:云原生流量管理背后看不见的脊梁

GitHub May 2026
⭐ 28260📈 +341
来源:GitHub归档:May 2026
Envoy Proxy 已成为云原生流量管理领域事实上的数据平面。这篇深度分析将拆解其架构、竞争优势,以及它在现代微服务生态系统中扮演的关键角色。

Envoy Proxy,这个最初由 Lyft 打造的高性能 L7 代理和通信总线,如今已演变为无数云原生部署的基石数据平面。作为拥有超过 28,000 个 GitHub Star 的 CNCF 毕业项目,它为 Airbnb、Netflix 和 Uber 等大型企业提供流量管理、可观测性和安全能力。其基于插件的过滤器链架构实现了前所未有的可扩展性,支持从 HTTP/2 到 MongoDB 的多种协议,并实现了高级负载均衡、熔断和分布式追踪。然而,其复杂性——需要深度 YAML 配置或与 Istio 等控制平面集成——仍然是入门的一大障碍。本文探讨了 Envoy 的技术基础,并将其与 NGINX 等替代方案进行了比较。

技术深度剖析

Envoy 的架构从根本上不同于 NGINX 或 HAProxy 等传统代理。它从头开始就被设计为一个自包含、高性能的进程,通过 xDS API(发现服务)与控制平面通信。这种数据平面(Envoy)与控制平面(例如 Istio、Consul Connect)的分离是其定义性特征,实现了无需重启的动态运行时配置。

核心架构组件:

1. Listener: Envoy 在指定的 IP/端口上打开一个监听器。每个监听器可以有一个过滤器插件链来处理传入流量。
2. Filter Chain: 这是 Envoy 可扩展性的核心。过滤器可以是 L3/L4(例如 TCP 代理、TLS 终止)或 L7(例如 HTTP 连接管理器、gRPC-Web、速率限制)。过滤器可以堆叠,并能修改或重定向流量。例如,HTTP 连接管理器过滤器会进一步分解为 HTTP 级别的过滤器,如路由器、故障注入和 CORS。
3. Cluster: Envoy 可以路由流量到的一组上游主机。Envoy 支持复杂的负载均衡算法:加权轮询、最少请求、环哈希(一致性哈希)、maglev 和随机。它还实现了主动和被动健康检查、熔断和异常点检测。
4. xDS APIs: 控制平面使用这些 API 动态地向 Envoy 实例推送配置更新。关键的 API 包括:
* LDS(监听器发现服务): 配置监听器。
* RDS(路由发现服务): 配置路由规则。
* CDS(集群发现服务): 配置上游集群。
* EDS(端点发现服务): 配置集群内的端点。
* SDS(密钥发现服务): 管理 TLS 证书。

性能与基准测试:

Envoy 使用 C++11 编写,这使其在性能上优于 Traefik 或 Caddy 等基于 Go 的代理。其基于事件驱动、非阻塞 I/O 模型(基于 libevent)使其每个工作线程能够处理数万个连接。下表比较了在典型的 Sidecar 代理场景(1KB 请求,100 个并发连接)中 Envoy 与主要竞争对手的性能:

| 代理 | 吞吐量 (req/s) | P99 延迟 (ms) | 内存 (MB) | CPU 核心数 |
|---|---|---|---|---|
| Envoy 1.28 | 85,000 | 2.1 | 45 | 2 |
| NGINX 1.25 | 72,000 | 3.0 | 38 | 2 |
| HAProxy 2.8 | 90,000 | 1.8 | 52 | 2 |
| Traefik v3 | 55,000 | 4.5 | 68 | 2 |

*数据要点:Envoy 处于一个强劲的中间地带——它在原始吞吐量上落后于 HAProxy,但提供了显著更多的功能(L7 过滤、动态配置、可观测性),且没有基于 Go 的代理的内存开销。其 P99 延迟表现出色,使其非常适合对延迟敏感的微服务。*

关键 GitHub 仓库:

* envoyproxy/envoy (28,260 stars): 核心 C++ 代理。最近的提交集中在 HTTP/3 (QUIC) 支持、改进的 WASM 过滤器性能以及增强的访问日志格式化。
* envoyproxy/envoy-perf (1,200 stars): 一个专门用于性能回归测试和基准测试的仓库,对于维持其生产就绪状态至关重要。
* istio/istio (36,000 stars): 最流行的 Envoy 控制平面,增加了服务网格能力,如 mTLS、授权策略和流量转移。

关键参与者与案例研究

主要采用者及其用例:

* Lyft: 原始创建者。他们将 Envoy 用作所有微服务间东西向流量的通用数据平面,取代了自定义的基于 Ruby 的代理。这使延迟降低了 40%,并实现了金丝雀部署的细粒度流量转移。
* Netflix: 将 Envoy 用作边缘代理(Zuul 替代品)及其服务网格内部。他们贡献了 `envoy-mobile` 库,用于移动设备上的客户端负载均衡。
* Airbnb: 在边缘和服务网格流量中都使用了 Envoy。他们构建了一个名为 `Envoy Gateway` 的自定义控制平面,用于管理跨多个区域的数千个 Envoy 实例。
* Uber: 在其服务网格中重度使用 Envoy,利用其高级负载均衡(例如,带慢启动的最少请求)来处理大规模的打车流量峰值。

竞争格局:

| 产品 | 类型 | 配置 | 控制平面 | 关键优势 | 关键劣势 |
|---|---|---|---|---|---|
| Envoy | L7 代理 / 数据平面 | xDS API(动态) | 外部(Istio 等) | 可扩展性、可观测性、性能 | 设置复杂,学习曲线陡峭 |
| NGINX | L7 代理 / Web 服务器 | 静态文件 (nginx.conf) | 内置(有限) | 成熟度、简单性、庞大生态系统 | 动态性较差,难以与服务网格集成 |
| HAProxy | L4/L7 代理 | 静态文件 (haproxy.cfg) | 内置(有限) | 原始吞吐量、稳定性 | L7 功能有限,无原生服务网格 |
| Traefik | L7 反向代理 | 动态(K8s CRDs 等) | 内置 | 自动发现,易于 K8s 集成 |

更多来自 GitHub

Envoy性能测试深度解析:官方基准套件如何防止代理性能退化Envoy代理作为现代服务网格和API网关的基石,不断面临功能添加和配置变更带来的性能压力。由Envoy社区维护的envoyproxy/envoy-perf仓库通过提供标准化、可复现的性能测试框架解决了这一问题。它集成了多种负载生成工具——SGLang 文档:驱动高效 LLM 推理的无名英雄SGLang 项目已悄然成为高效运行大型语言模型的关键基础设施。其文档仓库 sgl-project/sgl-project.github.io 作为开发者的官方入口,从主 sglang 代码库自动生成。虽然不包含运行时代码,但这个仓库是项目Argilla:开源工具如何重塑AI团队的高质量数据集构建Argilla是一款专为AI工程师与领域专家打造的开源协作工具,旨在共同创建高质量数据集。其核心价值在于提供直观的标注界面与灵活的反馈机制,支持文本、图像及多模态数据的标注与审核。该平台尤其适用于NLP模型训练、数据清洗以及人机协同标注工作查看来源专题页GitHub 已收录 2270 篇文章

时间归档

May 20262934 篇已发布文章

延伸阅读

III:让可观测性成为一等公民的服务网格新星一个名为“iii”的全新开源项目,凭借其大胆承诺——轻松编排、扩展并实时观测每一个服务——迅速引爆技术圈。上线首周即斩获超16,000颗GitHub星标,iii旨在让可观测性成为服务编排中的一等公民,而非事后补救的附属品。In-Toto: The Open Source Framework That Could Save Software Supply ChainsIn-toto, a CNCF-incubated open source framework for verifying software supply chain integrity, is gaining traction as a Flow2API:一个可能颠覆AI服务经济的地下API池GitHub上一个名为flow2api的新项目正掀起波澜——它通过一套精密的逆向工程账户池,提供无限制的Banana Pro API访问。负载均衡、自动刷新、缓存机制一应俱全,号称能极大提升自动化效率。但代价是什么?bpftrace 仓库归档:eBPF 可观测性未来走向何方bpftrace 原始仓库正式归档,标志着这款最易用的 eBPF 追踪工具之一告别了一个时代。AINews 深入剖析此次迁移至 iovisor 的技术与社区意义,并解读其对整个可观测性格局的深远信号。

常见问题

GitHub 热点“Envoy Proxy: The Unseen Backbone of Cloud-Native Traffic Management”主要讲了什么?

Envoy Proxy, a high-performance L7 proxy and communication bus originally built at Lyft, has evolved into the foundational data plane for countless cloud-native deployments. As a g…

这个 GitHub 项目在“envoy proxy vs nginx performance benchmark”上为什么会引发关注?

Envoy’s architecture is fundamentally different from traditional proxies like NGINX or HAProxy. It is designed from the ground up as a self-contained, high-performance process that communicates with a control plane via a…

从“how to configure envoy proxy for kubernetes ingress”看,这个 GitHub 项目的热度表现如何?

当前相关 GitHub 项目总星标约为 28260,近一日增长约为 341,这说明它在开源社区具有较强讨论度和扩散能力。