美文网首页
一张图深入理解Hystrix断路器的工作原理

一张图深入理解Hystrix断路器的工作原理

作者: 七叶笔记 | 来源:发表于2019-09-30 08:48 被阅读0次
    image.png

    根据上图来理解下Hystrix断路器的工作原理。
    1、首先,经过断路器的流量需要超过一定的阈值【通过HystrixCommandProperties.circuitBreakerRequestVolumeThreshold()进行配置】,才会去判断要不要断路。
    看图中的例子,要求10s内经过断路器的请求达到50个才可能去触发判断断路,否则即使请求全失败也不会去判断要不要断路,比如图中 1,2,3步

    2、如果断路器统计到的异常请求超过一定的比例【通过HystrixCommandProperties.circuitBreakerErrorThresholdPercentage()配置】一般是50%,如图中4,5,7,100个请求中,有60个出现异常,失败率达到60%,此时则会开启断路。

    3、断路器的状态由close 转换为open

    4、断路器打开之后,用户再次发起的请求都会被断路,不再调用相应的服务,而是走服务降级策略fallback

    5、经过一段时间【HystrixCommandProperties.circuitBreakerSleepWindowInMilliseconds()】之后,断路器会改为半开状态(half-open),此时用户再次请求会尝试调用后端服务,看是否能够成功。如果成功则将断路器关闭(close)

    断路器常用配置参数说明:

    (1)circuitBreaker.enabled

    控制短路器是否允许工作,包括跟踪依赖服务调用的健康状况,以及对异常情况过多时是否允许触发短路,默认是true

    HystrixCommandProperties.Setter()
    .withCircuitBreakerEnabled(boolean value)

    (2)circuitBreaker.requestVolumeThreshold

    设置一个rolling window,滑动窗口中,最少要有多少个请求时,才触发开启短路

    举例来说,如果设置为20(默认值),那么在一个10秒的滑动窗口内,如果只有19个请求,即使这19个请求都是异常的,也是不会触发开启短路器的

    HystrixCommandProperties.Setter()
    .withCircuitBreakerRequestVolumeThreshold(int value)

    (3)circuitBreaker.sleepWindowInMilliseconds

    设置在短路之后,需要在多长时间内直接reject请求,然后在这段时间之后,再重新变为half-open状态,尝试允许请求通过以及自动恢复,默认值是5000毫秒

    HystrixCommandProperties.Setter()
    .withCircuitBreakerSleepWindowInMilliseconds(int value)

    (4)circuitBreaker.errorThresholdPercentage

    设置异常请求量的百分比,当异常请求达到这个百分比时,就触发打开短路器,默认是50,也就是50%

    HystrixCommandProperties.Setter()
    .withCircuitBreakerErrorThresholdPercentage(int value)

    (5)circuitBreaker.forceOpen

    如果设置为true的话,直接强迫打开短路器,相当于是手动短路了,手动降级,默认false

    HystrixCommandProperties.Setter()
    .withCircuitBreakerForceOpen(boolean value)

    (6)circuitBreaker.forceClosed

    如果设置为ture的话,直接强迫关闭短路器,相当于是手动停止短路了,手动升级,默认false

    HystrixCommandProperties.Setter()
    .withCircuitBreakerForceClosed(boolean value)

    相关文章

      网友评论

          本文标题:一张图深入理解Hystrix断路器的工作原理

          本文链接:https://www.haomeiwen.com/subject/mwsnyctx.html