Linkerd vs Cilium vs Istio 对比
⚡ 延迟测试(Latency Testing)
测试工具:oha
向同一命名空间下的 nginx Pod 发送 100,000 个 HTTP 请求以测试延迟。
oha http://nginx -c 32 -n 100000 --disable-keepalive --disable-compression --insecure --ipv4
$URL
是服务的 DNS 名称(例如 http://nginx
)
$CONCURRENT_CONNECTIONS
是并发连接数
$REQUESTS
是总请求数
🧪 延迟测试结果(单位:毫秒)
并发连接数 / 延迟(ms) |
cilium |
cilium + L7策略 |
cilium + L4策略 |
linkerd |
istio |
istio + vs |
无 Service Mesh |
32 |
5.1 |
28.2 |
5.4 |
9.1 |
13.2 |
13.4 |
5.0 |
64 |
9.5 |
55.4 |
9.6 |
16.4 |
24.2 |
24.5 |
9.7 |
128 |
17.9 |
114.3 |
19.5 |
31.7 |
45.3 |
46.4 |
18.1 |
结论:
- 在 Service Mesh 中,Linkerd 延迟最低,而 Istio 功能最全面、效率最佳。
- Cilium 在 L4 流量管理下对性能影响较小。
- Cilium 处理 L7 流量时开销超过 Istio 的两倍,不适合高并发低延迟场景。
⚙️ QPS 测试结果(请求数/秒)
QPS |
cilium |
cilium + L7策略 |
cilium + L4策略 |
linkerd |
istio |
istio + vs |
无 Service Mesh |
32 |
6232 |
1132 |
5892 |
3529 |
2421 |
2328 |
6218 |
64 |
6705 |
1154 |
6678 |
3888 |
2648 |
2600 |
6575 |
128 |
7153 |
1119 |
6541 |
4034 |
2826 |
2758 |
7073 |
结论:
- 在启用 L7 代理时,Linkerd 的性能最佳。
- Cilium 在 L4 场景 下性能出色,但 启用 L7 策略后性能大幅下降。
- 默认情况下,Cilium 仅在 L3/L4 层启用网络策略。只有在
CiliumNetworkPolicy
中明确指定了 L7 规则(即使是空规则),Cilium 才会启用 Envoy 代理处理流量。
📶 吞吐测试(Throughput)
测试工具:iperf3
客户端持续向服务端发送数据,持续时间为 600 秒。
iperf3 -c iperf3-server -t 600 -i 1
吞吐测试结果:
Bitrate (Gbit/s) / Retr |
cilium + L4策略 |
cilium 无策略 |
linkerd |
istio |
istio + vs |
无 Service Mesh |
吞吐量(Gbit/s) |
25.8 |
25.6 |
2.46 |
10.5 |
6.39 |
25.3 |
重传次数(Retr) |
291376 |
319255 |
947 |
229 |
900 |
313936 |
结论:
- Linkerd 在大数据传输下性能开销明显,不适合高吞吐量网络场景。
- Cilium 不启用 L7 时,性能与无 Service Mesh 几乎持平。
- 在高带宽、高吞吐量场景下,Istio 的适配性优于 Linkerd。
🧾 总结
- 若对延迟敏感、流量不大,推荐使用 Linkerd。
- 若需复杂、细粒度的流量管理能力,推荐使用 Istio。
- 不建议使用 Cilium 做 L7 代理,因其带来的性能开销远高于其他方案。