Microservices Engine (MSE) では、サーキットブレーカールールを使用して、アプリケーションまたはアプリケーションが依存するダウンストリームアプリケーションのリクエストの応答時間や異常なリクエストの比率をモニターできます。指定されたしきい値に達すると、MSE は依存するダウンストリームアプリケーションの優先度を直ちに下げます。指定された期間内、システムは異常なダウンストリームアプリケーションを呼び出しません。これにより、アプリケーションの安定性と高可用性が確保されます。指定された期間が経過すると、システムは依存するダウンストリームアプリケーションへの呼び出しを再開します。このトピックでは、サーキットブレーカールールの作成方法と、一般的なシナリオのサンプルルールについて説明します。
前提条件
Microservices Engine (MSE) Enterprise Edition が有効化されていること。
MSE のマイクロサービスガバナンス機能がマイクロサービスアプリケーションで有効になっていること。詳細については、以下のトピックをご参照ください。
背景情報
トラフィック制御に加えて、呼び出しトレースにおける不安定なメソッドやダウンストリームの依存関係に対するサーキットブレーキングも、トラフィック保護のための重要な手段です。呼び出し関係の複雑さにより、呼び出しトレースのいずれかの部分でエラーが発生すると、リクエストは失敗します。これは不安定性を増幅させ、トレース全体が利用できなくなる原因にさえなり得ます。呼び出しトレース内のメソッドが不安定になった場合 (たとえば、メソッドがタイムアウトしたり、異常なリクエストの比率が増加したりした場合)、サーキットブレーキング機能はそのメソッドへの呼び出しを制限します。これにより、リクエストは迅速に失敗 (フェイルファスト) し、エラーがトレース全体に影響を与えるのを防ぎます。
ほとんどの場合、サーキットブレーカールールは、弱く依存するアプリケーションの優先度を下げる必要があるシナリオに適用されます。
サンプルサーキットブレーカールールの詳細については、このトピックの「シナリオ 1: 低速な呼び出しに対するサーキットブレーカールールの作成」および「シナリオ 2: 異常なリクエストに対するサーキットブレーカールールの作成」セクションをご参照ください。
機能へのアクセス
MSE コンソールにログインし、トップナビゲーションバーでリージョンを選択します。
左側のナビゲーションウィンドウで、Microservices Governance > Application Governance を選択します。
Application list ページで、管理するアプリケーションを見つけてクリックします。アプリケーションの詳細ページで、次のいずれかの方法を使用してサーキットブレーカールールを作成します。
左側のナビゲーションウィンドウで、API Details をクリックします。表示されたページで、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 (%)。
|
Circuit Breaking Duration (s) | サーキットブレーキングが実装される期間。リソースにサーキットブレーキングが実装されている場合、設定された期間内にすべてのリクエストが迅速に失敗します。 |
Circuit Breaking Policy | サーキットブレーカーの回復フェーズ (半開状態) の回復ポリシー。
|
シナリオ 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% に達すると、サーキットブレーキングがトリガーされます。 |
Circuit Breaking Duration (s) | 10 | このパラメーターを 10 秒に設定します。 |
Circuit Breaking Policy | 単一検出回復 | サーキットブレーキング期間が経過すると、サーキットブレーカーは次のリクエストを検出します。リクエストが低速呼び出しまたは異常なリクエストでない場合、サーキットブレーキングは終了します。それ以外の場合、サーキットブレーキングが再度トリガーされます。 |
サーキットブレーカールールが有効になった後、1 秒以内にリクエスト数が 10 を超え、低速呼び出しの割合が 80% を超えると、次の 10 秒間はすべてのリクエストが失敗します。10 秒後、サーキットブレーカーは次のリクエストを検出します。次のリクエストの応答時間が 1,000 ミリ秒未満の場合、サーキットブレーキングは終了します。それ以外の場合、サーキットブレーキングが再度トリガーされます。
シナリオ 2: 異常なリクエストに対するサーキットブレーカールールの作成
たとえば、サードパーティのサービスの内容が表示されるときに、システムで異常なリクエストが発生する場合などです。異常なリクエストの比率が高い場合は、異常なリクエストに対してサーキットブレーキングを実行して、より良いユーザーエクスペリエンスを確保できます。
Add Circuit Breaking Rule ダイアログボックスで、次の表で説明されているパラメーターを設定します。
パラメーター | 例 | 説明 |
Interface name | test | API 名。 |
Statistical window duration | 1 | 統計収集期間は 1 秒です。 |
Minimum number of requests | 10 | サーキットブレーカーをトリガーする最小リクエスト数は 10 です。 |
Threshold Type | 異常率 | このパラメーターを [異常率 (%)] に設定します。 |
Circuit Breaking Ratio Threshold | 80% | このパラメーターを 80 に設定します。単位: %。異常なリクエストの割合が 80% に達すると、サーキットブレーキングがトリガーされます。 |
Circuit Breaking Duration (s) | 10 | このパラメーターを 10 秒に設定します。 |
Circuit Breaking Policy | 単一検出回復 | サーキットブレーキング期間が経過すると、サーキットブレーカーは次のリクエストを検出します。リクエストが低速呼び出しまたは異常なリクエストでない場合、サーキットブレーキングは終了します。それ以外の場合、サーキットブレーキングが再度トリガーされます。 |
サーキットブレーカールールが有効になった後、1 秒以内にリクエスト数が 10 を超え、異常なリクエストの割合が 80% を超えると、次の 10 秒間はすべてのリクエストが失敗します。10 秒後、サーキットブレーカーは次のリクエストを検出します。次のリクエストが正常な場合、サーキットブレーキングは終了します。それ以外の場合、サーキットブレーキングが再度トリガーされます。