微服务网关选型:spring cloud gateway、zuul 1性能对比测试

1.Spring Cloud gateway与zuul1实现方式对比分析

zuul 1本质上是一个web servlet,基于servlet2.5,代码简单易看懂,但是使用阻塞api,不支持任何长连接,如websocket。
Spring cloud gateway使用netty进行网络通信建立在Spring Framework 5,Project Reactor和Spring Boot 2上,使用非阻塞API。支持Websockets,因为它与Spring紧密集成,所以它是一个更好的开发者体验。
优劣势分析:


2.压测工具选择

经过各个维度的对比测试,压测工具选择wrk
wrk是一款简单的HTTP压测工具,托管在Github上有20k star,https://github.com/wg/wrk。
wrk的一个很好的特性就是能用很少的线程压出很大的并发量。原因是它使用了一些操作系统特定的高性能io机制,比如选择,epoll,kqueue等。其实它是复用了redis的ae异步事件驱动框架。确切的说ae事件驱动框架并不是redis发明的,它来至于Tcl的解释器jim,这个小巧高效的框架,因为被redis采用而更多的被大家所熟知。

3.测试方法与环境

结合业务实际情况,压测部分主要压测HTTP 1.1协议,由于使用的tomcat容器压测并发范围100~1500(250是最佳并发),spring cloud gateway 2.1.1和spring cloud支持最高zuul版本1.3.1。
建立三个项目用于测试
项目1:使用springboot搭建springcloud gateway
项目2:使用springboot搭建springcloud zuul
项目3:使用springboot搭建测试api,分别编写空负载接口与模拟50ms业务处理接口
分别使用springcloud gateway与zuul代理测试api,压测其性能
测试服务器信息

3.压测

3.1 100并发空负载测试

3.2 250 并发空负载测试

3.3 500 并发空负载测试

3.4 1000并发空负载测试

3.5 100并发模拟50ms业务处理

3.6 250 并发模拟50ms业务处理

3.7 500并发模拟50ms业务处理

3.8 1000并发模拟50ms业务处理

4.结果初步分析

初步分析,在空负载的时候,SpringCloud Gateway比zuul 1 性能高50%左右,在模拟处理50ms业务后,,SpringCloud Gateway比zuul 1 性能高9倍左右。
但是考虑到zuul使用默认配置,结果可能不准,上网查找zuul生产优化配置调优后再次进行50ms业务处理压测。而SpringCloud Gateway查阅资料后暂无需优化
zuul优化参数参考如下:


红框标记的参数是生产推荐参数,优化配置后再次进行压力测试

5.zuul优化后的压测对比

5.1 100并发模拟50ms业务处理

5.2 250 并发模拟50ms业务处理

5.3 500并发模拟50ms业务处理

5.4 1000并发模拟50ms业务处理

6. 最终结果与结论

6.1 性能比较结论

在实际生产使用中zuul 1与gateway性能差距较小
可以看出,在实际生产使用中,zuul 1虽然使用的是同步io,但是可以通过参数优化提高性能理论上可以达到极限性能,而springcloud gateway使用的是异步io,不需优化既可以达到接近极限的性能。
从5.1~5.4的压测结果来看,优化后的zuul 1和springcloud gateway性能都很强,由于底层使用的是java基本已经是极限性能(从二者十分接近可以看出),二者平均耗时与最大耗时的比较恰好是同步和异步的特征,异步总体平均耗时比同步略高一点点,而异步由于线程内部切换导致响应时间分布没有同步均匀。这个特性与测试结果符合,证实了测试数据的可靠性。

6.2 zuul1与gateway选择参考

如果是新的Springcloud项目,建议使用gateway,因为Spring官方主推gateway,而zuul最高只支持到1.3.1版本。而zuul 2的实现原理也是异步netty,与gateway,可以推断出gateway网关使用的技术是未来的主流方向,同时有很好的官方支持,与Springcloud兼容性好,并且开发使用简单。
如果是使用zuul的已有项目,不建议更换网关,使用Spring自带的zuul 1较为稳定,且有大量的业内生产验证,排查问题方便,同时性能也不存在问题,缺点是不支持长连接,不支持websocket。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,706评论 4 366
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 68,002评论 1 301
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 110,462评论 0 250
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,375评论 0 216
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,763评论 3 294
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,849评论 1 224
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,033评论 2 317
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,768评论 0 204
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,490评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,734评论 2 253
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,204评论 1 264
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,566评论 3 260
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,227评论 3 241
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,137评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,934评论 0 201
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,926评论 2 283
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,774评论 2 274