2012-11-16 14 views
6

私は、分散レート制限アルゴリズムを実装する必要がある価格設定プラットフォームに取り組んでいます。私はkゲートウェイを提供しており、xのサービスを提供しています。ゲートウェイは、(ロードバランサを介して)任意のサービスを提供できます。顧客はサービスに1秒間に多数の通話を購入し、その通話は任意のゲートウェイ経由でルーティングできます。だから、顧客の通話を制限するために、すべてのゲートウェイでコールカウンターを更新するための良いアルゴリズムを知っている人がいますか?分散レート制限アルゴリズム

このアルゴリズムに関する2つの重要な指標は、ネットワークオーバーヘッドと受け入れられたコール数とレート制限の間の偏差です。

ありがとうございます!

「よく知られている」アルゴリズムがあるかどうかを知りたいだけです。

+1

回答があなたの範囲内にないとあなたが試したアルゴリズムはありますか? – Woot4Moo

+1

私は問題を勉強しています、私は現時点でのアルゴリズムを知らないので、現時点ではアルゴリズムを実装していません。他のゲートウェイに通知してから他のすべてのカウンターを減らすために各呼び出しの後にカウンターを送信する単純なアルゴリズムを簡単に想像できますが、レート制限が1秒あたり約10 000コールの場合、ネットワークのオーバーヘッドはひどいものです。もう1つのケースは、ゲートウェイの数となります。そして、呼び出し後にカウンタブロードキャストを暗示します。 – Lambdacrash

+0

分散レート制限アルゴリズムが分かっている場合は、私に名前を教えてください:p – Lambdacrash

答えて

3

私はこのarticle(archive.org)に基づいて解決策を実装しました。私はアルゴリズムがLeaky Bucketと呼ばれると思うが、それは正常に動作します。クォータ全体をバーストで使用できるので完璧ではありませんが、全体的にnode.jsとRedisでは非常に高速です。受け入れられたリクエストとレートの差はかなり大きく、サンプルウィンドウとバケットサイズの比に依存します。

+0

ありがとう、私はこのアルゴリズムを実装し、私の境界内にあるかどうかをチェックします:-) – Lambdacrash

+0

記事に与えられたリンクはもはや利用可能ではありません。 – lrAndroid

+0

@IrAndroid:archive.orgを指すリンクを修正しました。 – mhvelplund

関連する問題