基于Hystrix框架的动态熔断判断方法技术

技术编号:17912191 阅读:35 留言:0更新日期:2018-05-10 18:08
本发明专利技术公开了一种基于Hystrix框架的动态熔断判断方法,通过压力测试得出当前服务业务的最大负载量maxF,通过测试得出不同压力下的业务失败率范围,改造Hystrix框架源码,重写HealthCount类,记录请求运行总数与运行错误总数,重写plus统计方法,记录数据,改造Hystrix框架源码,重写断路器实现类,跟据上一步统计的相关数据计算出服务负载量占最大负载量的百分比,来动态得出熔断失败率算法,最终根据得出的动态失败率来决定是否需要进行熔断。本发明专利技术主要对源码中的请求量统计进行重写,记录请求请求的相关统计数,同时对断路器实现部分重写断路状态判断调整算法,以实现动态熔断规则的处理。

【技术实现步骤摘要】
基于Hystrix框架的动态熔断判断方法
本专利技术涉及一种动态熔断判断方法,特别是一种基于Hystrix框架的动态熔断判断方法。
技术介绍
由于微服务架构中各个相关微服务需要进行数据交换,所以我们可以做一个假设:假设服务A依赖服务B和服务C,而B服务和C服务有可能继续依赖其他的服务,继续下去会使得调用链路过长,技术上称1->N扇出。如果在A的链路上某个或几个被调用的子服务不可用或延迟较高,则会导致调用A服务的请求被堵住,堵住的请求会消耗占用掉系统的线程、io等资源,当该类请求越来越多,占用的计算机资源越来越多的时候,会导致系统瓶颈出现,造成其他的请求同样不可用,最终导致业务系统崩溃,又称:雪崩效应。为了解决微服务雪崩效应需要对服务依赖做隔离与熔断,Hystrix就是处理依赖隔离与熔断的开源框架,是目前较为主流的熔断实现方案。在此基础上我们的问题是部分同步数据业务的请求量波动非常大,在同步数据业务请求量达到峰值时会对其他业务造成较大的影响(如数据库IO等瓶颈导致),所以需要根据请求量进行动态失败控制,在请求量较高时10%的失败率就需要进行熔断(失败超时时间设置较短),以保障其他业务的正常使用,而在请求量较低时50%失败率才需要进行熔断。因此需要进行动态的熔断控制。但是Hystrix无法对服务进行动态的熔断控制,只能进行固定的失败率控制。
技术实现思路
本专利技术所要解决的技术问题是提供一种基于Hystrix框架的动态熔断判断方法,采用Hystrix框架根据服务请求量动态的调整服务熔断规则。为解决上述技术问题,本专利技术所采用的技术方案是:一种基于Hystrix框架的动态熔断判断方法,其特征在于包含以下步骤:步骤一:通过压力测试得出当前服务业务的最大负载量maxF;步骤二:通过测试得出不同压力下的业务失败率范围(最小失败率minErrorPercentage与最大失败率maxErrorPercentage);步骤三:改造Hystrix框架源码,重写HealthCount类,记录请求运行总数与运行错误总数,重写plus统计方法,记录数据;步骤四:改造Hystrix框架源码,重写断路器实现类,跟据上一步统计的相关数据计算出服务负载量占最大负载量的百分比,来动态得出熔断失败率算法,最终根据得出的动态失败率来决定是否需要进行熔断。进一步地,所述步骤一具体为,通过压力测试得出不加熔断功能时当前服务能正常运行同时不影响其他服务时可以承受的最大请求量totalRequests,同时根据统计时间与响应时间计算出最大负载量maxF=totalRequests/(duringTimeInMilliseconds*meanTimeInMilliseconds)。进一步地,所述步骤二具体为,在最大负载量的压力下测试得出服务的请求失败率,统计出一段时间的最大与最小失败率值,在最后进行动态熔断测试时进行微调以更好的适应具体的环境。进一步地,所述步骤二具体为,在最大负载量的压力下测试得出服务的请求失败率,通过服务平时的性能估算一段时间的最大与最小失败率值,在最后进行动态熔断测试时可以进行微调以更好的适应具体的环境。进一步地,所述熔断失败率算法具体为,每秒请求率qps=totalRequests*1000/duringTimeInMilliseconds;负载量f=qps*1000/meanTimeInMilliseconds;动态失败率p=minErrorPercentage+(maxErrorPercentage-minErrorPercentage)*(1–f/maxF);其中totalRequests表示一次统计中获取到的请求运行总数;duringTimeInMilliseconds表示一次统计的总时长;meanTimeInMilliseconds表示请求的平均响应时间。本专利技术与现有技术相比,具有以下优点和效果:本专利技术基于Hystrix框架实现的动态熔断规则方法,主要对源码中的请求量统计进行重写,记录请求请求的相关统计数,同时对断路器实现部分重写断路状态判断调整算法,以实现动态熔断规则的处理。在部分失败率高的场景下,通过动态熔断机制,前后服务的整体成功率得到了提升,未使用动态熔断机制,固定失败率时,整体失败率达到95%,其中3375个请求被熔断,使用动态熔断机制时,失败率随请求量增大动态调整,此图中请求量更大,但整体失败率只有61%,其中只有1308个请求被熔断,因此服务性能得到提升。具体实施方式下面通过实施例对本专利技术作进一步的详细说明,以下实施例是对本专利技术的解释而本专利技术并不局限于以下实施例。实施例1:本专利技术的一种基于Hystrix框架的动态熔断判断方法,包含以下步骤:步骤一:通过压力测试得出当前服务业务的最大负载量maxF;通过压力测试得出不加熔断功能时当前服务能正常运行同时不影响其他服务时可以承受的最大请求量totalRequests,同时根据统计时间与响应时间计算出最大负载量maxF=totalRequests/(duringTimeInMilliseconds*meanTimeInMilliseconds)。步骤二:通过测试得出不同压力下的业务失败率范围(最小失败率minErrorPercentage与最大失败率maxErrorPercentage);在最大负载量的压力下测试得出服务的请求失败率,统计出一段时间的最大与最小失败率值,在最后进行动态熔断测试时进行微调以更好的适应具体的环境。步骤三:改造Hystrix框架源码,重写HealthCount类,记录请求运行总数与运行错误总数,重写plus统计方法,记录数据;步骤四:改造Hystrix框架源码,重写断路器实现类,跟据上一步统计的相关数据计算出服务负载量占最大负载量的百分比,来动态得出熔断失败率算法,最终根据得出的动态失败率来决定是否需要进行熔断。熔断失败率算法具体为,每秒请求率qps=totalRequests*1000/duringTimeInMilliseconds;负载量f=qps*1000/meanTimeInMilliseconds;动态失败率p=minErrorPercentage+(maxErrorPercentage-minErrorPercentage)*(1–f/maxF);其中totalRequests表示一次统计中获取到的请求运行总数;duringTimeInMilliseconds表示一次统计的总时长;meanTimeInMilliseconds表示请求的平均响应时间。实施例2:一种基于Hystrix框架的动态熔断判断方法,包含以下步骤:步骤一:通过压力测试得出当前服务业务的最大负载量maxF;通过压力测试得出不加熔断功能时当前服务能正常运行同时不影响其他服务时可以承受的最大请求量totalRequests,同时根据统计时间与响应时间计算出最大负载量maxF=totalRequests/(duringTimeInMilliseconds*meanTimeInMilliseconds)。步骤二:通过测试得出不同压力下的业务失败率范围(最小失败率minErrorPercentage与最大失败率maxErrorPercentage)本文档来自技高网...

【技术保护点】
一种基于Hystrix框架的动态熔断判断方法,其特征在于包含以下步骤:步骤一:通过压力测试得出当前服务业务的最大负载量maxF;步骤二:通过测试得出不同压力下的业务失败率范围(最小失败率minErrorPercentage与最大失败率maxErrorPercentage);步骤三:改造Hystrix框架源码,重写HealthCount类,记录请求运行总数与运行错误总数,重写plus统计方法,记录数据;步骤四:改造Hystrix框架源码,重写断路器实现类,跟据上一步统计的相关数据计算出服务负载量占最大负载量的百分比,来动态得出熔断失败率算法,最终根据得出的动态失败率来决定是否需要进行熔断。

【技术特征摘要】
1.一种基于Hystrix框架的动态熔断判断方法,其特征在于包含以下步骤:步骤一:通过压力测试得出当前服务业务的最大负载量maxF;步骤二:通过测试得出不同压力下的业务失败率范围(最小失败率minErrorPercentage与最大失败率maxErrorPercentage);步骤三:改造Hystrix框架源码,重写HealthCount类,记录请求运行总数与运行错误总数,重写plus统计方法,记录数据;步骤四:改造Hystrix框架源码,重写断路器实现类,跟据上一步统计的相关数据计算出服务负载量占最大负载量的百分比,来动态得出熔断失败率算法,最终根据得出的动态失败率来决定是否需要进行熔断。2.按照权利要求1所述的基于Hystrix框架的动态熔断判断方法,其特征在于:所述步骤一具体为,通过压力测试得出不加熔断功能时当前服务能正常运行同时不影响其他服务时可以承受的最大请求量totalRequests,同时根据统计时间与响应时间计算出最大负载量maxF=totalRequests/(duringTimeInMilliseconds*meanTimeInMilliseconds)。3.按照权利要求1所述的基于Hystrix框架的动态熔断判断方法,其特...

【专利技术属性】
技术研发人员:王昕赵文军吴迎春刘本中胡明慧宋炜伟
申请(专利权)人:南京联创信息科技有限公司南京信通科技有限责任公司
类型:发明
国别省市:江苏,32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1