Hystrix熔断
Hystrix
熔断主要是指在一定的时间窗口内,当请求的次数达到一定的失败比率后,Hystrix
就会主动拒绝服务。
- 采取将请求直接降级等方式,从而有效的缓解了服务雪崩的问题。
通过快速错误的方式,有效的控制服务之间链路调用的响应时间,保证整个微服务的健康。
Hystrix熔断配置
//超时时间
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=2000
//开启熔断
hystrix.command.default.execution.timeout.enabled=true
//熔断触发的最小个数,即在一定的时间窗口内请求达到一定的次数,默认20
hystrix.command.default.circuitBreaker.requestVolumeThreshold=10
//时间窗口,默认10s
hystrix.command.default.metrics.rollingStats.timeInMilliseconds=5000
//失败率达到多少百分比后熔断 默认值:50
hystrix.command.default.circuitBreaker.errorThresholdPercentage=50
//熔断多长时间后,尝试放一次请求进来,默认5秒
hystrix.command.default.circuitBreaker.sleepWindowInMilliseconds=5000
以上配置表示,5秒内,如果请求次数达到10次,且50%都失败了,则开启熔断功能。
并在熔断功能开启5秒后,允许一次请求(即此时熔断为半开状态)。
如果请求访问成功则关闭熔断,恢复正常调用,否则继续熔断5秒,以此循环。
断路器状态
关闭状态:
- 关闭状态时客户端的请求是可以正常到达的。
开启状态:
- 开启状态时客户端的请求是不会到达服务端,直接走降级方法。
半开状态:
当状态为开启时,一定时间后,熔断器就会由开启状态变成半开状态。
这时候是可以接收客户端的一次请求,如果请求成功则熔断器状态变为关闭。
如果请求失败则熔断器的状态变为开启状态,等待下一个时间周期继续尝试服务调用。