介绍

Resilience4j是一个轻量级、易于使用的容错库,其灵感来自Netflix Hystrix,但专为Java 8和函数式编程设计。
springcloud2020升级以后Hystrix被官方移除,Resilience4目前是官方推荐的熔断限流方案。

核心组件

相关问题

按照网上很多文章进行熔断器配置,发现并不能读取配置中的参数,走的还是Resilience4J中CircuitBreakerConfig默认的参数。通过测试实现了一种能读取yml中断路器配置的方案

resilience4j.circuitbreaker:
  configs: #通用配置
    default: # 断路器系统默认配置
      #失败率,错误率达到或高于该值则进入open状态
      failureRateThreshold: 20
      #慢调用阀值,请求执行的时间大于该值时会标记为慢调用
      slowCallDurationThreshold: 60s
      #慢调用熔断阀值,当慢调用率达到或高于该值时,进入open状态
      slowCallRateThreshold: 90
      #状态滚动收集器大小,close状态时收集多少请求状态,用于计算失败率。
      slidingWindowSize: 90
      #状态收集器类型
      #COUNT_BASED:根据数量计算,slidingWindowSize为次数
      #TIME_BASED:根据时间计算,slidingWindowSize为秒数
      slidingWindowType: COUNT_BASED
      #计算错误率的最小请求数,不足最小调用次数不会触发任何变化。
      minimumNumberOfCalls: 10
      #是否自动进入halfOpen状态,默认false-一定时间后进入halfopen,ture-需要通过接口执行。
      automaticTransitionFromOpenToHalfOpenEnabled: false
      #进入halfOpen状态时,可以被调用次数,就算这些请求的失败率,低于设置的失败率变为close状态,否则变为open。
      permittedNumberOfCallsInHalfOpenState: 10
      #open状态变为half状态需要等待的时间,即熔断多久后开始尝试访问被熔断的服务。
      waitDurationInOpenState: 60s
      #事件缓冲区大小??
      eventConsumerBufferSize: 10
      #被计为失败的异常集合,默认情况下所有异常都为失败。
      recordExceptions:
        - java.lang.Exception
      #不会被计为失败的异常集合,优先级高于recordExceptions。
      ignoreExceptions:
        - java.lang.IllegalStateException
  instances: #熔断器类型
    aCustomizer: #使用默认配置
      baseConfig: default
    cacheCustomizer: #自定义配置
      failureRateThreshold: 10
   @Bean
    @Primary
    public Resilience4JCircuitBreakerFactory resilience4jCircuitBreakerFactory() {
        Resilience4JCircuitBreakerFactory factory = new Resilience4JCircuitBreakerFactory();
        factory.configureDefault(
                id -> new Resilience4JConfigBuilder(id)
                        .circuitBreakerConfig(
                                circuitBreakerRegistry.circuitBreaker("aCustomizer").getCircuitBreakerConfig()
                        )
                        .timeLimiterConfig(
                                new TimeLimiterConfig.Builder()
                                        .timeoutDuration(Duration.ofSeconds(4))
                                        .cancelRunningFuture(true)
                                        .build()
                        )
                        .build());
        System.out.println(factory);
        return factory;
    }

源码

https://gitee.com/gustav0/resilience4-jdemo

赞赏一下吧~

如果解决了您的问题,可以赞赏支持一下,感谢大佬们。

原文地址:http://www.cnblogs.com/gustavo/p/16809872.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性