一尘不染

Servlet过滤器:非常简单的限速过滤器,允许突发

tomcat

我想添加一个非常简单的过滤器来执行每个IP速率限制,但仍允许突发,有点类似于 iptables 允许的操作。

我不想安装整个厨房水槽:我只需要一个实现该功能的Filter类。

什么是一个好的数据结构/算法,允许做一个简单的“速率限制,但允许短突发”?

例如,如果用户每分钟尝试执行超过“ x”个GET / POST的操作,我希望提供HTTP错误代码,但我仍然希望使该用户“突发”至“ y”( y>
x),直到他达到爆破上限。

只是为了进行比较,这是如何使用 iptables 配置类似的突发速率限制(这只是一个示例,以显示我在说什么,即使在我的情况下,这与放置速率限制无关TCP
SYN数据包上的+突发):

iptables -A INPUT -p tcp --syn -m limit --limit 1/s --limit-burst 5

阅读 261

收藏
2020-06-16

共1个答案

一尘不染

Java 级别:

  • Esper基础上找到了一个速率限制器,您可以在其中构建自己的查询以匹配突发需求。
  • Jetty具有内置的servlet 过滤器
  • 具有内置 Java库,用于创建您自己的机制
  • camel有节流机制

但我认为在 网络服务器 级别更容易实现

或带有专用 服务器附件

2020-06-16