Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Servlet过滤器:非常简单的速率限制过滤器,允许突发_Java_Tomcat_Servlet Filters_Rate Limiting - Fatal编程技术网

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

Java Servlet过滤器:非常简单的速率限制过滤器,允许突发,java,tomcat,servlet-filters,rate-limiting,Java,Tomcat,Servlet Filters,Rate Limiting,我想添加一个非常简单的过滤器,对每个IP速率进行限制,但仍然允许突发,有点像iptables允许的那样 我不想安装整个厨房水槽:我只需要一个实现该功能的过滤器类 哪种好的数据结构/算法可以实现简单的“速率限制,但允许短突发” 例如,如果用户每分钟尝试执行的GET/POST超过'x',我希望提供一个HTTP错误代码,但我仍然希望允许同一用户“突发”到'y'(其中y>x),直到他达到突发上限 为了进行比较,这里介绍了如何使用iptables配置类似的带突发的速率限制(这只是一个示例,以说明我在说什么

我想添加一个非常简单的过滤器,对每个IP速率进行限制,但仍然允许突发,有点像iptables允许的那样

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

哪种好的数据结构/算法可以实现简单的“速率限制,但允许短突发”

例如,如果用户每分钟尝试执行的GET/POST超过'x',我希望提供一个HTTP错误代码,但我仍然希望允许同一用户“突发”到'y'(其中y>x),直到他达到突发上限

为了进行比较,这里介绍了如何使用iptables配置类似的带突发的速率限制(这只是一个示例,以说明我在说什么,尽管在我的例子中,并不是对TCP SYN数据包设置速率限制+突发):


Java级别:

  • 找到了一个速率限制器,该限制器基于您构建自己的查询的位置,以匹配突发请求
  • Jetty有一个内置的servlet
  • 内置的Java库,用于创建自己的机制
  • 有一个节流机构
但我认为在webserver级别更容易实现

或使用专用的服务器附加组件


    • Java级别:

      • 找到了一个速率限制器,该限制器基于您构建自己的查询的位置,以匹配突发请求
      • Jetty有一个内置的servlet
      • 内置的Java库,用于创建自己的机制
      • 有一个节流机构
      但我认为在webserver级别更容易实现

      或使用专用的服务器附加组件


      你也可以看看番石榴-它为更复杂的费率限制提供了一个很好的起点。

      你也可以看看番石榴-它为更复杂的费率限制提供了一个很好的起点。

      我对Apache的svn服务器的请求做了一些分析,正是为了解决这个问题。我的结论是,如果所需的限制为x reqs/min,则每n分钟执行一次限制nx,并根据您认为可接受的突发流量配置文件选择n。我对Apache的svn服务器的请求做了一些分析,正是为了解决这个问题。我的结论是,如果所需的限制为x reqs/min,则每n分钟执行一次限制nx,并根据您认为可接受的突发流量配置文件选择n。我最终设置了每天的限制。如果HTTPS会话在Tomcat中终止,那么在nginx中实现速率限制并不容易。如果HTTPS会话在Tomcat中终止,那么在nginx中实现速率限制就不容易。
      iptables -A INPUT -p tcp --syn -m limit --limit 1/s --limit-burst 5