Feign整合Sentinel实现服务降级

为什么要做降级服务

在微服务架构中,服务之间的调用是非常频繁的。但是,在分布式环境下,服务调用可能会因为网络问题、服务过载或服务不可用等原因而失败。这时,如果没有适当的容错机制,可能会导致级联失败,影响整个系统的可用性。

降级是一种重要的容错机制,它可以:

  1. 保护系统: 当被调用的服务出现问题时,通过降级可以避免调用方服务被拖垮。

  2. 提高用户体验: 即使部分功能不可用,系统仍然可以返回一个默认或缓存的结果,而不是直接报错。

  3. 减少资源消耗: 在高并发场景下,可以通过降级减少对某些非核心服务的调用,从而节省系统资源。

  4. 快速失败: 当知道某个调用注定会失败时,可以快速返回,而不是等待超时,这样可以提高系统的响应速度。

整合步骤

  1. Feign接口:
java 复制代码
@FeignClient(value = "remark-service",fallbackFactory = RemarkClientFallback.class)

这里定义了一个Feign客户端,用于调用名为"remark-service"的服务。fallbackFactory指定了降级处理的工厂类。

  1. 降级类:
java 复制代码
@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)。

  1. 配置类:
java 复制代码
@Configuration
public class FallbackConfig {
    @Bean
    public RemarkClientFallback remarkClientFallback(){
        return new RemarkClientFallback();
    }
}

这个配置类将RemarkClientFallback注册为Spring Bean,使其可以被自动注入到需要的地方。

  1. Spring.Factories:
properties 复制代码
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
  com.tianji.api.config.FallbackConfig

这个配置确保FallbackConfig类被Spring Boot自动配置机制加载,从而激活降级功能。

  1. 配置文件:
properties 复制代码
feign:
  sentinel:
    enabled: true

这个配置启用了Feign对Sentinel的支持,允许使用Sentinel来控制服务调用的流量和实现降级。

相关推荐
凯基迪科技2 天前
圣天诺Sentinel LDK加密锁复制难点逆向分析
sentinel
jonyleek9 天前
JVS数字底座私有化部署实践:Spring Cloud + K8S 实现文档平台开箱即用
elasticsearch·kubernetes·私有化部署·springcloud·minio·jvs企业文档·文档治理
Promising_GEO9 天前
GEE实战02期:从卫星波段开始:利用 Sentinel-2 自己计算 NDVI
java·sentinel·遥感·空间分析
我不会起名字32211 天前
Redis 从 0 到 1(九):主库宕机 30 秒自动切主——1 主 2 从 3 哨兵 + Go 客户端
redis·docker·sentinel·高可用·哨兵
Msshu12312 天前
PD快充诱骗取电芯片工作原理,XSP17诱骗取电5V9V12V15V20V功能测试
spring boot·spring cloud·sentinel·java-rocketmq·java-zookeeper·java-consul·java-activemq
LQQrk智能排产物联网规则引擎16 天前
规则上线从3天到3分钟:JVS-Rules热更新实践——基于Spring Cloud的无重启规则发布方案
springcloud·微服务架构·热更新·规则引擎·灰度发布·jvs-rules·规则测试
流烟默16 天前
Spring Cloud 微服务 Sentinel 热点参数与授权规则集成指南(附架构建议)
spring cloud·微服务·架构·sentinel
Thomas.Sir17 天前
第23课:Sentinel熔断降级、系统自适应保护、集群限流
spring cloud·sentinel
Java成神之路-17 天前
深入理解 Spring Cloud Gateway、Nacos 与 OpenFeign:核心原理与协作流程全解析
springcloud
wewowilling17 天前
认识微服务
java·运维·微服务·springcloud