配置为2 TPS的RateLimiter只允许第1次请求和节流第2次请求。
import com.google.common.util.concurrent.*;
class Main {
public static void main(String... args) {
RateLimiter rl = RateLimiter.create(2);
System.out.println(rl.getRate());
System.out.println(rl.tryAcquire());
System.out.println(rl.tryAcquire());
System.out.println(rl.tryAcquire());
}
}输出:
2.0
true
false
false我希望,由于速率被配置为2 TPS,它将允许前两个请求,而不仅仅是第一个请求。这一切为什么要发生?
使用番石榴27.0-jre.jar。
任何帮助都是非常感谢的。
发布于 2021-04-07 05:19:12
平滑分布
RateLimiter的定义主要取决于发放许可证的速度。如果没有额外的配置,许可证将以固定的速率分配,以每秒许可证的形式定义。许可证将顺利分发,对个别许可证之间的延迟进行调整,以确保保持配置的费率。 可以将RateLimiter配置为有一个热身期,在此期间,颁发的许可证每秒钟稳步增加,直到达到稳定的速率为止。
参考文献:速率限制器
配置的速率在间隔内均匀分布。(更像是滑动窗口)
https://stackoverflow.com/questions/66979840
复制相似问题