resilience4j(十):核心模块RateLimiter源码之RateLimiter核心接口实现

本文详细解析了Resilience4j的RateLimiter模块,包括核心流程图、RateLimiterConfig、AtomicRateLimiter和SemaphoreBasedRateLimiter。RateLimiterConfig定义了限流配置,如timeoutDuration、limitRefreshPeriod和limitForPeriod。限流算法主要基于令牌桶和漏桶,AtomicRateLimiter采用令牌桶算法,SemaphoreBasedRateLimiter利用信号量机制。RateLimiter的核心在于获取许可,当许可不足时,线程可能会被阻塞或抛出异常。
摘要由CSDN通过智能技术生成

核心流程图

通过下列流程图(简化)可看出,限流处理策略即将每次请求根据限流配置判断是否触发限流,当校验时线程中断,则抛出IllegalStateException,当触发限流时,抛出RequestNotPermitted异常,本次请求均会终止调用。否则,本次请求继续正常调用。
在这里插入图片描述

RateLimiterConfig

限流器核心配置。 比如timeoutDuration:1s,limitRefreshPeriod:3s,limitForPeriod:1000. 表示从应用启动后,每三秒至多允许1000个请求,获取授权操作最多可等待1s,超过1000请求,会抛出RequestNotPermitted异常,需等待下一个3s周期,重新刷新1000个授权。

    private final Duration timeoutDuration;//获取授权操作的超时时间。 默认:5秒
    private final Duration limitRefreshPeriod;//限流周期时长。       默认:500纳秒
    private final int limitForPeriod;//周期内允许通过的请求数量。      默认:50

限流算法:

  • 令牌桶算法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值