JAVA语言之微服务架构中zuul的两种隔离机制实验
赵泽红 2019-04-10 来源 : 阅读 683 评论 1

摘要:本文主要向大家介绍了JAVA语言之微服务架构中zuul的两种隔离机制实验,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。

本文主要向大家介绍了JAVA语言之微服务架构中zuul的两种隔离机制实验,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。

JAVA语言之微服务架构中zuul的两种隔离机制实验

ZuulException REJECTED_SEMAPHORE_EXECUTION 是一个最近在性能测试中经常遇到的异常。查询资料发现是因为zuul默认每个路由直接用信号量做隔离,并且默认值是100,也就是当一个路由请求的信号量高于100那么就拒绝服务了,返回500。

信号量隔离

既然默认值太小,那么就在gateway的配置提高各个路由的信号量再实验。


两个路由的信号量分开提高到2000和1000。我们再用gatling测试一下。

1setUp(scn.inject(rampUsers(200) over (3seconds)).protocols(httpConf))

这是我们的模型,3s内启动200个用户,顺序访问5个API。所以会有1000个request。机器配置只有2核16G,并且是docker化的数据库。所以整体性能不高。


看结果仍然有57个KO,但是比之前1000个Request有900个KO的比例好很多了。

线程隔离

Edgware版本的spring cloud提供了另一种基于线程池的隔离机制。实现起来也非常简单,


use-separate-thread-pools的意思是每个路由都有自己的线程池,而不是共享一个。

thread-pool-key-prefix会指定一个线程池前缀方便调试。

hystrix的部分主要设置线程池的大小,这里设置了10000,其实并不是越大越好。线程池越大削峰填谷的效果越显著,也就是时间换空间。系统的整体负载会上升,导致响应时间越来越长,那么当响应时间超过某个限度,其实系统也算是不可用了。后面可以看到数据。

这次没有500的情况了,1000个Request都正常返回了。

比较

从几张图对比下两种隔离的效果,上图是信号量隔离,下图是线程隔离。

响应时间分布

直观上能发现使用线程隔离的分布更好看一些,600ms内的响应会更多一些。

两张图展示的是同一时刻的Request和Response的数量。

先看信号量隔离的场景,Response per second是逐步提升的,但是达到一个量级后,gateway开始拒绝服务。猜测是超过了信号量的限制或是超时?

线程隔离的这张就比较有意思了,可以看到Request per second上升的速度要比上面的快,说明系统是试图接收更多的请求然后分发给线程池。再看在某个时间点Response per second反而开始下降,因为线程不断的创建消耗了大量的系统资源,响应变慢。之后因为请求少了,负载降低,Response又开始抬升。所以线程池也并非越大越好,需要不断调试寻找一个平衡点。

小结

线程池提供了比信号量更好的隔离机制,并且从实际测试发现高吞吐场景下可以完成更多的请求。但是信号量隔离的开销更小,对于本身就是10ms以内的系统,显然信号量更合适。

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注编程语言JAVA频道!

本文由 @职坐标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 2
看完这篇文章有何感觉?已经有2人表态,0%的人喜欢 快给朋友分享吧~
评论(1)
后参与评论
ceshi01
,,
2019/04/18 18:16:37
本文作者 联系TA

行是知之始,知是行之成,知行合一,方能大成。

  • 10
    文章
  • 1280
    人气
  • 100%
    受欢迎度

已有2人表明态度,100%喜欢该老师!

进入TA的空间
名师指导直通车
  • 资料索取
    资料索取
  • 答疑解惑
    答疑解惑
  • 技术交流
    技术交流
  • 职业测评
    职业测评
  • 面试技巧
    面试技巧
  • 高薪秘笈
    高薪秘笈
TA的其他文章 更多>>
JAVA语言之Solr的工作原理以及如何管理索引库
经验技巧 100% 的用户喜欢
JAVA语言之Spring知识复习
经验技巧 0% 的用户喜欢
JAVA语言之mysql表锁、行锁、索引之间暧昧的关系
经验技巧 0% 的用户喜欢
JAVA语言之Git内部原理之Git引用
经验技巧 0% 的用户喜欢
JAVA语言之Java 11 正式发布,这 8 个逆天新特性教你写出更牛逼的代码
经验技巧 0% 的用户喜欢
其他海同名师 更多>>
刘新华
刘新华 联系TA
实力型。激情饱满,对专业充满热情
吴翠红
吴翠红 联系TA
独创“教、学、练、测”循环教学模式
吕益平
吕益平 联系TA
熟悉企业软件开发的产品设计及开发
黄泽民
黄泽民 联系TA
擅长javase核心技术
程钢
程钢 联系TA
擅长大型企业商业网站开发和管理
经验技巧30天热搜词 更多>>

您输入的评论内容中包含违禁敏感词

我知道了

X
免费获取海同IT培训资料
验证码手机号,获得海同独家IT培训资料
获取验证码
提交

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    ICP许可  沪B2-20190160

站长统计