マイクロサービスへのトラフィックが処理能力を超えて急増すると、制御されていないリクエストがリソースを使い果たし、サービス停止を引き起こす可能性があります。速度制限ルールは、特定のインターフェイスに対してインスタンスごとの秒間クエリ数 (QPS) の上限を適用します。QPS が設定したしきい値を超えると、選択したフロー制御効果に応じて、Microservices Engine (MSE) は超過したリクエストを即座に拒否するか、一定のレートでキューに入れます。
前提条件
開始する前に、以下をご確認ください:
MSE Enterprise Edition が有効化されていること
ご利用のアプリケーションでマイクロサービスガバナンスが有効化されていること。設定手順については、以下をご参照ください:
速度制限の仕組み
各速度制限ルールは、特定のインターフェイスをモニターし、アプリケーションインスタンスごとに QPS しきい値を適用します。
トラフィックがしきい値を超えると、MSE はフロー制御効果に基づいて超過リクエストを処理します:
| フロー制御効果 | 動作 | 使用シーン | トレードオフ |
|---|---|---|---|
| フェイルファスト | 超過リクエストを即座に拒否します。応答内容は、アプリケーションのシステム設定で構成されたアダプテーションモジュールに依存します。 | キューイングよりも高速な拒否が望ましい、レイテンシーに敏感なサービス | 呼び出し元にとっては低レイテンシーですが、超過リクエストはドロップされます |
| 待機 | 超過リクエストをキューに入れ、一定のレートで処理します。タイムアウト期間を超えたリクエストは失敗します。 | トラフィックスパイクを平滑化し、可能であればすべてのリクエストを処理したい場合のピーク負荷シフト | 個々のリクエストのレイテンシーは高くなりますが、ドロップされるリクエストは少なくなります |
速度制限ルールの作成
MSE コンソールにログインし、上部のナビゲーションバーでリージョンを選択します。
左側のナビゲーションウィンドウで、[マイクロサービスガバナンス] > [アプリケーションガバナンス] を選択します。
[アプリケーションリスト] ページで、対象アプリケーションのリソースカードをクリックします。
以下のいずれかの方法で、速度制限ルールのダイアログボックスを開きます:
アプリケーション概要から:左側のナビゲーションウィンドウで [アプリケーション概要] をクリックします。[スループット QPS TOP] タブで対象のインターフェイスを見つけ、[操作] 列の [フロー制御] をクリックします。
API 詳細から:左側のナビゲーションウィンドウで [API 詳細] をクリックします。[WEB サービス] タブで [インターフェイスフロー制御] タブをクリックし、[速度制限ルールの追加] をクリックします。
トラフィック管理から:左側のナビゲーションウィンドウで [トラフィック管理] をクリックします。[フロー保護] タブをクリックし、[インターフェイスフロー制御] タブをクリックしてから、[速度制限ルールの追加] をクリックします。
[速度制限保護ルールの追加] または [ルールの追加] ダイアログボックスで、以下のパラメーターを設定します。
パラメーター 説明 インターフェイス名 速度制限ルールを適用するインターフェイス。 開くかどうか ルールを有効または無効にします。変更はすぐに有効になります。 単一インスタンスの QPS しきい値 ルールをトリガーするインスタンスごとの QPS 制限。 フロー制御効果 過剰なリクエストの処理方法です。「[即時失敗]」を選択すると、それらを即座に拒否します。または、「[キュー待ち]」を選択すると、一定の処理レートでキューに格納されます。 タイムアウト リクエストがキューで待機できる最大時間 (ミリ秒)。この期間を超えたリクエストは失敗します。[フロー制御効果] が [待機] に設定されている場合にのみ適用されます。 [新規作成] をクリックします。
例:キューイングによるトラフィックスパイクの平滑化
ピーク時にリクエストを拒否するのではなく、安定したレートで処理するには、キューイングを使用した速度制限ルールを次のように設定します:
[単一インスタンスの QPS しきい値] を
5に設定します。[フロー制御効果] を [待ち行列] に設定します。
[タイムアウト] を
5000に設定します。
これらの設定により、MSE はインスタンスごとに 200 ミリ秒ごとに 1 つのリクエストを処理し、残りをキューに入れます。リクエストの待機時間が 5,000 ミリ秒を超えると、リクエストは失敗し、MSE は静的ページや事前定義されたテキストなど、デフォルトの速度制限応答を返します。