当我们在对服务远程调用时,会因为服务的请求超时、抛出异常等情况,导致调用失败。
如果短时间内,产生大量请求异常。引发上游的调用方请求积压,最终会引起整个调用链雪崩。
为此我们需要对核心的调用过程进行监控,当产生异常时,可以采取相应的措施,确保服务的容错性、可用性。
OpenFeign默认支持Hystrix,本文主要以alibaba 相关中间件为参考。
服务调用方
以下配置结合了spring cloud、spring boot、spring cloud-alibaba。具体的接入可以查看之前的博文
1、整合sentinel
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
2、配置文件中开启sentinel熔断降级
feign:
sentinel:
enabled: true
3、添加降级回调类
和openFeign接口实现同一个类
一旦OpenFeignService中对应得接口出现了异常则会调用这个类中对应得方法进行降级处理。
4、添加fallback属性
@FeignClient(value = "openFeign-provider", fallback = OpenFeignFallbackService.class)
public interface OpenFeignService {}
配置说明:
value:可以是具体的服务地址URL、使用nacos的服务名
fallback:调用失败的降级方案