微服务降级处理:
熔断降级,限流降级(被动降级)
主动降级,对非核心业务进行降级处理。
降级处理对服务进行保护。
hystrix 三种降级方案分为:1,熔断降级, 2,超时降级, 3,资源/信号量控制实现降级。
hystrix:快速失败,快速恢复。在复杂分布式系统中组织,降低级联影响。服务监控提醒。
熔断触发降级:Hystrix 这里相当于断路器
1,需要 开启熔断降级配置
2,在对应的方法上添加注解:@HystrixCommand(commandProperties={
@HystrixProperty(name="circuitBreaker.enabled",value="true"),-- 开启熔断降级
@HystrixProperty(name="circuitBreaker.requestVolumeThreshold",value = "5"),-- 最小请求次数
@HystrixProperty(name="circuitBreaker.sleepWindowInMilliseconds",value="5000"),-- 熔断恢复时间
@HystrixProperty(name="circuitBreaker.errorThresholdPercentage",value="50")-- 错误率
});
熔断降级在默认在10s内最小请求次数为5次,发生的错误率为百分之五十时触发熔断降级,在五秒后有请求进来之后,尝试发送请求,如果成功,关闭熔断处理,没有继续熔断5s 等待下个五秒再次请求。
配置属性在HystrixCommandProperties 文件中
超时触发降级:使用超时触发降级时需要注意ribbon 的读取超时时间和连接超时时间,否则可能会出现Feign远程调用没有返回Ribbon已经失效(Ribbon 默认超时时间为1s)
资源分配(线程池隔离/信号量隔离)触发降级:
Hystrix 核心原理:
- 具有可配置的降级策略。(熔断,超时,信号量)
- 可以识别的降级边界。(@HystrixCommand或继承HystrixCommand)
- 数据采集
- 行为干预
- 结果干预,fallback()
- 自动恢复。处于熔断状态下,每过5s尝试恢复。
Hystrix : 熔断计数方式采用滑动窗口,使用传统的计数方式,出现异常统计(临界点时统计的数量)的几率大,使用滑动窗口降低临界点时,数量统计的误差。
在Hystrix 中使用RxJava 响应式变成框架,采用很多的观察者模式,进行事件的触发调用。