服务网格 33:无网格、Sidecar 和 Ambient 性能怎样公平比较
Ambient L4 比 Sidecar 更快,这个结论缺什么前提
先补功能等价。对 orders → inventory-v1/v2 的同一请求,无网格、sidecar、ambient L4、ambient 加 waypoint 可能承担不同的 mTLS、请求头路由、JWT/授权、重试、遥测和连接池任务。仅把四组在某台机器上打出 p99 排名,通常是在比较不同工作。前面的章节分别要求真实代理路由与策略证据;只有所有组满足同一业务与安全门禁的部分,才有可比较的延迟。无法使 ambient L4 执行 HTTP 头路由时,应把这项能力标 N/A,而不是令其绕过规则后参与“同功能”排名。
性能测量也不能修复语义差异:没有策略的低延迟不能替代受约束流量的可用性;应用完成一次报价与代理可能进行两次上游尝试也不能用同一个请求数作分母。报告至少分为四列:发起的逻辑请求数、代理上游尝试数、应用处理数、客户端成功数;记录请求 ID 映射。若启用错误身份拒绝,拒绝请求占到哪一种分母要事先说明。
锁定参数再看分位数
| 组别 | 提供的能力 | 对照前需要固定的差异 |
|---|---|---|
| 无网格 | 应用本身及可选的应用传输保护 | 是否额外提供同级别 mTLS、七层路由、授权;不满足者标 N/A |
| Sidecar | 每 Pod 代理,依实际策略执行 L4/L7 | 路由、重试、采样、代理资源限额与连接池 |
| Ambient L4 | CNI/ztunnel 的四层通路 | 不把缺失的 HTTP 路由/七层授权算作“更快” |
| Ambient + waypoint | L4 加共享 L7 代理 | waypoint 实际绑定、请求是否经过、共享容量与 placement |
在每一可比能力组里,固定 SKU、请求体大小、并发模型和客户端连接复用;用同样的 frontend → orders 调用链(orders 先调用 inventory,成功后再调用 external-stub) 链路部署到同种节点、同一可用区拓扑,并记录节点型号、内核、Kubernetes/CNI、实际代理镜像 digest、证书配置、采样率和预热。不要把原有 loadgen 的一次 GET 当压测:它只做功能调用;在以后准备固定到达率负载发生器时,要分别保留发起时刻、结束时刻、失败码、每跳服务版本及账本。低负载、接近饱和和受控慢依赖各测一组,使用多个独立轮次而不是重复解读某一段幸运窗口。
报告吞吐(完成/发起)、错误比例(写明哪类错误)、客户端 p50/p95/p99、分布及最大尾延迟、各组件 CPU/内存和节点网络指标;分位数不能把每个实例 p99 直接平均。Prometheus histogram 可在统一桶边界、同一窗口合并原始 bucket 后估计集群分位数;定时压测若重试放大,客户端总等待与上游每尝试耗时应拆开。采样不足时只报告样本量/窗口,不写毫秒级优劣或不确定的因果结论。
两道门禁:功能与故障
在 examples/service-mesh/ 先只读确认具名隔离 context:
1 | |
随后在冻结版隔离集群中对四模式分别采正常路径与错误身份、错误请求头、慢库存、单端点失效;先按资源提交→代理活跃配置→实际请求路径→后端版本/账本验收,有缺口的组不进入功能等价组。再逐组预热、在固定速率及固定连接复用条件下测量;受控失败路径中预期身份拒绝却放行、账本重复或请求错误率超出预设门禁时断言非零。对于无网格基线,若没有同等安全能力,就明确报告“非等价能力下的纯进程参考”,不能用它代表产品性能赢输。所有数据必须保存原始请求与测量脚本,而不是手工摘录官方产品图表。
目前 examples/service-mesh/evidence/33/20261001T145638Z-2693222/ 前置脚本退出 127,原始错误 NOT_RUN: kubectl: command not found;既无四个真实数据面部署,也无针对同等功能的压测负载发生器。因此四组性能数值与排名全部 NOT_RUN,本篇没有虚构的延迟或百分比;之前的本机 Go 测试只证明应用逻辑可运行。
练习与参考解答
- 测试显示 ambient L4 的 p99 小于 waypoint 组,而请求头分流和方法拒绝只在 waypoint 组启用;能称 ambient L4 性能更好且可替换 waypoint 吗?参考解答:不能。L4 组没做同样的七层工作,先把未满足功能标
N/A;如需求要求七层治理,只在满足相同能力的组内比较,注明硬件、采样和负载条件。 - 把每个实例的 p99 相加除实例数,会得到集群 p99 吗?参考解答:不会。构造 99 个快请求由 v1 处理、1 个极慢请求由 v2 处理的非均匀样本即可反例;分位数不满足可加性。需要聚合原始请求分布或同边界 histogram buckets,固定窗口与观测点重新计算。
官方参考与系列导航
- Istio performance and scalability:官方测量条件入口,不能把官方图当成本仓库测量。
- Prometheus histogram practice:聚合桶与分位数估计。
- Istio ambient data plane:L4 与 waypoint L7 能力边界。
