动机

已经不止一次看到“Spring Cloud Gateway性能比Zuul更差”的言论了,不少人人云亦云,来问我,既然如此,那Spring官方还开发Spring Cloud Gateway干嘛?难道仅仅是为了支持Zuul 1.x不支持的长连接、Web Socket吗?

故而写篇博客,纠正一下大家的错误观点。

开端

网上搜索了一下,说Spring Cloud Gateway性能比Zuul差的言论来自:http://www.servicemesh.cn/?/article/45

作者使用ab 进行benchmark,操作非常标准。从结果来看,确实Spring Cloud Gateway比Zuul差了一大截。

reactor-netty has issues with http 1.0 and hence ab. reactor/reactor-netty#21

As discussed recently about the issue raised on https://jira.spring.io/browse/SPR-14964, a very simple ab -n 1 -c 1 http://localhost:8082/items/10 on Spring + Reactor Netty based server block forever likely because Reactor Netty does not support HTTP 1.0.

里面说了,Reactor Netty不支持HTTP 1.0,而Spring Cloud Gateway依赖了reactor-netty 。

也就是说——由于reactor-netty的bug,使用ab 压测结果并不准确!

正确姿势

官方建议使用wrk 进行benchmark测试。不仅如此,官方人员还十(丧)分(心)贴(病)心(狂)地创建了一个benchmark的项目:**spring-cloud-gateway-bench** ,其中对比了:

Spring Cloud Gateway

Zuul

Linkerd

三者的性能。

思路非常简单:static 项目是一个使用Go语言编写的简单服务器;然后分别使用Gateway/Zuul/Linkerd来代理该服务的端点,并对比。

最终结果:

组件

RPS(request per second)

Spring Cloud Gateway

Requests/sec: 32213.38

Zuul

Requests/sec: 20800.13

Linkerd

Requests/sec: 28050.76

从结果可知,Spring Cloud Gateway的RPS是Zuul的1.6倍!比Linkerd性能还好!

展望本文的Zuul,指的是Zuul 1.x,是一个基于阻塞io的API Gateway。

Spring Cloud Gateway是一个很有前途的项目,上手简单,功能也比较强大。

Linkerd也是一个非常有前途的项目,是基于Scala实现的、目前市面上仅有的生产级别的Service Mesh(其他诸如Istio、Conduit暂时还不能用于生产)。

Zuul已经发布了Zuul 2.x,基于Netty,也是非阻塞的,支持长连接,但Spring Cloud暂时还没有整合计划。

相关文章

linkerd mysql_纠错帖:Zuul Spring Cloud Gateway Linkerd性能对比相关推荐

  1. 纠错帖:Zuul Spring Cloud Gateway Linkerd性能对比

    原文:http://www.itmuch.com/spring-cloud-sum/performance-zuul-and-gateway-linkerd/ ,转载请说明出处. 动机 已经不止一次看 ...

  2. 微服务网关spring cloud gateway入门详解

    1.API网关 API 网关是一个处于应用程序或服务( REST API 接口服务)之前的系统,用来管理授权.访问控制和流量限制等,这样 REST API 接口服务就被 API 网关保护起来,对所有的 ...

  3. 微服务网关Zuul迁移到Spring Cloud Gateway

    https://juejin.im/post/5ba8daa56fb9a05cfe486ebf 背景 在之前的文章中,我们介绍过微服务网关Spring Cloud Netflix Zuul,前段时间有 ...

  4. 青柠开车Spring Cloud(六) —— Spring Cloud Gateway与zuul使用对比

    青柠开车Spring cloud(一) -- 生态系统以及在企业项目中的基础架构图     (1-7),有时间可以看看 项目源码github地址 补充 Gateway简介 快速入门 Gateway 项 ...

  5. Spring Cloud Gateway真的有那么差吗?

    Spring Cloud从一开始最受大家质疑的就是网关性能,那是由于Spring Cloud最初选择了使用Netflix几年前开源的Zuul作为基础,而高性能版的Zuul 2在经过了多次跳票之后,对于 ...

  6. Spring cloud gateway 详解和配置使用

    spring cloud gateway 介绍 1. 网关是怎么演化来的 单体应用拆分成多个服务后,对外需要一个统一入口,解耦客户端与内部服务 注:图片来自网络 2. 网关的基本功能 网关核心功能是路 ...

  7. 跟我学SpringCloud | 第十二篇:Spring Cloud Gateway初探

    SpringCloud系列教程 | 第十二篇:Spring Cloud Gateway初探 Springboot: 2.1.6.RELEASE SpringCloud: Greenwich.SR1 如 ...

  8. SpringCloud 2020版本教程2:使用spring cloud gateway作为服务网关

    点击关注公众号,Java干货及时送达 Spring Cloud Gateway是Spring Cloud官方推出的第二代网关框架,取代Zuul网关.网关作为流量的,在微服务系统中有着非常作用,网关常见 ...

  9. spring cloud gateway之filter篇

    点击上方"方志朋",选择"置顶或者星标" 你的关注意义重大! 在上一篇文章详细的介绍了Gateway的Predict,Predict决定了请求由哪一个路由处理, ...

最新文章

  1. 3DMAX 批量 场景 对象 导出 .X格式 脚本
  2. 对于mysql存储过程感想_存储过程学习心得
  3. ECharts的简单使用过程
  4. AlfaLaval公司采用低速通风技术冷却数据中心
  5. 3d怎么把两个面拼接在一起_vr全景看房用什么软件做的?3D看房是怎么拍摄的?...
  6. 优酷 米兔机器人_ONEBOT积木机器人上手评测,寓教于乐的反履机甲让孩子爱不释手...
  7. 神级代码编辑软件(Sublime Text 3) v3.3114 汉化特别版
  8. Ms Excel 2010合并单元格方法
  9. 面向对象的一些补充(type创建类,__mro__)
  10. Linux kernel SMP 中断机制
  11. 博弈论中的简单合作博弈 C#实现
  12. 新网站如何才能被百度快速收录?
  13. 使用Kieker(AspectJ)监控控制台程序
  14. Oracle 官网登录账户 下载资源
  15. linux系统halt,Linux命令之halt - 停止系统运行但不关闭电源
  16. 医保种类及医疗保险待遇
  17. [已解决]关于win10计算器无法使用的问题
  18. js 各省市地名数据(包含各省市区域代码)(未测试)
  19. 面试题——二进制相关(最小白鼠试毒问题)
  20. Windows11-Redis 最新安装教程

热门文章

  1. win平板计算机,2020年10款最佳Windows系统平板电脑推荐
  2. 关于ORACLE PLSQL读文件
  3. 青蛙跳台阶变态青蛙跳台阶
  4. C语言循环语句——while、for、do while
  5. 四川大学计算机学院2016级毕业生,小猿分享 | 四年磨一剑:计算机学院2016级优秀毕业生高含宁专访...
  6. js+html+css+jQuery实现简单购物车
  7. honor荣耀为什么要研发高端?
  8. PC 真的不行了!Intel、AMD 同遭生死劫
  9. 重装Office后打开Powerpoint和excel提示找不到VCRUNTIME140_1.dll的解决办法(亲测成功,简单有效)
  10. 阿里研究员吴翰清:世界需要什么样的智能系统