理论
服务降级
服务器忙,请稍后再试,不让客户端等待返回友好提示
降级原因:
程序运行异常
超时
服务熔断触发服务降级
线程池/信号量打满也会导致服务降级
服务熔断
达到最大访问量后,直接拒绝访问,调用服务降级的方法返回友好提示
服务限流
秒杀高并发等操作,严禁一窝蜂的过来拥挤,大家排个队,一分钟N个,有序进行
服务降级
1.单个方法服务降级
缺点:每一个方法对应一个降级方法,代码膨胀,冗余,只适用于少量方法
1.主启动类添加@EnableCircuitBreaker
2.需要降级的方法添加
//fallbackMethod--备用方法
@HystrixCommand(fallbackMethod="XXX",commandProperties={
@HystrixProperty(name="exection.isolation.thread.timeoutInMilliseconds",value="3000")
})
超时会3秒后调用备用方法,报错马上调用
2.全局服务降级配置
1.controller上添加注解@DefaultProperties
2.定义全局异常返回方法(注意返回类型需要满足所有接口)
3.在需要降级的方法上添加注解 @HystrixCommand
3. FeignFallBack
1.yml中添加注解
设置feign对hystrix.enabled的支持
feign:
hystrix:
enabled: true