Hystrix服务降级,服务熔断,服务限流
服务降级:
现象:服务器忙,请稍后再试,不让客户端等待并立刻返回一个友好提示,fallback
原因:
1.程序运行异常
2.超时
3.服务熔断触发服务降级
4.线程池/信号量打满也会导致服务降级
服务熔断:
现象:设置最大访问次数,多少次失败就开启熔断,直接拒绝方法,调用降级方法,返回友好提示,等服务恢复后,又可以慢慢恢复正常
服务降级实现的两种方式
在提供者控制:
1.引入依赖spring-cloud-starter-netfilx-hystrix依赖
2.在启动类上加@EnableCircuiClient注解或者EnableHystrix注解启动hystrix
3.再需要设置降级方法的service请求方法上加上@HystrixCommand,里边有一个fallbackmethod属性,设置降级返回方法,还有一个属性commandProperties,设置阈值,比如设置响应最大时长,超过则调用降级方法,如果报错也会调用,还可以设置别的阈值
全局降级方法的设置:
每一个方法都设置一个降级方法,会造成代码杂乱,所以可以设置一个公用的降级方法,这个类所有的方法有问题都可以调用这个方法
1.在类上加上DefaultProperties注解,有一个fallbackmethod属性设置全局降级方法
2.需要在设置降级方法的类上加上@HystrixCommand注解,如果某个方法需要特殊设置,可以通过该注解设置单独的降级方法
在消费端控制:
在消费者调用提供者服务时,@feignclient注解中有一个,fallback属性,设置当前接口的降级实现类,可以在实现类中对方法进行重写,设置降级方法
服务熔断方式:
熔断机制是应对雪崩效应的一种微服务链路保护机制,当扇出链路的某个微服务出错不可用或者相应时间太长时,会进行服务的降级,进而熔断该节点微服务的调用,快速返回错误的响应信息
当检测到该节点微服务调用响应正常后,恢复调用链路。
以上的熔断机制机制机制就是在十秒内,10哥请求有60%失败,就开启熔断,服务正常以后慢慢恢复调用