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

Microservices Engine:サーキットブレーカー規則の作成

最終更新日:Jan 08, 2025

Microservices Engine (MSE) では、サーキットブレーカー規則を使用して、アプリケーションまたはアプリケーションが依存するダウンストリームアプリケーションの要求の応答時間または異常な要求の比率を監視できます。指定されたしきい値に達すると、MSE は依存するダウンストリームアプリケーションの優先度を即座に下げます。システムは、指定された期間内に異常なダウンストリームアプリケーションを呼び出しません。これにより、アプリケーションの安定性と高可用性が確保されます。指定された期間が経過すると、システムは依存するダウンストリームアプリケーションへの呼び出しを再開します。このトピックでは、サーキットブレーカー規則を作成する方法について説明し、一般的なシナリオのサンプルサーキットブレーカー規則を提供します。

前提条件

背景情報

スロットリングに加えて、トレース内の不安定なメソッドまたは依存するダウンストリームアプリケーションでサーキットブレーキングを実行して、トラフィック保護を実装できます。呼び出し関係が複雑なため、要求中にトレースの特定のステージでエラーが発生すると、要求が失敗するか、エラーによってトレース全体が使用できなくなる可能性があります。トレース内のメソッドが不安定な場合、たとえば、メソッドへの要求がタイムアウトした場合、または異常な要求の比率が増加した場合、サーキットブレーキング機能を使用してメソッドへの要求を制限できます。これにより、要求は短時間で失敗し、エラーがトレース全体に影響を与えるのを防ぎます。

ほとんどの場合、サーキットブレーカー規則は、弱依存アプリケーションの優先度を下げる必要があるシナリオに適用されます。

サンプルのサーキットブレーカー規則の詳細については、このトピックのシナリオ 1:低速呼び出しのサーキットブレーカー規則を作成するセクションとシナリオ 2:異常な要求のサーキットブレーカー規則を作成するセクションをご参照ください。

手順

  1. MSE コンソール にログインし、上部のナビゲーションバーでリージョンを選択します。

  2. 左側のナビゲーションペインで、Microservices Governance > Application Governance を選択します。

  3. Application list ページで、管理するアプリケーションを見つけてクリックします。アプリケーションの詳細ページで、次のいずれかの方法を使用してサーキットブレーカー規則を作成します。

    • 左側のナビゲーションペインで、API Details をクリックします。表示されるページの [WEB サービス] タブで、Client タブをクリックします。インターフェースを選択し、Circuit Breaking タブをクリックします。[サーキットブレーキング] タブで、Added fusing rule をクリックします。

    • 左側のナビゲーションペインで、Traffic management をクリックします。表示されるページで、Flow protection タブをクリックします。[フロー保護] タブで、Fuse rule タブをクリックします。[ヒューズ規則] タブで、Added fusing rule をクリックします。

  4. Add Circuit Breaking Rule ダイアログボックスで、規則パラメータを設定し、New をクリックします。

規則パラメータの詳細については、このトピックの パラメータ セクションをご参照ください。

パラメータ

Add Circuit Breaking Rule ダイアログボックスのパラメータについて、次の表で説明します。

パラメータ

説明

Interface name

サーキットブレーカー規則を適用するインターフェースの名前。

Statistical window duration

時間ウィンドウの期間。有効な値:1 秒~ 120 分。

Minimum number of requests

サーキットブレーキングをトリガーする最小リクエスト数。現在の時間ウィンドウ内のリクエスト数がこのパラメータの値より少ない場合、サーキットブレーカー規則が満たされていてもサーキットブレーキングはトリガーされません。

Threshold Type

しきい値タイプ。有効な値:Slow call ratio (%) および Abnormal proportion (%)

  • このパラメータを Slow call ratio に設定する場合は、Slow call RT パラメータを設定する必要があります。これは、リクエストの応答時間のしきい値を指定します。リクエストの応答時間が [低速呼び出し RT] パラメータの値を超えると、リクエストは低速呼び出しとしてカウントされます。

    また、Circuit Breaking Ratio Threshold パラメータも設定する必要があります。これは、低速呼び出しのサーキットブレーキングをトリガーするパーセンテージしきい値を指定します。サーキットブレーカー規則が有効になった後、指定された時間ウィンドウ内のリクエスト数が Minimum number of requests パラメータの値よりも大きく、低速呼び出しのパーセンテージが [サーキットブレーキング比率しきい値] パラメータの値よりも大きい場合、Fusing duration (s) パラメータで指定されたサーキットブレーキング期間内にリクエストは自動的にブロックされます。サーキットブレーキング期間が経過すると、サーキットブレーカーは次のリクエストを検出します。次のリクエストの応答時間が Slow call RT パラメータの値より小さい場合、サーキットブレーキングは終了します。次のリクエストの応答時間が Slow call RT パラメータの値よりも大きい場合、サーキットブレーキングが再度トリガーされます。

  • このパラメータを Abnormal proportion に設定する場合は、Circuit Breaking Ratio Threshold パラメータを設定する必要があります。これは、異常なリクエストのサーキットブレーキングをトリガーするパーセンテージしきい値を指定します。

    サーキットブレーカー規則が有効になった後、時間ウィンドウ内の異常なリクエスト数が Minimum number of requests パラメータの値よりも大きく、異常なリクエストのパーセンテージが [サーキットブレーキング比率しきい値] パラメータの値よりも大きい場合、Fusing duration (s) パラメータで指定されたサーキットブレーキング期間内にリクエストは自動的にブロックされます。

Fusing duration (s)

サーキットブレーキングが実装される期間。リソースにサーキットブレーキングが実装されている場合、指定されたサーキットブレーキング期間内にすべてのリソースへの呼び出しが失敗します。

Fuse recovery strategy

サーキットブレーキング期間の経過後にサーキットブレーカーがサーキットブレーキングを再トリガーするかどうかを指定します。有効な値:

  • Single detection recovery:サーキットブレーキング期間が経過すると、サーキットブレーカーは次のリクエストを検出します。リクエストが低速呼び出しまたは異常なリクエストでない場合、サーキットブレーキングは終了します。それ以外の場合、サーキットブレーキングが再度トリガーされます。

  • Progressive recovery:このオプションを選択する場合は、Number of recovery phases パラメータと Minimum number of passes per step パラメータを設定する必要があります。

    • サーキットブレーキング期間が経過すると、サーキットブレーカーは指定された回復ステージ数に基づいて段階的回復を実行します。ステージ内のリクエスト数が [ステップごとの最小パス数] パラメータの値に達すると、チェックがトリガーされます。チェックされたリクエスト数が [サーキットブレーキング比率しきい値] パラメータの値を超えない場合、すべてのリクエストが許可されるまで、許可されるリクエストのパーセンテージが徐々に増加します。ステージでチェックされたリクエスト数が [サーキットブレーキング比率しきい値] パラメータの値を超えると、サーキットブレーキングが再度トリガーされます。

    • リクエスト比率は、次の式に基づいて計算されます。リクエスト比率 (T) = 100 / 回復ステージ数 (N)。最初のステージのリクエスト比率は T で、2 番目のステージのリクエスト比率は 2T です。リクエスト比率が 100% になるまで計算が続きます。

    • たとえば、回復ステージ数が 3 で、各ステージで許可される最小リクエスト数が 5 の場合、リクエストは 3 つのステージに 33%、67%、100% の比率で分散されます。各ステージのリクエスト数が 5 以上の場合、チェックがトリガーされます。各ステージのリクエスト数が 5 未満の場合、すべてのリクエストが許可されるまで、システムは次の回復ステージに進みます。

シナリオ 1:低速呼び出しのサーキットブレーカー規則を作成する

たとえば、サードパーティサービスを呼び出して応答時間が長い場合、現在のインターフェースへの呼び出しが影響を受けます。この問題を解決するには、低速呼び出しでサーキットブレーキングを実行できます。

Add Circuit Breaking Rule ダイアログボックスで、次の表に示すパラメータを設定します。

パラメータ

説明

Interface name

test

サーキットブレーカー規則を適用するインターフェースの名前を指定します。

Statistical window duration

1

このパラメータを 1 に設定します。単位:秒。

Minimum number of requests

10

このパラメータを 10 に設定します。

Threshold Type

低速呼び出し比率 (%)

このパラメータを [低速呼び出し比率 (%)] に設定します。

Slow call RT

1000

このパラメータを 1000 に設定します。単位:ミリ秒。リクエストの応答時間が 1,000 ミリ秒を超えると、リクエストは低速呼び出しとしてカウントされます。

Circuit Breaking Ratio Threshold

80%

このパラメータを 80 に設定します。単位:%。低速呼び出しのパーセンテージが 80% に達すると、サーキットブレーキングがトリガーされます。

Fusing duration (s)

10

このパラメータを 10 秒に設定します。

Fuse recovery strategy

単一検出回復

サーキットブレーキング期間が経過すると、サーキットブレーカーは次のリクエストを検出します。リクエストが低速呼び出しまたは異常なリクエストでない場合、サーキットブレーキングは終了します。それ以外の場合、サーキットブレーキングが再度トリガーされます。

サーキットブレーカー規則が有効になった後、1 秒以内にリクエスト数が 10 より大きく、低速呼び出しのパーセンテージが 80% より大きい場合、次の 10 秒以内にすべてのリクエストが失敗します。10 秒後、サーキットブレーカーは次のリクエストを検出します。次のリクエストの応答時間が 1,000 ミリ秒未満の場合、サーキットブレーキングは終了します。それ以外の場合、サーキットブレーキングが再度トリガーされます。

シナリオ 2:異常な要求のサーキットブレーカー規則を作成する

たとえば、サードパーティサービスのコンテンツが表示されると、システムで異常なリクエストが発生します。異常なリクエストの比率が高い場合は、異常なリクエストでサーキットブレーキングを実行して、ユーザーエクスペリエンスを向上させることができます。

Add Circuit Breaking Rule ダイアログボックスで、次の表に示すパラメータを設定します。

パラメータ

説明

Interface name

test

サーキットブレーカー規則を適用するインターフェースの名前を指定します。

Statistical window duration

1

このパラメータを 1 に設定します。単位:秒。

Minimum number of requests

10

このパラメータを 10 に設定します。

Threshold Type

異常比率 (%)

このパラメータを [異常比率 (%)] に設定します。

Circuit Breaking Ratio Threshold

80%

このパラメータを 80 に設定します。単位:%。異常なリクエストのパーセンテージが 80% に達すると、サーキットブレーキングがトリガーされます。

Fusing duration (s)

10

このパラメータを 10 秒に設定します。

Fuse recovery strategy

単一検出回復

サーキットブレーキング期間が経過すると、サーキットブレーカーは次のリクエストを検出します。リクエストが低速呼び出しまたは異常なリクエストでない場合、サーキットブレーキングは終了します。それ以外の場合、サーキットブレーキングが再度トリガーされます。

サーキットブレーカー規則が有効になった後、1 秒以内にリクエスト数が 10 より大きく、異常なリクエストのパーセンテージが 80% より大きい場合、次の 10 秒以内にすべてのリクエストが失敗します。10 秒後、サーキットブレーカーは次のリクエストを検出します。次のリクエストが正常な場合、サーキットブレーキングは終了します。それ以外の場合、サーキットブレーキングが再度トリガーされます。

[No text provided to translate. Please provide the text you would like me to translate.]