SpringCloud 微服务架构(17)- hystrix断路器的工作状态

1 hystrix断路器的工作状态

熔断器有三个状态 CLOSEDOPENHALF_OPEN 熔断器默认关闭状态,当触发熔断后状态变更为
OPEN ,在等待到指定的时间,Hystrix会放请求检测服务是否开启,这期间熔断器会变为HALF_OPEN
开启状态,熔断探测服务可用则继续变更为 CLOSED关闭熔断器。

在这里插入图片描述

在这里插入图片描述


  • Closed:关闭状态(断路器关闭),所有请求都正常访问。代理类维护了最近调用失败的次数,如果某次调用失败,则使失败次数加1。如果最近失败次数超过了在给定时间内允许失败的阈值,则代理类切换到断开(Open)状态。此时代理开启了一个超时时钟,当该时钟超过了该时间,则切换到半断开(Half-Open)状态。该超时时间的设定是给了系统一次机会来修正导致调用失败的错误。
  • Open:打开状态(断路器打开),所有请求都会被降级。Hystix会对请求情况计数,当一定时间内失败请求百分比达到阈值,则触发熔断,断路器会完全关闭。默认失败比例的阈值是50%,请求次数最少不低于20次。
  • Half Open:半开状态,open状态不是永久的,打开后会进入休眠时间(默认是5S)。随后断路器会自动进入半开状态。此时会释放1次请求通过,若这个请求是健康的,则会关闭断路器,否则继续保持打开,再次进行5秒休眠计时。

2 环境准备

  1. 在订单系统中加入逻辑,判断请求的id:
    (1) id = 1 ,正常执行(调用商品微服务)
    (2) id = 2 ,抛出异常。

  2. 默认 hystrix 中又触发断路器状态的阈值
    (1) 触发熔断的最小请求次数:20
    (2)触发熔断的请求失败比率: 50%
    (2)断路器开启的时长:5s


在这里插入图片描述
在这里插入图片描述


feign 对断路器做了封装,测试起来比较复杂,这里基于 resttemplate 测试
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


  • 启动
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

  • 多刷新几次
    在这里插入图片描述
  • 此时访问 1
    在这里插入图片描述
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 书香水墨 设计师:CSDN官方博客 返回首页