APIリクエストを実行するタスクキューを通過する複数のサーバー/ワーカーがいます。(キューにMemcachedとCeleryを使用するDjango)APIリクエストは1秒間に10リクエストに制限されています。リクエストの総数(すべてのサーバー)が制限を超えないように、レート制限するにはどうすればよいですか?
私は、関連するレート制限の質問のいくつかを調べましたが、それらはより線形で非同時のシナリオに焦点を合わせていると思います。どのようなアプローチを取るべきですか?
APIリクエストを実行するタスクキューを通過する複数のサーバー/ワーカーがいます。(キューにMemcachedとCeleryを使用するDjango)APIリクエストは1秒間に10リクエストに制限されています。リクエストの総数(すべてのサーバー)が制限を超えないように、レート制限するにはどうすればよいですか?
私は、関連するレート制限の質問のいくつかを調べましたが、それらはより線形で非同時のシナリオに焦点を合わせていると思います。どのようなアプローチを取るべきですか?
GuavaプロジェクトのRate Limiterを見たことがありますか? 彼らはこのクラスを最新リリースの 1 つで導入しましたが、部分的にはあなたのニーズを満たしているようです。
確かに、分散環境の複数のノードにまたがるレート制限は計算されませんが、実行中のノードの数に基づいてレート制限を動的に構成することができます (つまり、5 つのノードの場合、2 つの API リクエストのレート制限があります)。 2番目)
Limitdと呼ばれるこの問題を解決するために、私はオープンソース プロジェクトに取り組んできました。ノード以外のテクノロジのクライアントはまだありませんが、プロトコルとアイデアは単純です。
あなたのフィードバックは大歓迎です。