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%失败,就开启熔断,服务正常以后慢慢恢复调用

经验分享 程序员 微信小程序 职场和发展