Java 如何根据专业领域的价值设计限速器?

Java 如何根据专业领域的价值设计限速器?,java,algorithm,guava,rate-limiting,ratelimit,Java,Algorithm,Guava,Rate Limiting,Ratelimit,通常,我使用我自己的分布式费率限制器,它是基于番石榴费率限制器开发的 但它似乎只能在功能级别上使用 public void foo(){ RedRateLimiter=RedRateLimiter.create(3,“ID”); 2.获取(i); //做点什么 } 现在,我遇到一个场景,速率限制应该取决于专用字段的值。 例如: public void foo(String str) { // every value of str has its independent limiter in

通常,我使用我自己的分布式费率限制器,它是基于番石榴费率限制器开发的 但它似乎只能在功能级别上使用

public void foo(){
RedRateLimiter=RedRateLimiter.create(3,“ID”);
2.获取(i);
//做点什么
}
现在,我遇到一个场景,速率限制应该取决于专用字段的值。
例如:

public void foo(String str) {
  // every value of str has its independent limiter in this function ,maybe different
  //"a".equals(str) rate is 2/s "b".equals(str) rate is 3/s and so on
  //the range of value is large
}
显然,我无法为每个值创建RateLimiter实例。它将占用大量内存

所以我想知道我们是否应该使用滑动窗口算法而不是令牌桶或其他模式

如果是滑动窗口,如何设计分布式滑动窗口速率限制器?有文件吗