关于Zuul & Spring Cloud Gateway & Linkerd之间的性能对比

发布于 17 天前  43 次阅读


这篇文章 👉(https://www.itmuch.com/spring-cloud-sum/performance-zuul-and-gateway-linkerd/)主要讨论了 Spring Cloud GatewayZuulLinkerd 三种技术的性能对比,并纠正了一些关于 Spring Cloud Gateway 性能的误解。以下是文章的主要内容和分析:

1. 动机

作者提到,很多人认为 Spring Cloud Gateway 的性能比 Zuul 差,甚至质疑为什么 Spring 官方还要开发 Spring Cloud Gateway😀?作者认为这种观点是错误的!因此写这篇文章来纠正。

2. 开端

  • 作者在网上找到了一篇使用 ab 工具对 Spring Cloud Gateway 和 Zuul 进行性能测试的文章,结果显示 Spring Cloud Gateway 的性能确实比 Zuul 差。
  • 但作者发现,Spring Cloud Gateway 的性能问题可能是因为 ab 工具的局限性。ab 是基于 HTTP 1.0 的,而 Spring Cloud Gateway 依赖的 Reactor Netty 不支持 HTTP 1.0,导致测试结果不准确。😕

3. 正确姿势

  • 官方建议使用 wrk 工具进行性能测试,因为它支持 HTTP 1.1,可以更准确地反映性能。😄
  • 官方还提供了一个基准测试项目(spring-cloud-gateway-bench),对比了 Spring Cloud Gateway、Zuul 和 Linkerd 的性能:
    • Spring Cloud Gateway:每秒处理 32,213 个请求(RPS)
    • Zuul:每秒处理 20,800 个请求(RPS)
    • Linkerd:每秒处理 28,050 个请求(RPS)
    • 结论:Spring Cloud Gateway 的性能是 Zuul 的 1.6 倍,甚至比 Linkerd 更好。

4. 展望

  • Zuul 1.x 是基于阻塞 I/O 的 API 网关,而 Spring Cloud Gateway 是基于非阻塞 I/O 的,性能更高。
  • Zuul 2.x 已经发布,基于 Netty,支持长连接,但 Spring Cloud 目前没有计划整合它。
  • Linkerd 是一个基于 Scala 的 Service Mesh,功能强大,但与 Spring Cloud Gateway 的定位不同。
  • Spring Cloud Gateway 是一个很有前途的项目,上手简单,功能强大。

5. 总结

  • Spring Cloud Gateway 的性能优于 Zuul 1.x,并且在某些场景下甚至优于 Linkerd。
  • 使用 ab 工具测试 Spring Cloud Gateway 的性能可能会导致误导,建议使用 wrk 工具。
  • Spring Cloud Gateway 是一个值得学习和使用的项目,特别适合需要高性能和非阻塞 I/O 的场景。

关键点

  1. 性能对比
    • Spring Cloud Gateway 的性能是 Zuul 1.x 的 1.6 倍。👍
    • Spring Cloud Gateway 的性能优于 Linkerd。👍
  2. 测试工具
    • ab 工具不适合测试 Spring Cloud Gateway,因为它不支持 HTTP 1.1。
    • 建议使用 wrk 工具进行性能测试。
  3. 技术定位
    • Zuul 1.x 是基于阻塞 I/O 的,而 Spring Cloud Gateway 是基于非阻塞 I/O 的。
    • Linkerd 是一个 Service Mesh,与 Spring Cloud Gateway 的功能定位不同。

适用场景

  • 如果你需要一个高性能、非阻塞的 API 网关,Spring Cloud Gateway 是一个很好的选择。
  • 如果你需要一个 Service Mesh,Linkerd 是一个值得考虑的项目。
  • 如果你需要一个支持长连接的网关,可以考虑 Zuul 2.x。