3

IPごとのレート制限を行う非常に単純なフィルターを追加したいと思いますが、iptablesで許可されているように、バーストを許可します。

キッチン シンク全体をインストールしたくありません。必要なのは、その機能を実装する 1 つの Filter クラスだけです。

単純な「レート制限するが、短いバーストを許可する」ことを可能にする優れたデータ構造/アルゴリズムは何でしょうか?

たとえば、ユーザーが 1 分間に 'x' 以上の GET / POST を実行しようとした場合に HTTP エラー コードを提供したいと考えていますが、それでも同じユーザーが 'y' まで「バースト」できるようにしたいと考えています (どこで y > x) 彼がバーストキャップに達するまで。

比較のために、 iptablesを使用して同様のレート制限とバーストを構成する方法を次に示します (私の場合はレート制限を設定することではありませんが、私が話していることを示すための単なる例です)。 +TCP SYN パケットのバースト):

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

2 に答える 2

4

Javaレベル:

  • バースト要件に合わせて独自のクエリを作成する、Esperに基づくレート リミッターを見つけました。
  • Jetty には組み込みのサーブレットフィルターがあります。
  • 独自のメカニズムを作成するための組み込みブロックを備えた Java ライブラリ
  • キャメルにはスロットル機構があります

しかし、ウェブサーバーレベルで実装する方が簡単だと思います

または専用サーバーアドオンを使用

于 2012-12-16T09:40:35.430 に答える