Sci论文 - 至繁归于至简,Sci论文网。 设为首页|加入收藏
当前位置:首页 > 计算机论文 > 正文

基于Hystrix服务熔断降级策略的优化分析与研究论文

发布时间:2022-11-04 11:18:59 文章来源:SCI论文网 我要评论














SCI论文(www.lunwensci.com):
 
  摘要:本方案公开了一种基于Hystrix框架的动态熔断判断方法,通过压力测试得出当前服务业务的最大负载量maxF,通过测试得出不同压力下的业务失败率范围,改造Hystrix框架源码,重写HealthCount类,记录请求运行总数与运行错误总数,重写PLUS统计方法,记录数据,改造Hystrix框架源码,重写断路器实现类,根据上一步统计的相关数据计算出服务负载量占最大负载量的百分比,来动态得出熔断失败率算法,最终根据得出的动态失败率来决定是否需要进行熔断。本方案主要对源码中的请求量统计进行重写,记录请求的相关统计数,同时对断路器实现部分重写断路状态判断调整算法,以实现动态熔断规则的处理。
 
  关键词:Hystrix与Hystrix服务;熔断降级策略;优化分析研究
 
  Optimization Analysis and Research Based on Hystrix Service Circuit Breaker Downgrade Strategy
 
  WANG Zhuo
 
  (Henan University of Urban Construction,Pingdingshan Henan 467000)
 
  【Abstract】:This solution discloses a dynamic fusejudgment method based on the Hystrix framework.Through the stress test,the maximum load maxF of the current service business is obtained,and the range of business failure rates under different pressures is obtained through the test.Write the HealthCount class,record the total number of requests and errors,rewrite the PLUS statistics method,record the data,modify the Hystrix framework source code,rewrite the circuit breaker implementation class,and calculate the service load account for the maximum load according to the relevant data in the previous step.The percentage of the amount to dynamically obtain the fusing failure rate algorithm,andfinally decide whether to perform fusing according to the obtained dynamic failure rate.This solution mainly rewrites the request volume statistics in the source code,records the relevant statistics of the requests,and at the same time partially rewrites the circuit breaker state judgment adjustment algorithm to realize the processing of dynamic fuse rules.
 
  【Key words】:Hystrix and Hystrix service;circuit breaker downgrade strategy;optimization analysis research
 
  1相关理论概述
 
  1.1服务雪崩
 
  由于微服务架构中各个相关微服务需要进行数据交换,所以我们可以做一个假设:假设服务a依赖服务b和服务c,而b服务和c服务有可能继续依赖其他的服务,继续下去会使得调用链路过长,技术上称1->n扇出。如果在a的链路上某个或几个被调用的子服务不可用或延迟较高,则会导致调用a服务的请求被堵住,堵住的请求会消耗占用掉系统的线程、IO等资源,当该类请求越来越多,占用的计算机资源越来越多的时候,会导致系统瓶颈出现,造成其他的请求同样不可用,最终导致业务系统崩溃,又称:雪崩效应。

\
 
 
  1.2 Hystrix
 
  Hystrix是一个用于分布式系统的延迟和容错的开源库。在分布式系统里,许多依赖不可避免的调用失败,比如超时、异常等,Hystrix能够保证在一个依赖出问题的情况下,不会导致整个服务失败,避免级联故障,以提高分布式系统的弹性。
 
  2服务熔断
 
  熔断机制是应对雪崩效应的一种微服务链路保护机制,当扇出链路的某个微服务不可用或者响应时间太长时,会进行服务的降级,进而熔断该节点微服务的调用,快速返回“错误”的响应信息。当检测到该节点微服务响应正常后恢复调用链路,在SpringCloud框架机制通过Hystrix实现,Hystrix会监控微服务见调用的状况,当失败的调用到一个阈值,缺省是5s内20次调用失败就会启动熔断机制,熔断机制的注解是HystrixCommand。
 
  2.1 Hystrix基于自反馈调节熔断状态的算法原理
 
  在电路系统中,会有保险丝,当电流过大产热过大时,保险丝会熔断以切断与外部电路的联通。Hystrix充当了保险丝的角色,当请求量过大且请求错误量超过我们设定的阈值时,Hystrix的熔断器会熔断,让调用者服务自动降级以保护服务[1]。自动降级后的服务不会再远程调用依赖方的服务,转向我们的降级策略去执行,比如给个失败页面快速失败,减少调用方的漫长等待。此外,熔断开启,服务降级后,Hystrix有自动恢复的功能,假如我们设定每次熔断后休眠5s(5s内不调用远程服务),到时间后会自动重试,让20次请求尝试调用远程服务,如果能返回正常结果,就认为服务恢复正常,熔断器自动关闭,服务降级停止。根据这一过程,Hystrix的状态机分为三种状态:open、closed、half-open,熔断器会在这三种状态之间切换。具体来讲:open:被调用方在一定时间窗内请求错误率大于设定的阈值,被判定为异常,熔断开启,服务降级,调用方执行本地的降级策略,不进行远程调用;closed:被调用服务正常,熔断关闭,调用方远程调用服务[2];half-open:尝试的中间状态,调用方熔断且在休眠了一段时间后,调用方发起测试性的远程调用,测试被调用者是否正常[3]。熔断器的开关状态取决于HystrixCommandMetrics对象里面的数据,该对象存储了类似远程接口调用次数、失败次数等数据,以时间窗口的形式统计各维度数据[4]。
 
  2.2基于Hystrix框架的动态熔断判断方法
 
  本方案涉及一种动态熔断判断方法,特别是一种基于Hystrix框架的动态熔断判断方法。
 
  在分布式系统中,多个服务之间通常是通过Rpc远程调用的方式实现的,这种服务依赖的模式可能会带来问题,如果被依赖的服务A挂掉,而调用者B没采取任何防御措施,可能会导致调用者B的所有线程在数秒内处于阻塞状态释放不了,后续请求累积增加,可能导致调用者B瘫痪,服务B瘫痪又会导致B的调用者C瘫痪,最后引起服务雪崩问题。因此,一定的防御措施(降级策略)需要在系统设计时考虑到,当服务调用方发现提供方的服务出现异常时,调用方能够快速切换到预置好的降级策略中。
 
  正常时,调用者(UserRequest)调用Dependency A、H、I、P服务。在请求量较大时,在数秒内所有线程会阻塞,导致所有资源饱和,系统无法再提供服务,如图1所示。
 
  \
 
  配置方式有2种,一个是在注解HystrixCommand属性里面配置(比较麻烦),一个是在配置文件中配置,两种都可以,但在注解中配置的优先级更高,下面是一些常用的配置超时时间(默认1000ms,单位:ms)
 
  (1)hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds调用者的配置文件中配置,调用者所有方法的超时时间都是该值。
 
  (2)hystrix.command.HystrixCommandKey.execution.isolation.thread.timeoutInMilliseconds调用者的指定方法中配置,优先级高于上边的全局配置统计次数。circuitBreaker.requestVolumeThreshold当在配置时间窗口内达到此数量的失败后,进行熔断,默认20个close休眠试间circuitBreaker.sleepWindow InMilliseconds熔断多久后开始尝试是否恢复,默认5s出错百分比,circuitBreaker.errorThresholdPercentage当错误超过该百分比触发熔断,默认50%线程池核心线程数hystrix.threadpool.default.coreSize(默认为10)[5]。
 
  本方案与现有技术相比,具有以下优点和效果∶本方案基于Hystrix框架实现的动态熔断规则方法,主要对源码中的请求量统计进行重写,记录请求的相关统计数,同时对断路器实现部分重写断路状态判断调整算法,以实现动态熔断规则的处理。在部分失败率高的场景下,通过动态熔断机制,前后服务的整体成功率得到了提升,未使用动态熔断机制,固定失败率时,整体失败率达到95%,其中3375个请求被熔断,使用动态熔断机制时,失败率随请求量增大动态调整,此比图中请求量事大,但整体失败率只有610%,其中只有1308个请求被熔断,因此服务性能得到提升。
 
  3具体实施方式
 
  下面通过实施例对本方案作进一步的详细说明,以下实施例是对本方案的解释而本方案并不局限于以下实施例。
 
  实施例1:
 
  本方案的一种基于Hystrix框架的动态熔断判断方法,包含以下步骤:
 
  步骤一:通过压力测试得出当前服务业务的最大负载量maxF;通过压力测试得出不加熔断功能时当前服务能正常运行同时不影响其他服务时可以承受的最大请求量totalRequests,同时根据统计时间与响应时间计算出最大负载量maxF=totalRequests/(duringTimeI nMilliseconds*meanTimeInMilliseconds)。
 
  步骤二:通过测试得出不同压力下的业务失败率范围(最小失败率minErrorPercentage与最大失败率maxErrorPercentage);在最大负载量的压力下测试得出服务的请求失败率,统计出一段时间的最大与最小失败率值,在最后进行动态熔断测试时进行微调以更好的适应具体的环境。
 
  步骤三:改造Hystrix框架源码,重写HealthCount类,记录请求运行总数与运行错误总数,重写plus统计方法,记录数据。

\
 
  步骤四:改造Hystrix框架源码,重写断路器实现类,根据上一步统计的相关数据计算出服务负载量占最大负载量的百分比,来动态得出熔断失败率算法,最终根据得出的动态失败率来决定是否需要进行熔断。
 
  熔断失败率算法具体为,每秒请求率qps=totalRequests*1000/duringTimeIn Milliseconds;
 
  负载量f=qps*1000/meanTime InMilliseconds;
 
  动态失败率p=minErrorPercentage+(maxError Percentage-minErrorPercentage)*(1-f/maxF);
 
  其中to talRequests表示一次统计中获取到的请求运行总数;duringTimeInMilliseconds表示一次统计的总时长;meanTimeInMilliseconds表示请求的平均响应时间。
 
  4结语
 
  该文当中所做的主要内容就是针对于一种动态熔断的判断,而且这种动态熔断的判断是基于Hystrix框架的。
 
  这一种动态熔断的判断方法的背景是由于在微服务架构当中微服务之间需要进行彼此交换,因此我们便可以提出一个假设:想要执行服务A,那么就需要服务B和服务C的共同运行,但是服务C和服务B的运行也可能需要别的服务,因此如果这么下去的话,会让链路变得非常冗长,导致输出结果会变得很慢,如果在链路上出现了一些服务停滞或者是无法被调动的情况,就会导致A服务无法被执行。这种请求没有办法被执行就会占据相关的资源,如果这种错误的请求越来越多,就会导致系统出现卡顿,达到瓶颈状态,最终会让系统出现崩溃的情况。
 
  我们为了更好的解决这种雪崩式的问题就需要做出熔断和隔离,我们为了熔断和隔离就开发出了Hystrix这样的一款框架,而且当下主要用来熔断的方案就是Hystrix这一个框架。我们在这个框架的基础之上,对于数据进行同步,会让请求量的波动很大,如果请求量达到峰值的话,就会对于其他的服务有一个比较大的影响,因此我们需要根据请求量来实现动态监控,如果出现了请求量比较高的时候,就需要进行熔断操作,从而能够让别的服务能够正常运行,对于我们的服务器,我们需要实现动态熔断,不过,Hystrix无法进行动态熔断,只能进行固定控制。
 
  参考文献
 
  [1]张勇,董艺,叶夏明,等.电压互感器熔断器熔断对“三道防线”的影响及其故障诊断[A].华东六省一市电机工程(电力)学会.浙江省电力学会2017年度优秀论文集[C]//华东六省一市电机工程(电力)学会:浙江省电力学会,2017:28-34.
 
  [2]芦锋.一起由熔断器引发的高压并联电容补偿柜事故分析[A].陕西省电网节能与电能质量技术学会.2017年电网节能与电能质量论文集[C].陕西省电网节能与电能质量技术学会:陕西省电网节能与电能质量技术学会,2017:199-201+206.
 
  [3]刘建文,陈希建,谢鹏.发电机机端TV一次侧熔断器熔断在线处理实践总结[A].浙江省电力学会、江苏省电机工程学会、安徽省电机工程学会.浙江省电力学会2015年度优秀论文集[C].浙江省电力学会、江苏省电机工程学会、安徽省电机工程学会:浙江省电力学会,2015:163-168.
 
  [4]蔡明.投退直流熔断器引起开关误跳闸的原因分析[A].江西省电机工程学会.2014年江西省电机工程学会年会论文集[C].江西省电机工程学会:江西省电机工程学会,2014:259-260+279.
 
  [5]SUHONO S,PURNAMA H,UTOMO H B.Effect of Distributed Generation Based on Synchronous Generator on Fuse Recloser Protection Coordination in Medium Voltage Network[C]//2nd International Seminar of Science and Applied Technology,2021:271-276.
 
关注SCI论文创作发表,寻求SCI论文修改润色、SCI论文代发表等服务支撑,请锁定SCI论文网!
 

文章出自SCI论文网转载请注明出处:https://www.lunwensci.com/jisuanjilunwen/45755.html

相关内容

发表评论

Sci论文网 - Sci论文发表 - Sci论文修改润色 - Sci论文期刊 - Sci论文代发
Copyright © Sci论文网 版权所有 | SCI论文网手机版 | 鄂ICP备2022005580号-2 | 网站地图xml | 百度地图xml