RateLimiter:限流N个请求,但允许通过了N+个请求

问题描述
接口:getUrlDic我设置了限流5个,但是在第一秒的请求了,实际允许通过了9个(或10个),之后正常
RateLimiter使用方式参考:https://blog.csdn.net/fly910905/article/details/103644950

标题
问题分析
RateLimiter内部有个实现:SmoothBursty

SmoothBursty
SmoothBursty限流器使用令牌桶算法实现,这个限流器在空闲时候能够存储一定的令牌(默认是1秒钟时间产生的令牌),可以应对空闲一段时间后突然的爆发量请求。
guava的RateLimiter有一个核心的设计思想:当前请求的债务(请求的令牌大于限流器存储的令牌数)由下一个请求来偿还(上个请求亏欠的令牌,下个请求需要等待亏欠令牌生产出来以后才能被授权)。
具体参考:https://blog.csdn.net/fly910905/article/details/103644950
因此,如果第一秒的请求时空闲很久后的有一次请求,这时RateLimiter中已经存储了N个限流请求(默认是存储了1s的限流数),这事总的可允许请求数就是:N< 空闲后第一次可允许请求数 < 2N

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值