共通の電流制限アルゴリズム

制限:同時アクセスによって/レート要求、またはシステム速度を保護するために時間ウィンドウ内要求を制限、レート制限は、サービスが拒否される可能性が一度に達し、またはキューを待っている、処理降格

1、(アルゴリズムを制限する固定時間窓)をカウントします。

付属の現在の時間ウィンドウ内で、(アクセス要求を許可するために、毎秒100回)を制限する規則に従って、出現の累積数が制限アクセスを超えた場合、我々は、いずれかによって対処されます要求があるたびにインターフェースした後、時間の開始点を選択しますフロー値は、我々は、後続のアクセス要求を拒否してください。場合は、次回の窓、カウンターを再カウントするようにクリアされます。

短所:制限政策があまりにもラフでは、二つの時間窓の重要な時期に、バースト的なトラフィックに対処することができません

図2に示すように、電流制限スライディングウィンドウアルゴリズム:

時間の任意のウィンドウに1Sは、要求の数インタフェースは、K回を超えることができません。

[配列を無駄にされているキューが一杯になったとき、尾点の位置は、実際にデータが格納されていないが、それは円形キューメモリ空間であろう]、キューサイクルK + 1を維持し、そして1S内の着信要求を記録するため

新しい要求が来たとき、私たちはキューから削除この新しい要求間隔を1秒要求、以上になります。その後、我々はアイドル位置円形キューがあるかどうかを見ていきます。ある場合は、その要求内の1の数は、電流制限値Kを超えているではない場合は、サービス要求が拒否されるように、新しい要求が、待ち行列の最後尾に格納されて置きます。

短所:フロー粒度のみ選択された時間に上限、選択された時間内に、よりきめ細かなアクセス頻度のためには、サイズが限定されるものではありません。

コード循環キュー:

/ ** 
 *強制エンプティ状態==尾ヘッド
 *フォースフル状態(+尾1)%のn-ヘッドは== 
 *キューがいっぱいになると、尾の点の位置は、実際にはデータが格納されていない、それは円形キューアレイを無駄に収納スペースの。
 * / 
パブリッククラスCircularQueue { 

    []項目プライベート文字列; 
    プライベートのn-INT; //キューサイズ
    プライベートヘッドはint = 0; 
    プライベートテールのint = 0; 

    公共CircularQueue(int型の容量){ 
        項目=新しい新しいString [定員]; 
        this.n容量=; 
    } 



    パブリックブールエンキュー(項目文字列){ 
        //キューが満杯である
        falseにIFは((+尾1)==%のn-ヘッド。)リターン; 
        商品[尾] =項目; 
        尾=(+尾1)N-%。
        trueを返すこと; 
    }

    パブリック文字列デキュー(){ 
        IF(ヘッド==尾)リターンヌル。// ==頭尾队列是空
        ストリングRET =項目[ヘッド]。
        ヘッド=(ヘッド+ 1)%N。
        RETを返します。

    } 
}  

スムーズな制限一般的に使用されるアルゴリズム:リーキーバケットアルゴリズムとトークンバケットアルゴリズム。

3、リーキーバケットアルゴリズム:

水定速(インターフェースに応答速度)、水が直接アセンブリ(インターフェースよりアクセス頻度の応答速度)を介してオーバーフロー流入速度で最初のバケットに排出する(リクエスト)、バケツに水、次いで要求はドレインを見ることができるリジェクトバケットアルゴリズムは、データ伝送速度に制限を課すことができます。

短所:トラフィックの非効率性のバーストのために。

4、トークンバケット:Googleのオープンソースプロジェクトグアバトークンバケット制御アルゴリズムのRateLimiter使用インチ

(QPS = 100は、間隔が10msである場合)には、バケットが既にプラス満杯でない場合、バケットのトークンに追加された定数1 / QPS間隔であろう。新しいリクエストが来るそれはトークンを取っていない場合は、各トークンがかかります、ブロックされたか、サービス拒否することができます。

メリット:予期しない、ある程度のトラフィックを許可します。

簡単に速度を変更することができます。率を高めるために必要ならば、バケツにトークンの割合を増加する需要を。一般タイミング(例えば100ミリ秒)のトークンの特定の数に浴槽を増加し、リアルタイムの計算アルゴリズムのいくつかの亜種私たちは、トークンの数を増やす必要があります

おすすめ

転載: www.cnblogs.com/wjh123/p/11442632.html
おすすめ