一、概述Feign 本身只支持降级fallback不支持熔断。Feign Hystrix才能同时实现降级 熔断。新项目用 Sentinel / Resilience4j 替代 Hystrix。二、Feign 单独 vs Feign Hystrix严格对比维度Feign 单独Feign HystrixFeign Sentinel降级Fallback✅支持✅ 支持✅ 支持熔断CircuitBreaker❌不支持✅ 支持✅ 支持更强限流❌ 不支持✅ 支持✅ 支持5 大功能隔离❌ 不支持✅ 支持线程池✅ 支持项目简单场景老项目新项目推荐三、Feign 单独实现降级不依赖 Hystrix3.1 完整代码// 老哥 mpvs 关键时点Feign 单独 降级不用 Hystrix FeignClient(name data-mask-service, fallback DataMaskFallback.class) // ⚠️ 降级类 public interface DataMaskFeignClient { GetMapping(/api/mask/query) ResultMaskData queryMaskData(RequestParam String bankCode, RequestParam String dataId); PostMapping(/api/mask/exec) ResultVoid executeMask(RequestBody MaskRequest request); } // 降级类实现 Feign 接口 Component public class DataMaskFallback implements DataMaskFeignClient { Override public ResultMaskData queryMaskData(String bankCode, String dataId) { log.warn(屏蔽服务降级, bankCode{}, dataId{}, bankCode, dataId); // ⚠️ 返回兜底数据 return Result.ok(new MaskData(UNKNOWN, 服务降级)); } Override public ResultVoid executeMask(MaskRequest request) { log.warn(屏蔽执行降级, request{}, request); return Result.ok(); } }3.2 配置文件# application.yml feign: client: config: default: connectTimeout: 3000 readTimeout: 5000 # ⚠️ 关键开启 Feign 降级 circuitbreaker: enabled: true注意Feign 单独 降级服务异常时返回兜底数据没有熔断——故障服务一直返回兜底数据不会自动恢复新项目推荐Feign Sentinel同时实现降级 熔断 限流 隔离四、3 大方案严格对比4.1 方案 1Feign 单独最简单# 优点最简单不用 Hystrix # 缺点只支持降级不支持熔断 feign: circuitbreaker: enabled: true适用场景✅小项目连接数 100✅不要求高可用故障返回兜底数据即可❌金融项目慎用4.2 方案 2Feign Hystrix老项目常用# 优点完整 4 大机制降级 熔断 隔离 限流 # 缺点Hystrix 停止维护 feign: hystrix: enabled: true适用场景✅ 老项目✅需要熔断避免雪崩❌新项目不推荐Hystrix 停止维护4.3 方案 3Feign Sentinel新项目推荐# 优点5 大功能流量控制 熔断降级 热点参数 系统保护 来源控制 # 缺点需要新增依赖 feign: sentinel: enabled: true适用场景✅新项目✅Spring Cloud Alibaba 项目新版推荐✅需要更多功能5 大功能五、Feign Sentinel 完整实战新项目推荐5.1 引入依赖dependency groupIdcom.alibaba.cloud/groupId artifactIdspring-cloud-starter-alibaba-sentinel/artifactId /dependency dependency groupIdcom.alibaba.cloud/groupId artifactIdspring-cloud-alibaba-sentinel-feign/artifactId /dependency6.2 配置文件feign: sentinel: enabled: true # ⚠️ 关键开启 Sentinel client: config: default: connectTimeout: 3000 readTimeout: 50006.3 Feign 接口 Sentinel 降级// 老哥 mpvs 关键时点新版 FeignClient(name data-mask-service, fallback DataMaskFallback.class) public interface DataMaskFeignClient { GetMapping(/api/mask/query) ResultMaskData queryMaskData(RequestParam String bankCode, RequestParam String dataId); } // 降级类 Component public class DataMaskFallback implements DataMaskFeignClient { Override public ResultMaskData queryMaskData(String bankCode, String dataId) { return Result.ok(new MaskData(UNKNOWN)); } }6.4 Sentinel 控制台http://localhost:8080/sentinel # 配置规则 # - 流控规则QPS 100 # - 熔断规则错误率 50% 熔断 # - 热点规则参数限流 # - 系统保护CPU / Load # - 来源控制按调用方限流七、3 大方案 4 大经典面试追问追问 1Feign 不依赖 Hystrix 可以吗可以——Feign 单独支持降级fallback。但不支持熔断——故障服务一直返回兜底数据不会自动恢复。金融项目慎用。追问 2Feign Hystrix 怎么工作Feign 调用时Hystrix 拦截——失败率超 50% 触发熔断——5 秒后重试——Hystrix 同时实现降级 熔断——Feign 只负责远程调用Hystrix 负责容错。追问 3新项目用 Hystrix 还是 Sentinel新项目用 SentinelSpring Cloud Alibaba 主推。Hystrix 已停止维护Netflix Hystrix 2018 年停止更新。Sentinel 5 大功能流量控制 熔断降级 热点参数 系统保护 来源控制。追问 4Feign 降级和 Hystrix 降级区别Feign 降级——服务不可用时返回兜底静态。Hystrix 降级——服务不可用 熔断——返回兜底动态5 秒后重试。Feign 降级没有自动恢复Hystrix 降级会自动恢复5 秒后重试。八、记忆口诀Feign 单独只降级Feign Hystrix 降级 熔断Feign Sentinel 5 大功能新项目推荐Hystrix 已停止维护新项目别用