什么是熔断降级:
在微服务保护中我们使用sentinel进行了熔断降级,熔断降级时为了防止雪崩效应,什么是雪崩效应,因为微服务是一层调用一层的,如果下面某一个微服务宕机了,就会导致全部的微服务宕机,这就是雪崩效应。 我们这里使用的是feign的熔断降级,但是据说现在已经很少人用了,用sentinel的比较多
如何解决由于微服务异常引起的雪崩效应呢?
可以采用熔断、降级的方法去解决。
熔断降级的相同点都是为了解决微服务系统崩溃的问题,但它们是两个不同的技术手段,两者又存在联系。
熔断:
当下游服务异常而断开与上游服务的交互,它就相当于保险丝,下游服务异常触发了熔断,从而保证上游服务不受影响。
降级:
当下游服务异常触发熔断后,上游服务就不再去调用异常的微服务而是执行了降级处理逻辑,这个降级处理逻辑可以是本地一个单独的方法。
两者都是为了保护系统,熔断是当下游服务异常时一种保护系统的手段,降级是熔断后上游服务处理熔断的方法。
具体处理代码
在FeignClient中指定fallbackFactory ,如下:
Java |
定义MediaServiceClientFallbackFactory如下:
Java |
降级处理逻辑:
返回一个null对象,上游服务请求接口得到一个null说明执行了降级处理。