すべてのプロダクト
Search
ドキュメントセンター

Microservices Engine:トラフィック保護ルールのシナリオ

最終更新日:Jan 08, 2025

マイクロサービスの安定性は、マイクロサービスを使用するお客様にとって大きな懸念事項です。モノリシックアーキテクチャから分散アーキテクチャへの進化とデプロイ方法の変化に伴い、サービス間の依存関係はますます複雑になり、高可用性はビジネスシステムにとって非常に重要になります。マイクロサービスエンジン(MSE)トラフィック保護は、スロットリングやホットスポット保護などのモジュールを使用してアプリケーションの高可用性を向上させるサービスです。このトピックでは、トラフィック保護ルールとその使用シナリオについて説明します。

不安定性のシナリオ

本番環境では、次のような不安定性の問題が発生する可能性があります。

  • 大規模なプロモーション活動中にトラフィックが急増すると、システムの過負荷、高負荷、またはシステムの故障により注文を行うことができません。

  • 一部の未知の製品が人気になります。その結果、キャッシュの破損、データベースのクラッシュ、またはリソースのプリエンプションの問題が発生します。

  • 不安定なサードパーティサービス、スレッドプールの満杯、または多数の呼び出しが処理待ちになっているために、呼び出し元が停止します。その結果、呼び出しプロセス全体が中断されます。

これらの不安定性のシナリオは、深刻な結果につながる可能性があります。ただし、ほとんどの場合、開発者はトラフィックと依存関係に関連する高可用性保護を適用していません。 MSEトラフィック保護は、これらの不安定な要因がトラフィックに及ぼす影響を防ぎ、高可用性トラフィック保護を提供してサービスの安定性を確保するのに役立ちます。

コアシナリオ

次の表に、トラフィック保護ルールと該当するコアシナリオを示します。

トラフィック保護ルール

説明

コアシナリオ

参照

スロットリングルール

MSEを使用して、1秒あたりのクエリ数(QPS)に基づいてスロットリングルールを設定できます。 QPS値が指定されたしきい値を超えると、システムは自動的に余分なリクエストを拒否します。

スロットリングルールは、トラフィックの急増を制限する必要があるシナリオに適しています。これらのシナリオでは、スロットリングルールにより、システムはリクエストの処理を継続し、サービスの障害を防ぐことができます。

スロットリングルールを作成する

分離ルール

分離ルールは、同時進行中の呼び出しの数を制御して、過剰な低速呼び出しが通常の呼び出しに割り当てられたリソースをプリエンプトするのを防ぐために使用されます。

分離ルールは、サードパーティサービスが呼び出され、過剰な数の低速呼び出しが通常の呼び出しに割り当てられたリソースをプリエンプトするシナリオに適しています。分離ルールは、サービスの可用性を保証します。

分離ルールを作成する

サーキットブレーカールール

サーキットブレーカールールを使用すると、システムは、依存関係の弱い不安定な呼び出しに対して、サーキットブレーカーまたはデグレードを自動的に実行できます。これらのルールは、不安定性要因によって引き起こされるシステムの故障を防ぎます。

サーキットブレーカールールは、低速呼び出しやサービス例外などの不安定性要因によって引き起こされるシステムの故障を防ぐために使用されます。たとえば、応答時間(RT)が長いサードパーティサービスの呼び出しを無効にするようにサーキットブレーカールールが指定されています。

サーキットブレーカールールを構成する

ホットスポットパラメータ保護ルール

ホットスポットパラメータ保護ルールは、システムがホットスポットパラメータを自動的に識別し、各ホットスポット値のアクセス頻度または同時実行性を制御するために使用されます。ホットスポットパラメータ保護ルールは、特定のパラメータへの過剰なアクセスが原因で、通常の呼び出しに割り当てられたリソースがプリエンプトされるのを効果的に防ぐことができます。

ホットスポットパラメータ保護ルールは、特定のホットスポットデータで最も頻繁にアクセスされるデータを制御する必要があるシナリオに適しています。たとえば、ホットスポットパラメータ保護ルールを使用して、一定期間にわたって最も頻繁に購入された製品のIDを制御できます。これにより、一部の製品への頻繁なアクセスが原因でキャッシュの破損が発生した場合に、多数のリクエストがデータベースに送信されるのを防ぎます。

RPCリクエストのホットパラメータスロットリングルールを作成する

HTTPリクエストのホットパラメータスロットリングルールを作成する

スロットリングルール

シナリオ

トラフィックはランダムで予測できません。 11月11日(ダブル11)の00:00など、特定の時点でトラフィックが急増する可能性があります。ただし、システムの容量は常に制限されています。ピークトラフィックがシステムの容量を超えると、次のような結果が発生し、システムの故障につながる可能性があります。(1)多数のリクエストが処理待ちになっています。(2)リクエストの処理が遅いです。(3)CPU使用率が高い、またはシステムの過負荷が発生しています。これらの問題に対処するには、トラフィックの急増を抑制する必要があります。トラフィックスロットリングにより、システムの故障を引き起こすことなく、システムはできるだけ多くのリクエストを処理できます。トラフィックスロットリングは、トラフィックバーストなどのシナリオに適した一般的な方法です。

ルールの説明

Webポータルまたはサービスプロバイダーが利用可能なシナリオでは、サービスプロバイダーがトラフィックの急増によって圧倒されないようにする必要があります。この場合、トラフィックはサービスプロバイダーのサービス機能に基づいてスロットリングされるか、特定のサービス呼び出し元に対してスロットリングされます。事前にストレステストを実行してコアイインターフェースの処理能力を評価し、MSEを使用してQPSベースのスロットリングルールを構成できます。 QPSベースのスロットリングルールが構成されると、QPS値が指定されたしきい値を超えると、システムは自動的に余分なリクエストを拒否します。スロットリングルールの詳細については、「スロットリングルールを作成する」をご参照ください。

同時実行制御

シナリオ

ほとんどの場合、サービスはリモートサービス、データベース、サードパーティ API などの別のモジュールを呼び出します。たとえば、請求書の支払いをするときに、UnionPay によって提供される API がリモートで呼び出される場合があります。製品の価格を照会するときに、データベースクエリが関係する場合があります。ただし、この依存サービスの安定性は保証できません。依存サービスが不安定でリクエストの応答時間が増加すると、サービスを呼び出すために使用されるメソッドの応答時間も増加し、多数のスレッドが使用されます。その結果、サービスのスレッドプール内のスレッドが使い果たされ、サービスが使用できなくなる可能性があります。

最新のマイクロサービスアーキテクチャは分散型であり、複数のマイクロサービスで構成されています。異なるマイクロサービスが互いに呼び出し合うため、呼び出しプロセスが複雑になります。前述の問題は、サービスコールに大きな影響を与えます。複雑な呼び出しプロセスでは、1 つのノードが不安定になると、他のノードも不安定になる可能性があります。その結果、呼び出し全体が使用できなくなります。

ルールの説明

MSE は、インターフェースまたは依存関係の同時スレッド数を制御する機能を提供し、低速呼び出しなどの不安定な要因によってサービスが使用できなくなるのを防ぎます。

同時実行制御は、特定の呼び出しの同時スレッド数を制御するための軽量の分離方法として使用されます。これにより、過剰な数の低速呼び出しが通常の呼び出しのリソースをプリエンプトするのを防ぐことができます。詳細については、「分離ルールを作成する」をご参照ください。

ホットスポットパラメータ保護ルール

シナリオ

トラフィックの過負荷によるシステムの故障を防ぐために、ほとんどの場合、コアイインターフェースのスロットリングルールを構成できます。ただし、一部のシナリオでは、一般的なスロットリングルールでは問題を解決できません。

たとえば、大規模なプロモーション活動のピーク時には、人気の商品の瞬間的なページビューが高くなります。この場合、事前に人気の商品を予測し、人気の商品の情報についてキャッシュプリフェッチを実行できます。このようにして、製品のページビューが多い場合でも、データベースクエリなしで製品情報をすばやく取得できます。ただし、大規模なプロモーション活動中に、一部の未知の製品が人気になる可能性があります。このタイプの製品を予測することはできず、製品情報はプリフェッチされません。これらの製品のページビューが増加すると、多数のリクエストがキャッシュに送信され、キャッシュの破損が発生します。その結果、データベースアクセスに時間がかかります。通常の製品リクエストのリソースプール内のリソースは、異常なリクエストによって消費されます。その結果、システムの故障が発生します。

ルールの説明

この問題に対処するには、ホットスポットパラメータ保護ルールを構成します。これらのルールにより、システムは MSE のホットスポットパラメータへのアクセス制御に基づいて、ホットスポットパラメータを自動的に識別し、各ホットスポット値のアクセス頻度または同時実行性を制御できます。ホットスポットパラメータ保護ルールは、ホットパラメータへのアクセスに対する過剰なリクエストが、通常の呼び出しに割り当てられたリソースをプリエンプトするのを効果的に防ぐことができます。詳細については、「RPC リクエストのホットパラメータスロットリングルールを作成する」および「HTTP リクエストのホットパラメータスロットリングルールを作成する」をご参照ください。