Feign整合Sentinel实现服务降级
Sentinel
alibaba/Sentinel: Sentinel 是阿里巴巴开源的一款面向分布式服务架构的流量控制、熔断降级组件,提供实时监控、限流、降级和系统保护功能,适用于微服务治理场景。
项目地址:https://gitcode.com/gh_mirrors/sentine/Sentinel
免费下载资源
·
为什么要做降级服务
在微服务架构中,服务之间的调用是非常频繁的。但是,在分布式环境下,服务调用可能会因为网络问题、服务过载或服务不可用等原因而失败。这时,如果没有适当的容错机制,可能会导致级联失败,影响整个系统的可用性。
降级是一种重要的容错机制,它可以:
-
保护系统: 当被调用的服务出现问题时,通过降级可以避免调用方服务被拖垮。
-
提高用户体验: 即使部分功能不可用,系统仍然可以返回一个默认或缓存的结果,而不是直接报错。
-
减少资源消耗: 在高并发场景下,可以通过降级减少对某些非核心服务的调用,从而节省系统资源。
-
快速失败: 当知道某个调用注定会失败时,可以快速返回,而不是等待超时,这样可以提高系统的响应速度。
整合步骤
- Feign接口:
@FeignClient(value = "remark-service",fallbackFactory = RemarkClientFallback.class)
这里定义了一个Feign客户端,用于调用名为"remark-service"的服务。fallbackFactory
指定了降级处理的工厂类。
- 降级类:
@Override
public RemarkClient create(Throwable cause) {
log.error("调用remark服务员降级了{}", cause);
return new RemarkClient() {
@Override
public Set<Long> getLikeStatusByIds(List<Long> bizIds) {
return null;
}
};
}
这个方法会在发生异常时被调用。它记录了错误日志,并返回一个新的RemarkClient
实现,这个实现的方法会返回默认值(这里是null
)。
- 配置类:
@Configuration
public class FallbackConfig {
@Bean
public RemarkClientFallback remarkClientFallback(){
return new RemarkClientFallback();
}
}
这个配置类将RemarkClientFallback
注册为Spring Bean,使其可以被自动注入到需要的地方。
- Spring.Factories:
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.tianji.api.config.FallbackConfig
这个配置确保FallbackConfig
类被Spring Boot自动配置机制加载,从而激活降级功能。
- 配置文件:
feign:
sentinel:
enabled: true
这个配置启用了Feign对Sentinel的支持,允许使用Sentinel来控制服务调用的流量和实现降级。
GitHub 加速计划 / sentine / Sentinel
22.25 K
7.98 K
下载
alibaba/Sentinel: Sentinel 是阿里巴巴开源的一款面向分布式服务架构的流量控制、熔断降级组件,提供实时监控、限流、降级和系统保护功能,适用于微服务治理场景。
最近提交(Master分支:3 个月前 )
195150bc
* fix issue 2485 which occur oom when using async servlet request.
* optimize imports
* 1. fix the same issue in the webmvc-v6x
2. improve based on review comments 2 个月前
b78b09d3
2 个月前
更多推荐
已为社区贡献6条内容
所有评论(0)