什么是RateLimiter
Guava库中的一个限流器组件,基于PPS(Permit per second每秒单位限流)
Permit概念
Permit直译是许可证,可以把它理解为一个消耗单位:
- 如果要对QPS进行限制,那么Permit = Query,一次Query消耗一个Permit就能达到效果
- 如果对文件网络IO进行限制,那么Permit = Size of Package,每次包大小越大消耗的Permit越多
- 如果要对请求时长进行限制,那么Permit = Time Cost of Query
如下代码就是实现限制调用某接口 20次/s
double interfaceRateDouble = Double.parseDouble(20.0);
this.interfaceRateLimiter = RateLimiter.create(interfaceRateDouble);
interfaceRateLimiter.acquire();
原理
转载:https://blog.csdn.net/fubicheng208/article/details/106650146/