理论

image.png
服务降级
服务器忙,请稍后再试,不让客户端等待返回友好提示
降级原因:
程序运行异常
超时
服务熔断触发服务降级
线程池/信号量打满也会导致服务降级
服务熔断
达到最大访问量后,直接拒绝访问,调用服务降级的方法返回友好提示
服务限流
秒杀高并发等操作,严禁一窝蜂的过来拥挤,大家排个队,一分钟N个,有序进行

服务降级

1.单个方法服务降级

缺点:每一个方法对应一个降级方法,代码膨胀,冗余,只适用于少量方法

1.主启动类添加@EnableCircuitBreaker

image.png

2.需要降级的方法添加

  1. //fallbackMethod--备用方法
  2. @HystrixCommand(fallbackMethod="XXX",commandProperties={
  3. @HystrixProperty(name="exection.isolation.thread.timeoutInMilliseconds",value="3000")
  4. })

image.png
超时会3秒后调用备用方法,报错马上调用

2.全局服务降级配置

1.controller上添加注解@DefaultProperties

image.png

2.定义全局异常返回方法(注意返回类型需要满足所有接口)

image.png

3.在需要降级的方法上添加注解 @HystrixCommand

image.png
**

3. FeignFallBack

1.yml中添加注解

设置feign对hystrix.enabled的支持

  1. feign:
  2. hystrix:
  3. enabled: true

2.feign接口中添加注解

image.png
**

3.写一个feign接口实现类,实现降级的处理

image.png

服务熔断

image.png
image.png
image.png
image.png