1. 说明

在实际项目中,需要针对单个服务屏蔽Hystrix,但又不想影响对其他服务调用的熔断降级功能。我们知道hystrix有default默认全局配置, 也有根据HystrixCommandKey针对接口做具体配置,但是某个服务可能会有很多接口, 并不能解决针对单个服务屏蔽Hystrix功能,有没有简便快速的实现方法? 查阅官方资料,是可以支持的。

2. 实现

官方的文档写得比较粗略,没有实际的实例,而且在实际运用中, 没有配置正确会有额外的问题。

整体思路是创建一个独立的Feign实例,提供给需要屏蔽的服务, 其他仍走系统初始化的可以支持Hystrix的Fegin实例。

  1. 创建独立的配置类

    FeignClientWithoutHystrixConfig

    // @Configuration
    public class FeignClientWithoutHystrixConfig {private final Logger log = LoggerFactory.getLogger(this.getClass());/*** 创建独立的Fegin调用实例* @return*/@Bean@Scope("prototype")public Feign.Builder feignBuilder() {log.debug("Creating feign builder without hystrix");return Feign.builder();}
    }
    

    说明: @Configuration注解实质上是可以注释的, 如果不想注释, 需要排除扫描, 否则会覆盖默认的Feign实例。

    @ComponentScan(basePackages = "com",excludeFilters = {@ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, value = FeignClientWithoutHystrixConfig.class)})
  2. 指定配置类

    在FeignClient中指定配置类FeignClientWithoutHystrixConfig

    @FeignClient(name = "withoutHystrix",url = "conrad.fake",fallback = FeignClientWithoutHystrix.FallbackThatShouldNotOccur.class,configuration = FeignClientWithoutHystrixConfig.class)
    public interface FeignClientWithoutHystrix {@RequestMapping(method = RequestMethod.GET, value = "/fake/url")String getFromFakeUrl();@Componentclass FallbackThatShouldNotOccur implements FeignClientWithoutHystrix {private final Logger log = LoggerFactory.getLogger(this.getClass());@Overridepublic String getFromFakeUrl() {log.error("This fallback shouldn't occur");return "Fallback";}}}
    

3. 验证

  1. 不需要熔断降级的接口访问,会直接出现错误

  2. 其他的接口会正常进入熔断降级

4. 问题补充

  1. 排除扫描不生效的问题

    如果是通过ComponentScan排除扫描,但不生效, 这个时候需要检查系统是否有其他地方也配置了ComponentScan进行了同样的目录扫描, 这个时候是会覆盖, 不能有效控制,需要一并排除。

    @ComponentScan(basePackages = "com",excludeFilters = {@ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, value = BaseAutoConfiguration.class),@ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, value = FeignClientWithoutHystrixConfig.class)})
    
  2. FeignClient中指定了配置类, 但仍会进入Hystrix熔断

    这个时候需要检查FeignClient名称不能重名, 如果重名,会被覆盖不生效。

备注: 已上传提供源码示例,地址: https://download.csdn.net/download/hxx688/21719912

Feign如何针对单个服务屏蔽Hystrix熔断功能相关推荐

  1. Hystrix 服务降级和熔断

    Hystrix 服务降级和服务熔断 文章目录 Hystrix 服务降级和服务熔断 1.问题的提出 2.Hystrix 3.服务降级 3.1 服务降级实操 3.2 服务降级之客户端 3.3 总结 4.服 ...

  2. 详解Hystrix熔断机制

    什么是hystrix的熔断? hystrix熔断主要是指在一定的时间窗口内,当请求的次数达到一定的失败比率后,hystrix就会主动拒绝服务,采取将请求直接降级等方式,从而有效的缓解了服务雪崩的问题, ...

  3. Hystrix断路器原理及实现(服务降级、熔断、限流)

    Hystrix断路器原理及实现(服务降级.熔断.限流) 分布式系统面临的问题 Hystrix重要概念(面试常考) Hystrix案例 Hystrix 服务提供者 Hystrix 服务消费者 原因与解决 ...

  4. 微服务之Hystrix降级熔断

    前言 分布式系统面临的问题-----服务雪崩 多个微服务之间调用的时候,假设微服务A调用微服务B和微服务C,微服务B和微服务C又调用其它的微服务,这就是所谓的"扇出".如果扇出的链 ...

  5. SpringCloud微服务基础 Eureka、Feign、Ribbon、Zuul、Hystrix、配置中心的基础使用

    1.单点系统架构 传统项目架构 传统项目分为三层架构,将业务逻辑层.数据库访问层.控制层放入在一个项目中. 优点:适合于个人或者小团队开发,不适合大团队开发. 分布式项目架构 根据业务需求进行拆分成N ...

  6. SpringCloud系列七:Hystrix 熔断机制(Hystrix基本配置、服务降级、HystrixDashboard服务监控、Turbine聚合监控)...

    声明:本文来源于MLDN培训视频的课堂笔记,写在这里只是为了方便查阅. 1.概念:Hystrix 熔断机制 2.具体内容 所谓的熔断机制和日常生活中见到电路保险丝是非常相似的,当出现了问题之后,保险丝 ...

  7. 微服务(八)——Hystrix服务降级、熔断、限流(上)

    目录 Hystrix服务降级.熔断.限流 Hystrix是什么 Hystrix停更进维 Hystrix的服务降级熔断限流相关概念 Hystrix支付微服务构建 JMeter高并发压测后卡顿 订单微服务 ...

  8. hystrix 页面_微服务 | 使用Hystrix实现Spring Cloud的熔断机制

    1. 熔断机制介绍 在介绍熔断机制之前,我们需要了解微服务的雪崩效应.在微服务架构中,微服务是完成一个单一的业务功能,这样做的好处是可以做到解耦,每个微服务可以独立演进.但是,一个应用可能会有多个微服 ...

  9. 微服务高可用利器——Hystrix熔断降级原理实践总结

    前言 最近在工作中参与组内服务稳定性建设,梳理我们目前服务现状并接入公司自研稳定性保障平台.对公司内自研组件以及业界流行的Hystrix做了学习,Netflix Hystrix 里面大量RxJava响 ...

  10. Spring Cloud H (五)初战服务降级和熔断Hystrix(豪猪哥)

    目录 目录 前言 概述 服务雪崩 服务限流 服务降级 服务熔断 如何理解服务降级和熔断之间的关系 代码实战 Hystrix支付微服务构建 订单微服务调用支付服务出现卡顿 Hystrix之服务降级支付侧 ...

最新文章

  1. c 语言字符串转二进制,在C ++中将字符串转换为二进制序列
  2. java 反射 orm_Java-反射机制简介
  3. 在linux运行math_neon库,linux - 仅使用带交叉编译器的本地库 - 堆栈内存溢出
  4. oracle 之索引,同义词 ,关键词,视图 ,存储过程,函数,触发器
  5. 解释抽象类继承实体类的前提是这个实体类必须明确构造函数
  6. 如何修改计算机无线mac地址,修改计算机mac地址_怎么修改mac地址
  7. Java 多线程(并发)
  8. [洪流学堂]Hololens修改图标icon
  9. AB32VG1开发板学习(2)GPIO,多线程点灯
  10. 文学杂谈001--《遥远的救世主》
  11. 学科前沿讲座 神经网络,机器学习,深度学习
  12. [LetCode-1438] 绝对差不超过限制的最长连续子数组
  13. 来晚了,秋招五投大厂,成功拿下三家Offer,最终入职美团,分享我的美团1-4面(Java岗)
  14. 【UNR #6 B】机器人表演(DP)
  15. 李宏毅机器学习2022 HW1
  16. 2022考研日语71分自学经验贴;日语可以自学吗?
  17. 特效转序列帧动画工具
  18. CTF---Web---SQL注入---04---F12network+XXF伪造+sqlmap跑文件
  19. YOLOV8:FileNotFoundError: train: No labels found in /home/smy/new-yolov5/ultralytic
  20. 百度地图 地理位置 转 经纬度 计算两点间的距离

热门文章

  1. 数据库连接池c3p0
  2. python微博接口_Python使用新浪微博API发送微博的例子
  3. java中的关键字有哪些_java关键字有哪些?java关键字大全
  4. AE插件自动创建图层工具LayerGenerators使用教程
  5. Dsoframer注册方法
  6. “为爱尖叫”,爱奇艺的晚会聚能术与商业价值释放场
  7. linux下gmt4绘制站点分布图,GMT复杂图制作教程———让作图简单的飞起来
  8. TensorFlow优化模型之正则化
  9. [译]Selenium —— 怎样使用FireBug和FirePath
  10. 生成HTML测试报告