Microservices Engine (MSE) では、サーキットブレーカー規則を使用して、アプリケーションまたはアプリケーションが依存するダウンストリームアプリケーションの要求の応答時間または異常な要求の比率を監視できます。指定されたしきい値に達すると、MSE は依存するダウンストリームアプリケーションの優先度を即座に下げます。システムは、指定された期間内に異常なダウンストリームアプリケーションを呼び出しません。これにより、アプリケーションの安定性と高可用性が確保されます。指定された期間が経過すると、システムは依存するダウンストリームアプリケーションへの呼び出しを再開します。このトピックでは、サーキットブレーカー規則を作成する方法について説明し、一般的なシナリオのサンプルサーキットブレーカー規則を提供します。
前提条件
Microservices Engine (MSE) Enterprise Edition がアクティブ化されています。
マイクロサービスアプリケーションに対して MSE のマイクロサービスガバナンス機能が有効になっています。詳細については、以下のトピックをご参照ください。
背景情報
スロットリングに加えて、トレース内の不安定なメソッドまたは依存するダウンストリームアプリケーションでサーキットブレーキングを実行して、トラフィック保護を実装できます。呼び出し関係が複雑なため、要求中にトレースの特定のステージでエラーが発生すると、要求が失敗するか、エラーによってトレース全体が使用できなくなる可能性があります。トレース内のメソッドが不安定な場合、たとえば、メソッドへの要求がタイムアウトした場合、または異常な要求の比率が増加した場合、サーキットブレーキング機能を使用してメソッドへの要求を制限できます。これにより、要求は短時間で失敗し、エラーがトレース全体に影響を与えるのを防ぎます。
ほとんどの場合、サーキットブレーカー規則は、弱依存アプリケーションの優先度を下げる必要があるシナリオに適用されます。
サンプルのサーキットブレーカー規則の詳細については、このトピックのシナリオ 1:低速呼び出しのサーキットブレーカー規則を作成するセクションとシナリオ 2:異常な要求のサーキットブレーカー規則を作成するセクションをご参照ください。
手順
MSE コンソール にログインし、上部のナビゲーションバーでリージョンを選択します。
左側のナビゲーションペインで、Microservices Governance > Application Governance を選択します。
Application list ページで、管理するアプリケーションを見つけてクリックします。アプリケーションの詳細ページで、次のいずれかの方法を使用してサーキットブレーカー規則を作成します。
左側のナビゲーションペインで、API Details をクリックします。表示されるページの [WEB サービス] タブで、Client タブをクリックします。インターフェースを選択し、Circuit Breaking タブをクリックします。[サーキットブレーキング] タブで、Added fusing rule をクリックします。
左側のナビゲーションペインで、Traffic management をクリックします。表示されるページで、Flow protection タブをクリックします。[フロー保護] タブで、Fuse rule タブをクリックします。[ヒューズ規則] タブで、Added fusing rule をクリックします。
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 (%)。
|
Fusing duration (s) | サーキットブレーキングが実装される期間。リソースにサーキットブレーキングが実装されている場合、指定されたサーキットブレーキング期間内にすべてのリソースへの呼び出しが失敗します。 |
Fuse recovery strategy | サーキットブレーキング期間の経過後にサーキットブレーカーがサーキットブレーキングを再トリガーするかどうかを指定します。有効な値:
|
シナリオ 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 秒後、サーキットブレーカーは次のリクエストを検出します。次のリクエストが正常な場合、サーキットブレーキングは終了します。それ以外の場合、サーキットブレーキングが再度トリガーされます。