対話しているサービスによって課されるスループット制限に達するのを避けるために、制限アルゴリズムを実装する必要があります。
制限は «1 日に N リクエスト» として指定されます。ここで、N は 10^6 の大きさのオーダーです。
サービスと対話するクライアントの分散システムがあるため、測定値を共有する必要があります。
正確な解決策には、すべてのイベントを記録し、サービスを呼び出すイベントが発生したときの制限を計算する必要があります。もちろん、このアプローチはコストがかかりすぎるため、おおよその解決策を探しています。
私が考案した最初のものは、イベントの検出を離散化することを暗示しています。たとえば、最大 24 のカウンターを維持し、1 時間以内に発生したリクエストの数を記録します。
許容できる。
しかし、たとえ別の「力」に導かれたとしても、より洗練された方法は、連続体へのアプローチを拒否することだと思います.
最後の N 個のイベントを記録すると、«現在の» スループットを簡単に推測できるとしましょう。もちろん、このアルゴリズムは、数時間前に発生した過去のイベントを考慮していないために問題があります。エージング アルゴリズムを使用して改善することはできますが、ここで私の質問に従います。
Q: «イベントの発生率が高く、長期間にわたるサービスのスループットを見積もる問題に、洗練されたおおよその解決策はありますか?»