マイクロサービスフレームワークでは、コンシューマーがプロバイダーのアプリケーションインスタンスの例外を検出できない場合、サービスコールが影響を受けます。これは、コンシューマーが提供するサービスのパフォーマンス、さらには可用性にも影響を与えます。外れ値削除機能は、アプリケーションインスタンスの可用性を監視し、インスタンスを動的に調整します。これにより、サービスコールの成功が保証され、サービスの安定性とサービス品質(QoS)が向上します。このトピックでは、外れ値削除ポリシーを作成する方法について説明します。
背景情報
次の図は、外れ値削除を必要とするシステムを示しています。この例では、システムにはアプリケーション A、B、C、および D があり、アプリケーション A はアプリケーション B、C、および D のインスタンスを呼び出します。アプリケーション B、C、または D のインスタンスが異常になり、アプリケーション A が異常なインスタンスを識別しない場合、アプリケーション A によって開始された呼び出しの一部は失敗します。次の図では、アプリケーション B には 1 つの異常なインスタンスがあり、アプリケーション C と D にはそれぞれ 2 つの異常なインスタンスがあります。アプリケーション B、C、および D に多数の異常なインスタンスがある場合、アプリケーション A のサービスパフォーマンスと可用性が影響を受ける可能性があります。
アプリケーション A のサービスパフォーマンスと可用性を確保するために、アプリケーション A の外れ値削除ポリシーを設定できます。ポリシーが設定されると、Enterprise Distributed Application Service(EDAS)はアプリケーション B、C、および D のインスタンスステータスを監視し、インスタンスを動的に追加または削除して、サービスコールの成功を保証できます。

外れ値削除のプロセスを以下に示します。
- EDAS は、アプリケーション B、C、または D に異常なインスタンスがあるかどうかを検出します。異常なインスタンスが見つかった場合、EDAS は [インスタンス削除率のしきい値] パラメーターに基づいて、アプリケーションから異常なインスタンスを削除するかどうかを決定します。
- EDAS は、アプリケーション A の呼び出し要求を削除されたインスタンスに配信しません。
- EDAS は、[リカバリ検出単位時間] パラメーターに基づいて、異常なインスタンスが回復したかどうかを検出します。
- 検出間隔は、[リカバリ検出単位時間] パラメーターの値とともに線形的に増加します。リカバリ検出単位時間のデフォルト値は 30000 ミリ秒で、0.5 分に相当します。[復元前にチェックされるインスタンスの最大数] パラメーターで指定されたしきい値に達すると、EDAS は異常なインスタンスが回復したかどうかを最大検出間隔で検出します。
- 異常なインスタンスが回復すると、EDAS はインスタンスをアプリケーションに追加して呼び出し要求を処理します。検出間隔は、[リカバリ検出単位時間] パラメーターの値(30000 ミリ秒など)にリセットされます。
- プロバイダーの異常なインスタンスの比率がインスタンス削除率のしきい値パラメーターで指定されたしきい値を超える場合、EDAS はこのしきい値に基づいて異常なインスタンスを削除します。
- プロバイダーが使用可能なインスタンスを 1 つだけ持っている場合、エラー率のしきい値パラメーターで指定されたしきい値を超えても、EDAS はこのインスタンスを削除しません。
外れ値削除ポリシーを作成する
にログインします。
左側のナビゲーションペインで、 を選択します。
- [spring Cloud] ページのナビゲーションペインで、[外れ値削除] をクリックします。
- 上部のナビゲーションバーで、リージョンを選択します。[外れ値削除] ページで、マイクロサービス名前空間を選択し、[外れ値削除ポリシーの作成] をクリックします。
- [外れ値削除ポリシーの作成] パネルで、パラメーターを設定し、[OK] をクリックします。
パラメーター 説明 マイクロサービススペース ドロップダウンリストボックスで、リージョンとマイクロサービス名前空間を選択します。 ポリシー名 ポリシーの名前を入力します。名前は最大 64 文字まで入力できます。 呼び出されるサービスのフレームワーク [spring Cloud] を選択します。 有効なアプリケーションを選択 アプリケーションを選択し、[>] アイコンをクリックして、アプリケーションを [選択済みアプリケーション] リストに追加します。 アプリケーションが選択されると、このアプリケーションによって呼び出されるすべてのアプリケーションの異常なインスタンスを削除できます。このアプリケーションからの呼び出し要求は、削除されたインスタンスに配信されません。
エラー率のしきい値 エラー率の下限を入力します。呼び出されたアプリケーションのインスタンスのエラー率がこの制限を超えると、インスタンスは削除されます。デフォルト値:50。たとえば、インスタンスが統計時間枠内で 10 件の呼び出し要求を受信し、6 件の呼び出し要求が失敗したとします。エラー率は 60% です。このパラメーターを 50 に設定すると、インスタンスは削除されます。 詳細設定
アイコンをクリックして、[詳細設定] セクションを表示します。例外タイプ ビジネス要件に基づいて、[ネットワーク例外] または [ネットワーク例外 + ビジネス例外(HTTP 5xx)] を選択します。 QPS 下限 統計時間枠に基づいて、1 秒あたりのクエリ数(QPS)の下限を入力します。統計時間枠は、Dubbo 2.7 に基づいて開発されたアプリケーションの場合は 15 秒、その他の Dubbo バージョンと Spring Cloud アプリケーションに基づいて開発されたアプリケーションの場合は 10 秒です。15 秒の統計時間枠などの統計時間枠内の QPS がこのパラメーターで指定された下限に達すると、EDAS はエラー率の収集と分析を開始します。 インスタンス削除率のしきい値 削除できる異常なインスタンスの比率のしきい値を指定します。しきい値に達すると、異常なインスタンスはこれ以上削除されません。たとえば、アプリケーションに合計 6 つのインスタンスがあるとします。このパラメーターを 60% に設定すると、削除できるインスタンスの数は 3.6 で、最も近い整数 3 に切り捨てられます。この数は、6 × 60% という式を使用して計算されます。計算結果が 1 未満の場合、異常なインスタンスは削除されません。 リカバリ検出単位時間 ミリ秒単位の間隔を指定します。この単位間隔は、異常なインスタンスが回復したかどうかを検出するために使用されます。異常なインスタンスが削除されると、EDAS は指定された単位間隔に基づいて検出間隔を線形的に増加させます。デフォルト値:30000。単位:ミリ秒。デフォルト値は 0.5 分に相当します。 復元前にチェックされるインスタンスの最大数 EDAS が異常なインスタンスが回復していないことを検出する最大回数を入力します。検出間隔は、リカバリ検出単位時間の値とともに線形的に増加します。検出回数がこのパラメーターの値に達すると、EDAS は異常なインスタンスが最大検出間隔で回復したかどうかを検出します。たとえば、[リカバリ検出単位時間] を 30000 ミリ秒に、[復元前にチェックされるインスタンスの最大数] を 20 に設定したとします。EDAS が異常なインスタンスが回復していないことを 20 回連続で検出すると、EDAS は後続の検出操作を 10 分間隔で実行します。間隔は、20 x 30000 ミリ秒という式を使用して計算されます。検出回数がこのパラメーターで指定された値に達する前にインスタンスが回復した場合、検出間隔は [リカバリ検出単位時間] の値にリセットされます。 説明 [復元前にチェックされるインスタンスの最大数] を大きな値に設定しないことをお勧めします。このパラメーターを大きな値に設定すると、最大検出間隔が長くなります。検出間隔が終了する前にインスタンスが回復した場合、リカバリをできるだけ早く検出できません。これにより、リソース使用率が低下し、サービスコール要求の処理が遅延します。
結果を確認する
外れ値削除ポリシーを設定して作成すると、外れ値削除機能が有効になります。外れ値削除を設定したアプリケーションの詳細ページに移動して、アプリケーションの監視情報を表示できます。たとえば、[トポロジ] タブで、呼び出し要求がまだ異常なインスタンスに転送されているかどうか、およびアプリケーション呼び出しの [エラー率/ 1 分] が [エラー率のしきい値] パラメーターの値よりも高いかどうかを確認できます。このようにして、外れ値削除ポリシーが有効になっているかどうかを確認できます。詳細については、「アプリケーションの概要」をご参照ください。
外れ値削除ポリシーを管理する
[外れ値削除] ページで、目的の外れ値削除ポリシーの操作列にある [編集] または [削除] をクリックして、ポリシーを管理できます。