Linkerd比Istio快:用了Rust


我们使用两个项目的最新版本重新运行了基准测试。我们的结果表明,即使添加了策略,Linkerd 仍然比 Istio 快得多,同时只消耗系统资源的一小部分。在我们测试的最高负载水平下,Linkerd 引入的额外尾部延迟几乎比 Istio 少一个数量级。
在这些实验中,我们将相同的 Kinvolk 基准测试套件应用于两个项目的最新稳定版本:Linkerd 2.11.1(默认安装)和 Istio 1.12.0(“最小”配置)。我们使用基准线束使用的Lokomotive Kubernetes 发行版在 Kubernetes v1.21.4 集群上运行基准线束,在Equinix Metal向 CNCF 项目提供的裸机硬件上运行。
 
测试了哪些服务网格功能?
虽然每个服务网格都提供了大量功能,但在这些实验中实际上只有其中的一个子集在起作用:

  • 两个网格都 启用了双向TLS,并且正在加密所有应用程序 pod 之间的流量和验证身份。
  • 两个网格都是报告指标,包括 L7 指标,尽管在本实验中没有使用这些指标。
  • 默认情况下,两个网格都在 INFO 级别记录了各种消息。我们没有配置日志记录。
  • 没有明确启用重试、超时、分布式跟踪、多集群通信或其他功能。

 
总结
在这些旨在模拟现实场景中行为的基准测试中,我们再次看到最新版本的 Linkerd 显着优于最新版本的 Istio,同时保持了显着更小的资源成本。在评估的最高吞吐量下,我们看到 Linkerd 在数据平面上消耗了 1/6 的内存和 55% 的 CPU,同时提供了 1/3 的额外中值延迟和 1/8 的额外最大延迟 Istio。
值得注意的是,Linkerd 在 200 RPS 时的最坏情况延迟比 2,000 RPS 时更差。这可能是由于实验过程中的网络干扰。将来,我们可能希望更改异常值检测的标准;目前,为了透明起见,我们按原样报告这些结果。
  
为什么 Linkerd 更快更轻?
Linkerd 和 Istio 在性能和资源成本上的巨大差异主要归结为一件事:Linkerd 的基于 Rust 的“微代理”,Linkerd2-proxy。这个微代理为 Linkerd 的整个数据平面提供动力,基准测试在很大程度上反映了它的性能和资源消耗。
Linkerd2-proxy 不仅速度快、轻且安全,它代表了整个 CNCF 领域中一些最前沿的技术。