服务熔断状态转换图![在这里插入图片描述](https://img-blog.csdnimg.cn/20200311163042307.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0xlbW9uX01Z,size_16,color_FFFFFF,t_70)
状态机有三个状态:
- Closed:关闭状态(断路器关闭),所有请求都正常访问。
- Open:打开状态(断路器打开),所有请求都会被降级。Hystrix会对请求情况计数,当一定时间内失败请求百分比达到阈值,则触发熔断,断路器会完全打开。默认失败比例的阈值是50%,请求次数最少不低于20次。
- Half Open:半开状态,不是永久的,断路器打开后会进入休眠时间(默认是55)。随后断路器会自动进入半开状态。此时会释放部分请求通过,若这些请求都是健康的,则会关闭断路器,否则继续保持打开,再次进行休眠计时。
服务熔断参数配置
在服务消费端进行参数的配置(下图中的熔断配置)
# 服务降级的超时时间配置(超时的时间,服务2s未返回就判断为超时)
hystrix:
command:
default:
execution:
isolation:
thread:
timeoutInMillseconds: 2000
# 熔断配置
circuitBreaker:
errorThresholdPercentage: 50 # 触发熔断错误比例阈值,默认50
sleepWindowInMillseconds: 10000 # 熔断后休眠时长,默认值5s
requestVolumeThreshold: 10 # 熔断触发最小请求次数,默认值是20