Soul网关源码学习系列之【resilience4j插件】

本文介绍了Resilience4j作为轻量级容错库的特点,对比了它与Netflix Hystrix的区别。详细讲解了在Soul网关中启用Resilience4j插件的步骤,包括配置选项如超时时间和熔断策略。接着,通过源码分析了熔断开启和未开启时的处理逻辑,最后总结了Resilience4j插件相较于Hystrix的额外限流功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

resilience4j简介

Resilience4j是一款轻量级,易于使用的容错库,其灵感来自于Netflix Hystrix,但是专为Java 8和函数式编程而设计。轻量级,因为库只使用了Vavr,它没有任何其他外部依赖下。相比之下,Netflix Hystrix对Archaius具有编译依赖性,Archaius具有更多的外部库依赖性,例如Guava和Apache Commons Configuration。
要使用Resilience4j,不需要引入所有依赖,只需要选择你需要的。
更多关于Resilience4j的介绍

插件启用

  • 在网关的 pom.xml 文件中添加 resilience4j的支持。
     <!-- soul resilience4j plugin start-->
      <dependency>
          <groupId>org.dromara</groupId>
          <artifactId>soul-spring-boot-starter-plugin-resilience4j</artifactId>
           <version>${last.version}</version>
      </dependency>
      <!-- soul resilience4j plugin end-->
    
  • 在 soul-admin –> 插件管理 –> resilience4j,设置为开启。
  • 配置resilience4j的Selector和Rule
    • timeoutDurationRate:等待获取令牌的超时时间,单位ms,默认值:5000。
    • limitRefreshPeriod:刷新令牌的时间间隔,单位ms,默认值:500。
    • limitForPeriod:每次刷新令牌的数量,默认值:50。
    • circuitEnable:是否开启熔断,0:关闭,1:开启,默认值:0。
    • timeoutDuration:熔断超时时间,单位ms,默认值:30000。
    • fallbackUri:降级处理的uri。
    • slidingWindowSize:滑动窗口大小,默认值:100。
    • slidingWindowType:滑动窗口类型,0:基于计数,1:基于时间,默认值:0。
    • minimumNumberOfCalls:开启熔断的最小请求数,超过这个请求数才开启熔断统计,默认值:100。
    • waitIntervalFunctionInOpenState:熔断器开启持续时间,单位ms,默认值:10。
    • permittedNumberOfCallsInHalfOpenState:半开状态下的环形缓冲区大小,必须达到此数量才会计算失败率,默认值:10。
    • failureRateThreshold:错误率百分比,达到这个阈值,熔断器才会开启,默认值50。
    • automaticTransitionFromOpenToHalfOpenEnabled:是否自动从open状态转换为half-open状态,,true:是,false:否,默认值:false。

源码解析

  • 根据之前的经验,我们直接定位到Resilience4JPlugin.doExecute方法:

    	@Override
        protected Mono<Void
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值