这篇文章 👉(https://www.itmuch.com/spring-cloud-sum/performance-zuul-and-gateway-linkerd/)主要讨论了 Spring Cloud Gateway、Zuul 和 Linkerd 三种技术的性能对比,并纠正了一些关于 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 的场景。
关键点
- 性能对比:
- Spring Cloud Gateway 的性能是 Zuul 1.x 的 1.6 倍。👍
- Spring Cloud Gateway 的性能优于 Linkerd。👍
- 测试工具:
ab
工具不适合测试 Spring Cloud Gateway,因为它不支持 HTTP 1.1。- 建议使用
wrk
工具进行性能测试。
- 技术定位:
- 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。
Comments | NOTHING