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

Enterprise Distributed Application Service:外れ値排除を使用して Dubbo アプリケーションの可用性を確保する

最終更新日:Jan 07, 2025

マイクロサービス フレームワークでは、コンシューマーがプロバイダーのアプリケーション インスタンスの例外を検出できない場合、サービス呼び出しは影響を受けます。これはさらに、コンシューマーが提供するサービスのパフォーマンス、さらには可用性に影響を与えます。外れ値排除機能は、アプリケーション インスタンスの可用性を監視し、インスタンスを動的に調整します。これにより、サービス呼び出しの成功が保証され、サービスの安定性とサービス品質 (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 のインスタンスの状態を監視し、インスタンスを動的に追加または削除して、サービス呼び出しの成功を保証できます。

Outlier ejection

外れ値排除のプロセスを以下に示します。

  1. EDAS は、アプリケーション B、C、または D に異常なインスタンスがあるかどうかを検出します。異常なインスタンスが見つかった場合、EDAS は [インスタンス削除率のしきい値] パラメーターに基づいて、アプリケーションから異常なインスタンスを削除するかどうかを決定します。

  2. EDAS は、削除されたインスタンスにアプリケーション A の呼び出しリクエストを配信しません。

  3. EDAS は、[復旧検出単位時間] パラメーターに基づいて、異常なインスタンスが復旧したかどうかを検出します。

  4. 検出間隔は、[復旧検出単位時間] パラメーターの値とともに線形的に増加します。復旧検出単位時間のデフォルト値は 30000 ミリ秒で、0.5 分に相当します。[復元前にチェックされるインスタンスの最大数] パラメーターで指定されたしきい値に達すると、EDAS は異常なインスタンスが復旧したかどうかを最大検出間隔で検出します。

  5. 異常なインスタンスが復旧した後、EDAS はインスタンスをアプリケーションに追加して呼び出しリクエストを処理します。検出間隔は、[復旧検出単位時間] パラメーターの値 (30000 ミリ秒など) にリセットされます。

説明
  • プロバイダーの異常なインスタンスの比率がインスタンス削除率のしきい値パラメーターで指定されたしきい値を超える場合、EDAS はこのしきい値に基づいて異常なインスタンスを削除します。

  • プロバイダーが使用可能なインスタンスを 1 つだけ持っている場合、エラー率のしきい値パラメーターで指定されたしきい値を超えていても、EDAS はこのインスタンスを削除しません。

外れ値排除ポリシーを作成する

  1. にログインします。

  2. 左側のナビゲーション ペインで、[トラフィック管理] > [マイクロサービス ガバナンス] > [dubbo] を選択します。

  3. 左側のナビゲーション ペインで、[外れ値排除] をクリックします。[外れ値排除] ページで、[外れ値排除ポリシーの作成] をクリックします。

  4. [外れ値排除ポリシーの作成] パネルで、パラメーターを設定し、[OK] をクリックします。

    パラメーター

    説明

    マイクロサービス スペース

    リージョンとマイクロサービス名前空間を選択します。

    ポリシー名

    外れ値排除ポリシーの名前。名前は最大 64 文字で、文字、数字、アンダースコア (_)、およびハイフン (-) を含めることができます。

    呼び出されるサービスのフレームワーク

    必要に応じて、[spring Cloud][dubbo]、または [service Mesh] を選択します。

    有効なアプリケーションを選択

    アプリケーションを選択し、[>] アイコンをクリックして、[選択済みアプリケーション] リストにアプリケーションを追加します。

    アプリケーションが選択されると、このアプリケーションによって呼び出されるすべてのアプリケーションの異常なインスタンスを削除できます。このアプリケーションからの呼び出しリクエストは、削除されたインスタンスに配信されません。

    エラー率のしきい値

    エラー率の下限を入力します。呼び出されたアプリケーションのインスタンスのエラー率がこの制限を超えると、インスタンスは削除されます。デフォルト値:50。たとえば、インスタンスが統計時間枠内で 10 件の呼び出しリクエストを受信し、6 件の呼び出しリクエストが失敗したとします。エラー率は 60% です。このパラメーターを 50 に設定すると、インスタンスは削除されます。

    詳細設定

    Show アイコンをクリックして、[詳細設定] セクションを表示します。

    例外タイプ

    ビジネス要件に基づいて、[ネットワーク例外] または [ネットワーク例外 + ビジネス例外 (dubbo 例外)] を選択します。

    説明
    • ネットワーク例外とは、Dubbo の RpcException を指します。このような例外には、ネットワーク タイムアウトや、サーバーの低速なフル ガベージ コレクション (フル GC) によって発生するスレッド プールのフル状態が含まれます。

    • ビジネス例外とは、Dubbo の BizException を指します。たとえば、サーバーによってスローされる RunTimeException などです。

    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 分][エラー率のしきい値] パラメーターの値よりも高いかどうかを確認できます。このようにして、外れ値排除ポリシーが有効になっているかどうかを確認できます。詳細については、「アプリケーションの概要」をご参照ください。