アプリケーションのホットパラメータ調整ルールを作成すると、Microservices Engine (MSE) はリソース呼び出し中に最も頻繁にアクセスされるホットパラメータの統計を分析および収集し、ホットパラメータを含むリソース呼び出しを調整します。 これにより、システムの安定性が確保されます。 このトピックでは、アプリケーションのホットパラメータ調整ルールを作成する方法について説明します。
背景情報
ホットデータとは、頻繁にアクセスされるデータのことです。 たとえば、キャッシュの破損が原因でデータベースに大量のリクエストが送信されるのを防ぐために、一定期間内に最も頻繁にアクセスされたデータの統計を収集し、頻繁にアクセスされたデータにアクセス制御を実行する必要があります。
一定期間内に最も頻繁に購入された商品の ID へのアクセスを制限することで、キャッシュの破損が原因でデータベースに大量のリクエストが送信されるのを防ぎます。
一定期間内に頻繁にリクエストを送信するユーザーの ID からのアクセスを制限することで、ブラッシングを防ぎます。
MSE は、最近最も使用されていない (LRU) ポリシーを使用して、最も頻繁にアクセスされるホットパラメータの統計を収集し、トークンバケットアルゴリズムに基づいてホットパラメータを含むリソース呼び出しを調整します。
手順
MSE コンソール にログインし、上部のナビゲーションバーでリージョンを選択します。
左側のナビゲーションウィンドウで、Microservices Governance > Application Governance を選択します。
Application list ページで、目的のアプリケーションのリソースカードをクリックします。
次のいずれかの方法を選択して、RPC インターフェイスまたはカスタムインターフェイスのホットパラメータ調整ルールを作成します。
方法 1:API 詳細ページでルールを作成する
RPC インターフェイス:左側のナビゲーションウィンドウで、[API 詳細] をクリックします。 次に、[RPC サービス] タブをクリックします。 インターフェイスを選択し、右側のウィンドウで [ホットスポットパラメータ保護 (RPC)] タブをクリックし、[ホットスポットパラメータ保護 (RPC) ルールの追加] をクリックします。
カスタムインターフェイス:左側のナビゲーションウィンドウで、[API 詳細] をクリックします。 次に、[カスタムインターフェイス] タブをクリックします。 インターフェイスを選択し、右側のウィンドウで [ホットスポットパラメータ保護] タブをクリックし、[ホットパラメータ保護 (カスタムインターフェイス) ルールの追加] をクリックします。
方法 2:フロー保護タブでルールを作成する
左側のナビゲーションウィンドウで、[トラフィック管理] をクリックします。 [トラフィック管理] ページで、[フロー保護] タブをクリックし、[ホットパラメータ保護 (RPC/カスタムインターフェイス)] サブタブをクリックして、[ホットパラメータ保護 (RPC/カスタムインターフェイス) の追加] をクリックします。
表示されたダイアログボックスで、パラメータを設定し、[新規] をクリックします。
パラメータの詳細については、このトピックのパラメータセクションをご参照ください。
シナリオ 1:ホット商品のフラッシュセール
フラッシュセールなどのシナリオでは、大量のトラフィックが原因でシステムがすぐに応答しなくなったり、応答を停止したりすることがあります。 システムの安定性を確保するために、ホットパラメータ調整ルールを作成できます。 指定されたしきい値を超えると、システムはホット商品を購入するための超過リクエストをキューに入れます。
たとえば、1 秒以内に商品を購入するためのリクエスト数が 100 を超えた場合、システムは 1 秒あたり 100 リクエストを処理し、超過リクエストをキューに入れます。 リモートプロシージャコール (RPC) リクエストのホットパラメータ調整ルールを作成するには、[ホットパラメータ保護 (RPC/カスタムインターフェイス) の追加] ダイアログボックスで次のルール情報を設定します。
[インターフェイス名] パラメータの値を指定します。
[パラメータ位置インデックス] パラメータを、追跡中に指定されたホットパラメータのインデックスに設定します。 インデックスは 0 から始まり、RPC メソッドまたはカスタム追跡メソッドのパラメータリストのインデックスに対応します。
たとえば、RPC メソッド
com.aliyun.demo:methodA(param0, param1, ……)の場合、インデックス 0 は param0 に対応します。 カスタム追跡メソッドSphU.entry("demoResource",EntryType.IN, 1, param0, param1, ……)の場合、インデックス 0 は param0 に対応します。[統計ディメンション] パラメータを [リクエスト数] に設定します。
[統計サイクル時間] パラメータを秒単位で 1 に設定し、[単一マシンのしきい値] パラメータを 100 に設定します。
[フロー制御効果] パラメータを [待機中] に設定します。
[タイムアウト] パラメータを 30 に設定します。単位:ミリ秒。
ルールが作成されると、この API 操作が 1 秒以内に 100 回を超えて呼び出された場合、超過リクエストはキューに入れられます。 リクエストが 30 ミリ秒を超えてキューに入れられた場合、リクエストはすぐに失敗します。
シナリオ 2:大量のシステムリソースを占有する頻繁なリクエスト
フラッシュセールのシナリオでは、顧客は注文の配送先住所を変更する必要がある場合があります。 配送先住所を変更するための大量のリクエストがシステムに送信されると、データベースにデータを書き込むために大量のリソースが消費されます。 この場合、ホットパラメータを含む超過リクエストをすぐに失敗させることができます。 RPC リクエストのホットパラメータ調整ルールを作成するには、[ホットパラメータ保護 (RPC/カスタムインターフェイス) の追加] ダイアログボックスで次のルール情報を設定します。
[インターフェイス名] パラメータの値を指定します。
[パラメータ位置インデックス] パラメータを、追跡中に指定されたホットパラメータのインデックスに設定します。 インデックスは 0 から始まり、RPC メソッドまたはカスタム追跡メソッドのパラメータリストのインデックスに対応します。
たとえば、RPC メソッド
com.aliyun.demo:methodA(param0, param1, ……)の場合、インデックス 0 は param0 に対応します。 カスタム追跡メソッドSphU.entry("demoResource",EntryType.IN, 1, param0, param1, ……)の場合、インデックス 0 は param0 に対応します。[統計ディメンション] パラメータを [同時実行数] に設定します。
[統計サイクル時間] パラメータを秒単位で 1 に設定し、[単一マシンのしきい値] パラメータを 100 に設定します。
[フロー制御効果] パラメータを [高速失敗] に設定します。
ルールが作成されると、システムは 1 秒あたり最大 100 リクエストを処理できます。 超過リクエストはすぐに失敗します。
パラメータ
次の表に、[ホットパラメータ保護 (RPC/カスタムインターフェイス) の追加] ダイアログボックスで設定できるパラメータを示します。
パラメータ | 説明 |
[インターフェイス名] | ルールを適用するインターフェイスの名前。 名前は、追跡中に指定されたリソース名と同じである必要があります。 |
[パラメータ位置インデックス] | 追跡中に指定されたホットパラメータのインデックス。 インデックスは 0 から始まり、RPC メソッドまたはカスタム追跡メソッドのパラメータリストのインデックスに対応します。 たとえば、RPC メソッド |
[統計ディメンション] | リクエストの統計を収集する基準となるディメンション。 有効な値:
|
[統計サイクル時間] | 統計期間。単位:秒。 たとえば、統計期間が 10 秒で、1 秒あたりのクエリ数 (QPS) のしきい値が 5 の場合、各ホットパラメータには 10 秒以内に最大 5 回アクセスできます。 |
[単一マシンのしきい値] | 各ホットパラメータの QPS しきい値。 |
[フロー制御効果] | ブロックされたリクエストを処理するモード。 Statistical dimension パラメータを Number of requests に設定した場合、このパラメータを設定できます。 有効な値:
|