Envoy、Katran 和 Cilium 这三种负载均衡(LB)方案,在实现原理、功能丰富度和性能等方面差异显著。Envoy 主打高阶 L7/L4 场景和治理能力,Katran 和 Cilium 则着力于在内核空间用 eBPF/XDP 提供极致 L4 性能,但 Cilium 在功能上又更为全面.
个人理解 envoy
本质上来说: envoy 和 nginx,haproxy 的转发面实现大差不差,基本上不会比 nginx 和 haproxy 性能更好。
但是确实在 k8s 的领域解决了应用流量(各种应用层协议)可观察,可控制,可跟踪的痛点问题
负载均衡实现原理
- Envoy:以 C++ 开发,作为用户态代理(sidecar/edge proxy),通过多线程、异步 IO、丰富的 Listener-Filter-Cluster-Router 组合,对 L3/L4(TCP/UDP)和 L7(如 HTTP/gRPC)流量进行调度。通过健康检查、智能路由、熔断、限流等丰富策略治理,实现复杂应用流量负载均衡.
- Katran:Facebook 开源的 L4 负载均衡器,基于 eBPF + XDP 技术,运行在内核空间直接快速处理包转发,采用 Maglev/LRU hash 算法。只实现四层(TCP/UDP)分发,只做最简流量调度,不关注协议内容,适用于大流量高性能入网层.cloud.tencent+1
- Cilium:高度依赖 eBPF/XDP,在内核空间处理 L3/L4、部分 L7(如 HTTP)负载均衡和安全策略,可代理 Kubernetes Service 的 ClusterIP/NodePort/LoadBalancer,也常见于微服务场景,对 HTTP 等应用流量有初级 L7 能力,支持 BGP、隧道、DSR 模式等高级网络特性.csdn+2
Envoy 一般用于 L4 LB 后面:
核心场景与流量架构图
Envoy 与四层 LB 的配合主要分为 “边缘层入口流量” 和 “服务网格内部流量” 两类场景,前者侧重 “公网流量接入”,后者侧重 “内部服务间通信可靠性”,以下分别说明:
场景 1:边缘层入口流量(公网 → 后端服务)
核心逻辑:四层 LB 作为公网流量 “第一入口”,负责 TCP 连接转发、四层负载均衡(如基于源 IP 哈希);Envoy 部署在四层 LB 后端,作为 “边缘代理”,承接 TCP 流量后做 L7 处理(如 HTTP 路由、TLS 终止、限流),最终转发至后端业务服务。适用场景:公网 Web 服务、API 网关入口,需兼顾四层 LB 的高可用(如集群化部署)与 Envoy 的 L7 灵活能力。
场景 2:服务网格内部流量(服务 A → 服务 B)
核心逻辑:基于 Istio / 自建 Envoy 网格,每个业务服务旁部署 Envoy Sidecar(边车代理);四层 LB 部署在 “跨节点 / 跨可用区” 的服务集群前端,负责 TCP 层的 “跨域负载均衡”(如将服务 A 的流量转发到服务 B 所在的不同节点);Envoy Sidecar 则负责服务间的 L7 通信优化(如 gRPC 代理、熔断、重试)。适用场景:大型微服务架构,需解决跨节点服务通信的可靠性(四层 LB 保障节点级负载均衡)与服务间通信的可观测性(Envoy 提供监控 / 追踪)。
功能丰富度对比
| 维度 | Envoy | Katran | Cilium |
|---|---|---|---|
| 支持层数 | L4(TCP/UDP)、L7(HTTP/gRPC/WebSocket) | L4(TCP/UDP) | L3、L4、部分L7(HTTP解析、策略) |
| 负载均衡算法 | 轮询、加权最少连接、哈希、一致性hash等 | Maglev/LRU hash | Maglev、DSR、IPIP、LRU,多协议可选 |
| 健康检查 | 完善多方式 | 仅基础健康检查 | 支持、自定义灵活 |
| 扩展能力 | 熔断、限流、WAF、丰富 Filter、追踪 | 极简,仅提供高性能包转发 | L3~L7 网络安全策略、可编程性与观测性 |
| 配置模式 | xDS、API、丰富动态配置 | 简单配置文件 | API+K8s CRD+自动监听+绑定 BPF 程序 |
| 场景适用性 | 微服务网关,ServiceMesh Sidecar,API 网关 | 超大规模高性能四层入网负载均衡 | K8s 网络、LB、安全、服务发现全面能力 |
性能对比
- Katran 性能极致,XDP/eBPF 运行在内核空间,数据包极限转发能力,单节点可达几十 Gbps,延迟极低,超高连接数,但仅做四层分发.ebpf+1
- Cilium 依托 eBPF/XDP,同样具备内核高性能,L3/L4 性能接近 Katran,但功能更全面(支持 L7 策略、网络安全),部分高级场景和复杂 L7 功能性能略逊色于 Katran.csdn+1
- Envoy 作为用户态高阶代理,功能丰富但引入上下文切换与深度协议栈,L4 性能逊于 Katran/Cilium,L7 复杂场景下性能取决于调用链深度与配置优化,但能提供更灵活业务支撑.51cto+1
典型适用场景
- Katran:大流量公网边界、四层入口高性能规模分发,无需业务协议层处理。
- Cilium:云原生 K8s 场景、Service LB、安全审计,场景灵活,对 inner/outer LB 支持。
- Envoy:微服务网关、复杂应用 L7 负载均衡、流量治理需求突出场景.cloud.tencent+2
综上,Katran 追求极致 L4 性能但功能极简,Envoy 则在丰富度和可编程治理上全面领先,Cilium 在性能和功能之间平衡,适配广泛云原生和安全场景.