Microservices Engine (MSE) は、HTTP リクエストのホット パラメーター スロットリング ルールをサポートしています。 ホット パラメーター スロットリング ルールを作成して、Web サービスを提供するアプリケーションにアクセスする HTTP リクエスト内の特定のパラメーターに対してきめ細かいスロットリングを実装できます。 Servlet コンテナ、Spring Web、Spring Boot などの主要な Web フレームワークを使用するアプリケーションの場合、MSE は HTTP リクエストのホット パラメーター スロットリング ルールを使用して API リクエストのパラメーターを解析し、送信元 IP アドレス、ホスト名、リクエスト ヘッダー、リクエスト パラメーターなどのディメンションに基づいてリソース呼び出しをスロットリングします。 これにより、ビジネスとシステムの安定性が確保されます。 このトピックでは、アプリケーションの HTTP リクエストのホット パラメーター スロットリング ルールを作成する方法について説明します。
HTTP リクエストのホット パラメーター スロットリング ルールは、以前は Web アプリケーション保護ルールとして知られていました。
背景情報
Web サービスが提供されるシナリオでは、API リクエストのスロットリング ルールを作成してアプリケーションを保護できます。 さらに、送信元 IP アドレスやリクエスト パラメーターなどのディメンションに基づいてリソース呼び出しをスロットリングして、さまざまなシナリオでビジネス アプリケーションを保護できます。 たとえば、トラフィック量の多い Web サービスのシナリオでは、特にアクセス頻度の高い送信元 IP アドレスまたは製品 ID に対して、API リクエストのスロットリングを実装する必要があります。 例:
一定期間に最も頻繁に購入された製品の ID へのアクセスを制限することで、キャッシュの破損が原因でデータベースに大量のリクエストが送信されるのを防ぎます。
一定期間に頻繁にリクエストが送信される IP アドレスからのアクセスを制限することで、ブラッシングを防ぎます。
手順
MSE コンソール にログインし、トップ ナビゲーション バーでリージョンを選択します。
左側のナビゲーション ペインで、Microservices Governance > Application Governance を選択します。
Application list ページで、目的のアプリケーションのリソース カードをクリックします。
アプリケーションの詳細ページで、左側のペインの APIの詳細Hotspot Parameter Protection (HTTP Requests)新しいホットスポットパラメーター保護(HTTP リクエスト) をクリックします。 表示されるページの [WEB サービス] タブで、 タブをクリックします。 [ホットスポット パラメーター保護 (HTTP リクエスト)] タブで、 をクリックします。
新しいホットスポットパラメーター保護 (HTTP リクエスト)New ダイアログ ボックスで、パラメーターを設定し、 をクリックします。
パラメーターの詳細については、このトピックの[パラメーター] セクションをご参照ください。
ルール リストで作成したルールを見つけ、Status 列の [有効化] をクリックします。
Tips メッセージで、[OK] をクリックします。
シナリオ 1:人気商品のフラッシュ セール
フラッシュ セールなどのシナリオでは、大量のトラフィックが原因で、システムがすぐに応答しなくなったり、応答を停止したりすることがあります。 システムの安定性を確保するために、ホット パラメーター スロットリング ルールを作成できます。 指定されたしきい値を超えると、システムは人気商品へのアクセスに対する超過リクエストを拒否します。
たとえば、システムが 1 秒あたり最大 100 件の製品アクセス リクエストを処理するように指定する場合、新しいホットスポットパラメーター保護(HTTP リクエスト) ダイアログ ボックスで次のルール情報を設定できます。 ルールが作成されると、システムは 1 秒あたり最大 100 件の各製品へのアクセス リクエストを処理します。 この場合、システムは各製品へのアクセスに対する超過リクエストを拒否し、カスタム情報を返します。
Parameter Properties パラメーターを [URL パラメーター] に設定します。
説明パラメータープロパティ パラメーターを構成する場合は、人気商品 ID を指定するパラメーターを選択します。たとえば、stockId パラメーターで商品 ID を指定する場合は、[URL パラメーター] を選択し、[URL パラメーター名] フィールドに stockId と入力します。
[URL パラメーター名] フィールドに stockId を入力します。
[しきい値] パラメーターを [秒] あたり 100 リクエストに設定します。
[フロー制御方式] パラメーターを Fast failure に設定します。
シナリオ 2:悪意のあるブラッシングの防止
たとえば、プロモーション中に大量の悪意のあるブラッシング リクエストが発生した場合、大量の製品在庫またはサーバー リソースが占有されます。 この場合、システムは送信元 IP アドレスに基づいてリクエストをキューに入れ、一定の速度でリクエストを処理することで、過剰なリクエストがサービスの安定性に影響を与えるのを防ぐことができます。
ホット パラメーター スロットリング ルールを作成するには、新しいホットスポットパラメーター保護(HTTP リクエスト) ダイアログ ボックスで次のルール情報を設定します。 ルールが作成されると、システムは各 IP アドレスからの API リクエストを 10 ミリ秒ごとに処理し、超過リクエストをキューに入れます。 ブロックされたリクエストは、30 ミリ秒以上キューに入れられるとすぐに失敗します。
Parameter Properties パラメーターを [クライアント IP] に設定します。
デフォルトでは、[しきい値タイプ] パラメーターには [リクエスト数] が選択されています。
[しきい値] パラメーターを [秒] あたり 100 リクエストに設定します。
[フロー制御方式] パラメーターを Waiting in line に設定します。
[タイムアウト] パラメーターを 30 に設定します。単位:ミリ秒。
Whether to open をオンにします。
パラメーター
新しいホットスポットパラメーター保護(HTTP リクエスト) ダイアログ ボックスで設定できるパラメーターを次の表に示します。
パラメーター | 説明 | |
Configure Protection Rule | ||
Parameter Properties | ルールを適用する API リクエストのパラメーター。
| |
(オプション) 一致パターンと一致文字列 | [パラメーター プロパティ] で [ヘッダー] または [URL パラメーター] を選択した場合は、[プロパティ値の一致] をオンにして、[一致パターン] と [一致文字列] を指定できます。 [一致パターン]:
| |
[しきい値タイプ] | しきい値タイプ。 デフォルト値:[リクエスト数]。 | |
[しきい値] | ルールをトリガーする 1 秒あたりのクエリ数 (QPS) のしきい値。 システムがリクエストを処理する間隔を指定する必要があります。 サポートされている単位:秒、分、時、日。 たとえば、しきい値が [分] あたり 10 リクエストに設定されている場合、システムは 1 分あたり最大 10 リクエストを処理します。 | |
詳細設定 | [フロー制御方式] |
|
[バースト サイズ] | [フロー制御方式] パラメーターを Fast failure に設定した場合、トラフィック バーストに追加で許可されるリクエスト数を指定できます。 | |
[有効期限] | [フロー制御方式] パラメーターを Waiting in line に設定する場合は、タイムアウト期間を指定する必要があります。 単位:ミリ秒。 たとえば、QPS しきい値が 1 秒あたり 5 リクエストに設定されている場合、システムは 200 ミリ秒ごとにリクエストを処理し、超過リクエストをキューに入れます。 タイムアウト期間は、最大キューイング時間を示します。 キューイング時間がタイムアウト期間を超えるリクエストは直接拒否されます。 | |
Whether to open |
| |
Configure Protection Behavior | ||
Association Behavior |
| |