制限のSpringCloudGateWay

I.はじめ
、高度並行システムでは、多くの場合、システム内の電流を制限する必要がメイク一方では、サーバーが過負荷になっている多数の要求を防止し、サービスに結果が使用できない、一方、ネットワーク攻撃を防ぐためです。
そのようなHystrix、隔離プールアプリケーションスレッド、スレッドプールの負荷などの一般的な方法を、制限すること融合行くロジックを超えます。一般に、アプリケーションサーバは、(Tomcatコンテナなど)スレッドの数を制限することにより、同時実行を制御するために使用され、流速はまた、平均時間窓によって制御されます。共通の電流制限緯度電流IP、URIと通過するユーザアクセス頻度を含みます。
_電流制限は通常、nginxの、openresty、香港、zuulとして、ゲートウェイで終了するスプリングクラウドゲートウェイなど、AOPによってアプリケーション層で行うことができます。

2。アルゴリズム制限
1。カウンターアルゴリズム
_カウンタアルゴリズムは、電流制限が少し荒いと簡単です達成するためにカウンタを使用して、我々は一般的に、このような制限QPS 100として1秒間に渡すことができる要求の数を制限する、という考えが最初の要求からカウントを開始することです次1Sに、一つ各要求カウントが増加すると、累積数が達した場合には100 VEの、後続の要求が完了します。部門は拒否しました。1秒後に、カウントが0に戻り、再起動を数えます。次のように具体的に実現:各サービスコールの場合、カウンタ1とAtomiclongのincrementandget()メソッドに追加することができる最新の値を返し、最新の値が閾値と比較されます。実装は、私は、我々はすべての欠点があると知っていると思う:私は最初の10ミリ秒100曲のリクエスト、時間の単位を通過した場合、990ミリ秒のバックだけ立って、要求を拒否することができます。我々は、この現象を指し、「スパイク現象。」

2。リーキーバケットアルゴリズムは、
電流制限はリーキーバケットアルゴリズムを用いて達成することができる、「ラッシュ現象」を排除します。リーキーバケットアルゴリズム名は、非常に鮮やかです。漏斗毎日の使用と同様、容器内のアルゴリズム、。要求が来たときに、漏斗内への水の当量は、その後、ゆっくりと均一には小さな開口部から流出します。どんなに多くのトラフィック上で、以下の流れは変わらず残っていません。どんなに何のサービスの呼び出し元の不安定、バケットアルゴリズムは、漏れ電流を制限するために使用され、要求を処理するごとに10ミリ秒。処理速度が固定されているため、着信要求の速度は不明です。突然現れ多くの要求があるかもしれません。要求は、最初のバケットで処理することはできません。それはバケツなので、容量制限を持つことが必要です。バケツがいっぱいになると、新しい要求は破棄されます。

_アルゴリズムでは、あなたがそれによって、複数の同時実行を取得し、定期的にキューから要求を取得し、それらを実行する(実行サービス予定)スレッドプールを使用することができ、リクエストを保持するキューを作成することが可能です。

使用後アルゴリズムは欠点があります。短いバーストは、トラフィックを処理することはできません。

III。トークンバケットアルゴリズム
意味では、トークンバケットアルゴリズムは、リーキーバケットアルゴリズムの改善です。バケットアルゴリズムは、緊急コールの度合いを可能にしながら、トークンバケットアルゴリズムは、平均的な呼び出し元のレート制限であってもよいし、コール要求のレートを制限することができます。トークンバケットアルゴリズムでは、ストレージ・バケット内のトークンの固定数があります。アルゴリズム、メカニズムは、トークンバケットに一定の速度することができます。各要求の呼び出しは、トークンを取得する必要があります。のみ継続するトークンを取得した後。それ以外の場合は、代替が可能なトークン直接または拒否したのを待つことです。プレイトークンは、連続的なアクションです。バケット内のトークン数が上限に達した場合、これらのトークンは廃棄されます。このような場合もあります。可能なトークンの大きなバケツ。この場合、着信要求は、トークンを介して直接行うことができます。例えば、100にQPS、初期化後の第二の電流リミッタ、浴槽100トークン。この時点で、サービスはまだ利用できません。起動後、フローリストリクタ100は、瞬間的な要求に耐えることができます。したがって、だけでなく、要求が特定のレートを実行することと等価であるトークンバケットに待機します。

_アイデアを実装します。あなたは、スレッドプールによってキューに定期的にトークンを保持するキュー、およびトークン生成を準備することができます。各要求は、あなたがキューからトークンを取得し、継続することができます。

III。春の雲が電流制限をゲートウェイ
フィルタにSpringCloudGatewayでは、上記の3つのフィルタは、彼の私を実現することができます

おすすめ

転載: www.cnblogs.com/blogst/p/10930384.html