如何设计RateLimiter取决于专业领域的价值?

问题描述

常见的是,我使用基于番石榴RateLimiter开发的我自己的分布式RateLimiter。 但这似乎只能在功能级别上使用。

public void foo() {
  RedrateLimiter limiter = RedrateLimiter.create(3,"ID");
  limiter.acquire(i);
  //do something
}

现在,我遇到一个场景,速率限制应取决于专业字段的值。
例如:

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实例,它将占用大量内存。

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

如果是滑动窗口,如何设计分布式滑动窗口RateLimiter?有文件吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)