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

Enterprise Distributed Application Service:マイクロサービスガバナンスを設定する

最終更新日:Mar 05, 2025

Enterprise Distributed Application Service (EDAS) は、マイクロサービスエンジン (MSE) への非侵入型の接続をサポートしています。EDAS の Spring Cloud アプリケーションと Dubbo アプリケーションで、MSE が提供するマイクロサービスガバナンス機能を実装できます。アプリケーションを作成またはデプロイするときに、アプリケーションのサービス登録と検出、空のリスト保護、およびグレースフルスタート機能を設定できます。このトピックでは、マイクロサービスガバナンスを設定する方法について説明します。

背景情報

サービス登録と検出

Eureka、ZooKeeper、および Nacos は、Java マイクロサービスモデルで一般的なサービスレジストリタイプです。サービスレジストリは、サービスの登録と検出を実装するために使用されます。サービスを分離し、依存関係管理から解放できます。このようにして、マイクロサービスを動的に管理できます。

空のリスト保護

この機能は、サービス登録中にサーバーで例外が発生するシナリオに適用されます。このシナリオでは、クライアントがサービスレジストリにサーバーアドレスリスト (インスタンスリスト) を要求した後、サービスレジストリは空のリストを返します。空のリスト保護機能を有効にすると、クライアントは空のリストを無視し、前回正常に返されたインスタンスリストをキャッシュから取得します。これにより、サービスレジストリが構成を更新したり、アップグレードまたはダウングレードを実行したり、ネットワークの切断や停電などの例外が発生したりした場合でも、クライアントの可用性が確保されます。

クライアント (コンシューマー) は、サービスレジストリからサーバー (プロバイダー) によって提供されるインスタンスリストをサブスクライブします。サービスレジストリが構成を更新したり、アップグレードまたはダウングレードを実行したり、ネットワークの切断や停電などの例外が発生したりすると、コンシューマーからのサブスクリプションが影響を受ける可能性があります。その結果、コンシューマーの可用性が低下します。例外によって発生するサブスクリプションエラーを処理するために、コンシューマーの空のリスト保護機能を有効にすることができます。

proconfig

グレースフルスタート

オンラインアプリケーションの場合、リリース、スケールアウト、スケールイン、再起動などの操作は避けられません。EDAS は、MSE のグレースフルスタートソリューションを統合して、起動フェーズでアプリケーションを保護します。このソリューションは、サービスプリフェッチ、遅延サービス登録、グレースフルローリングデプロイメントなどの機能を提供します。

  • サービスプリフェッチ: プリフェッチ期間とプリフェッチカーブを指定できます。これにより、新しく起動されたサービスが短期間でトラフィックの急増に耐えられない可能性が低くなります。

  • 遅延サービス登録: 指定された延長期間が経過した後にのみアプリケーションが登録されるようにします。これにより、アプリケーションが初期化されるまで登録されません。このようにして、アプリケーションは非同期リクエストを処理し、計算リソースを準備するのに十分な時間があるため、初期化エラーによるエラーを防ぎます。

    アプリケーションの初期化プロセスが複雑な場合、アプリケーションの登録と初期化は同時に行われる可能性があります。アプリケーションが完全に初期化される前に、アプリケーションがレジストリに登録されている可能性があります。この場合、アプリケーションがコンシューマーによって呼び出されると、エラーが返される可能性があります。この問題を解決するために、遅延サービス登録機能を使用して、アプリケーションが完全に初期化された後にのみ、アプリケーションがレジストリに登録できるようにすることができます。

  • グレースフルローリングデプロイメント: マイクロサービスシステム外のコンシューマーに、アプリケーションの準備ができているかどうかを確認するためのヘルスチェックインターフェイスを提供します。これにより、コンシューマーがマイクロサービスシステム内にあるか外にあるかに関係なく、すべてのコンシューマーがアプリケーションの状態を確認できます。この機能は、サービス登録ステータスとサービスプリフェッチステータスの両方のチェックをサポートします。

    Kubernetes のグレースフルローリングデプロイメントは、完全なリリースプロセスを複数のバッチに分割します。一度に 1 つのバッチがリリースされます。すべてのバッチがリリースされると、グレースフルローリングデプロイメントは完了です。EDAS は、Kubernetes アプリケーションのマイクロサービスライフサイクルと Kubernetes サービスライフサイクルを調整します。EDAS は、readiness チェックの前にアプリケーションがレジストリに登録され、プリフェッチされるように、グレースフルスタート機能を提供します。これにより、グレースフルローリングデプロイメント中にアプリケーションの使用可能なインスタンスが実行されていることが保証されます。

    • readiness チェック前の登録: EDAS は、マイクロサービスライフサイクルを Kubernetes readiness チェックに合わせる機能を提供します。この機能を有効にすると、EDAS Agent を使用して、アプリケーションがレジストリに登録されているかどうかを検出するためのポートを提供できます。EDAS はアプリケーションに侵入しません。EDAS がアプリケーションが登録されていることを検出すると、状態コード 200 が返されます。EDAS がアプリケーションが登録されていないことを検出すると、状態コード 500 が返されます。

    • readiness チェック前のプリフェッチ: EDAS では、サービスプリフェッチ機能を Kubernetes readiness チェックに関連付けることができます。このようにして、アプリケーションは、アプリケーションで有効になっているサービスがプリフェッチされた後にのみ準備完了になります。

制限事項

  • Spring Cloud アプリケーションと Dubbo アプリケーションに対してのみ、非侵入型で空のリスト保護機能とグレースフルスタート機能を有効にすることができます。次の表に、サポートされている Spring Cloud と Dubbo のバージョンを示します。

    項目

    空のリスト保護

    グレースフルスタート

    Spring Cloud

    Spring Cloud Edgware 以降

    Spring Cloud Edgware 以降

    Dubbo

    Dubbo 2.5.3 ~ 2.7.8

    説明

    Dubbo 3.0 以降でこれらの機能を使用する場合は、DingTalk グループ (ID: 31723701) に参加してテクニカルサポートを受けてください。

    Dubbo 2.7.3 ~ 2.7.8

    説明

    Dubbo 2.6 または Dubbo 3.0 以降でこれらの機能を使用する場合は、DingTalk グループ (ID: 31723701) に参加してテクニカルサポートを受けてください。

  • Nacos、Eureka、および Zookeeper サービスレジストリがサポートされています。

  • ほとんどの場合、ゲートウェイアプリケーションはレジストリを使用して呼び出されるのではなく、API を公開することによって呼び出されます。したがって、MSE によって提供される低トラフィックプリフェッチ機能は、ゲートウェイアプリケーションには効果がありません。さらに、ゲートウェイアプリケーションには大きな変更や複雑なビジネスロジックはありません。したがって、サービスプリフェッチ機能はゲートウェイアプリケーションには必須ではありません。

  • カナリアモードでリリースされたアプリケーションの場合、最初のバッチに対してサービスプリフェッチ機能を有効にすることはできません。

アプリケーションの作成時にマイクロサービスガバナンスを設定する

  1. EDAS コンソール にログオンします。左側のナビゲーションウィンドウで、[アプリケーション管理] > [アプリケーション] を選択します。[アプリケーション] ページが表示されます。上部のナビゲーションバーで、リージョンを選択します。ページの上部で、名前空間を選択します。左上隅にある [アプリケーションの作成] をクリックします。

  2. [基本情報] ステップで、[クラスタタイプ] パラメーターと [アプリケーション実行環境] パラメーターを設定し、[次へ] をクリックします。次の表に、パラメーターを示します。

    パラメーター

    説明

    クラスタタイプ

    アプリケーションをデプロイするクラスターのタイプ。[kubernetes クラスター] を選択します。

    アプリケーション実行環境

    アプリケーション実行環境。ホストされているアプリケーションのタイプに基づいて、アプリケーション実行環境を選択します。

    • Java

      • カスタム: カスタムイメージを使用して Container Service for Kubernetes (ACK) クラスターにアプリケーションをデプロイする場合に、このオプションを選択します。

      • Java: ユニバーサル JAR パッケージを使用して、アプリケーションを Dubbo アプリケーションまたは Spring Boot アプリケーションとしてデプロイする場合に、このオプションを選択します。このオプションを選択した後、[Java 環境] パラメーターを設定できます。

      • Tomcat: ユニバーサル WAR パッケージを使用して、アプリケーションを Dubbo アプリケーションまたは Spring アプリケーションとしてデプロイする場合に、このオプションを選択します。このオプションを選択した後、[Java 環境] パラメーターと [コンテナーバージョン] パラメーターを設定できます。

      • EDAS-Container (HSF): WAR パッケージまたは FatJar パッケージを使用して、アプリケーションを High-speed Service Framework (HSF) アプリケーションとしてデプロイする場合に、このオプションを選択します。このオプションを選択した後、[Java 環境] パラメーター、[Pandora バージョン] パラメーター、および [Ali-Tomcat バージョン] パラメーターを設定できます。

    • PHP: アプリケーションが Apache HTTP Server で実行される PHP アプリケーションである場合に、このオプションを選択します。

    • Node.js、c++、go、およびその他の言語: カスタムイメージを使用して Kubernetes クラスターにアプリケーションをデプロイする場合に、このオプションを選択します。多言語アプリケーションの構成プロセスについては、このトピックでは説明していません。

    説明
    • [アプリケーションの選択] セクションで EDAS-Container (HSF) を選択した場合、アプリケーションに対してサービス登録と検出機能のみを有効にすることができます。

    • [ホストされているアプリケーション] セクションで PHP または Node.js、c++、go、およびその他の言語 を選択した場合、アプリケーションのマイクロサービスガバナンスを設定することはできません。

  3. [構成] ステップで、アプリケーションの環境情報、基本情報、およびデプロイメントメソッドを設定し、関連するリソースパラメーターを設定して、[次へ] をクリックします。

  4. [詳細設定] ステップで、[マイクロサービスガバナンス] をクリックします。その後、ビジネス要件に基づいて、サービス登録と検出、空のリスト保護、およびグレースフルスタート機能を設定できます。

    パラメーター

    説明

    サービス登録と検出

    サービスレジストリの O&M メソッド。EDAS の共有サービスレジストリ、またはアプリケーション用に構成されたサービスレジストリを選択できます。詳細については、「サービスレジストリの O&M メソッドを選択する」をご参照ください。

    空のリスト保護

    空のリスト保護機能を有効にするかどうかを指定します。

    • 空のリスト保護を有効にすると、コンシューマーによる空のインスタンスリストへのサブスクリプションは無視されます。これにより、高いサービス可用性が確保されます。

    • 空のリスト保護を無効にすると、コンシューマーが空のインスタンスリストをサブスクライブすると、ビジネスが中断され、エラーが返されます。

    グレースフルリリース

    グレースフルスタート機能を有効にするかどうかを指定します。この機能を有効にするには、次のパラメーターを設定します。

    • プリフェッチ期間 (秒): アプリケーションインスタンスの次回起動時にサービスプリフェッチに必要な時間。デフォルト値は 120 です。有効値: 0 ~ 86400。値 86400 は 24 時間に相当します。

    • プリフェッチカーブの数: 構成されたプリフェッチ期間では、プリフェッチされたアプリケーションのトラフィックの重みは、カーブの値とともに指数関数的に増加します。指定されたプリフェッチ期間で、カーブの値が大きい場合、アプリケーションの初期化時にプリフェッチされたアプリケーションのトラフィックの重みは小さくなります。これにより、複雑なアプリケーションにプリフェッチのための十分な時間が確保されます。

      デフォルト値は 2 で、一般的なプリフェッチシナリオに適しています。この値は、プリフェッチ中のプロバイダーの受信トラフィックが二次曲線として表示されることを示します。有効値: 0 ~ 20。同じプリフェッチ期間の場合、このパラメーターの値が大きいほど、サービスプリフェッチの開始時にサービスプロバイダーが受信するトラフィック量が少なくなり、プリフェッチが完了するまで受信トラフィック量が徐々に増加します。

    • 登録遅延 (秒): このパラメーターを 0 ~ 86400 の範囲の値に設定します。値 86400 は 24 時間に相当します。

    • グレースフルローリングリリース: グレースフルローリングデプロイメント機能を有効にするかどうかを指定します。

      • Readiness プロービングの前にサービス登録を完了する: アプリケーションがサービスが登録されているかどうかを確認するためのポート 55199 を提供します。登録されている場合は、状態コード 200 が返されます。それ以外の場合は、状態コード 500 が返されます。

      • Readiness プロービングの前にサービスプリフェッチを完了する: アプリケーションがサービスがプリフェッチされているかどうかを確認するためのポート 55199 を提供します。プリフェッチされている場合は、状態コード 200 が返されます。それ以外の場合は、状態コード 500 が返されます。

        説明

        [readiness プロービングの前にサービス登録を完了する] と [readiness プロービングの前にサービスプリフェッチを完了する] の両方をオンにすると、サービスがプリフェッチされているかどうかを確認するためにポート 55199 が提供されます。

  5. [詳細設定] ステップで、[アプリケーションライフサイクル管理] をクリックします。[readiness] パラメーターオプションを設定し、readiness プローブの構成を有効にするためのスイッチをオンにします。

    serviceLifecycle

    アプリケーションの readiness プローブを構成しない場合、グレースフルローリングデプロイメント機能を有効にした後、[モードの選択] パラメーターでグレースフルローリングデプロイメントモードのオプションを使用できます。グレースフルローリングデプロイメントモードを選択すると、システムは /health パスをアプリケーションのデフォルトパスとして使用し、readiness チェックのためにポート 55199 を提供します。グレースフルローリングデプロイメントモードを使用して、Kubernetes アプリケーションのマイクロサービスライフサイクルと Kubernetes サービスライフサイクルを調整できます。または、ヘルスチェックインターフェイスとともに他のモードを使用して、ビジネス要件に基づいて readiness を確認することもできます。

  6. [アプリケーションの作成] をクリックします。

  7. [作成完了] ページで、[基本情報][構成]、および [詳細設定] セクションの情報を確認します。次に、[アプリケーションの作成] をクリックします。

    [アプリケーションの概要] ページの上部にある [詳細の表示] をクリックします。[変更リスト] ページで、アプリケーションの変更プロセスを表示します。アプリケーションがデプロイされるまで数分待ちます。アプリケーションの変更プロセスが完了したら、[アプリケーションの概要] ページの [基本情報] セクションでインスタンスの状態を確認します。状態にポッドが実行中であると表示されている場合、アプリケーションはデプロイされています。

アプリケーションの更新時にマイクロサービスガバナンスを設定する

アプリケーションの作成時にサービス登録と検出、空のリスト保護、およびグレースフルスタート機能を有効にしなかった場合は、アプリケーションのデプロイ時に有効にすることができます。

  1. EDAS コンソール にログオンします。

  2. 左側のナビゲーションウィンドウで、[アプリケーション管理] > [アプリケーション] をクリックします。上部のナビゲーションバーで、リージョンを選択します。ページの上部で、名前空間を選択します。[コンテナーサービスまたはサーバーレス Kubernetes クラスター][クラスタタイプ] ドロップダウンリストから選択します。次に、デプロイするアプリケーションを見つけて、アプリケーション名をクリックします。

  3. [概要] ページまたは [基本情報] ページで、右上隅にある [デプロイ] > [デプロイ] を選択します。

  4. [デプロイメントモードの選択] ページで、デプロイメントモードを選択し、指定されたデプロイメントモードセクションの右上隅にある [デプロイメントの開始] をクリックします。

  5. アプリケーションの実行環境とデプロイメントパッケージを設定し、[構成管理] をクリックします。構成が完了したら、[OK] をクリックします。

    1. [マイクロサービスガバナンス] を展開し、ビジネス要件に基づいて、サービス登録と検出、空のリスト保護、およびグレースフルスタート機能を設定します。

      パラメーター

      説明

      サービス登録と検出

      サービスレジストリの O&M メソッド。EDAS の共有サービスレジストリ、またはアプリケーション用に構成されたサービスレジストリを選択できます。詳細については、「サービスレジストリの O&M メソッドを選択する」をご参照ください。

      空のリスト保護

      空のリスト保護機能を有効にするかどうかを指定します。

      • 空のリスト保護を有効にすると、コンシューマーによる空のインスタンスリストへのサブスクリプションは無視されます。これにより、高いサービス可用性が確保されます。

      • 空のリスト保護を無効にすると、コンシューマーが空のインスタンスリストをサブスクライブすると、ビジネスが中断され、エラーが返されます。

      グレースフルリリース

      グレースフルスタート機能を有効にするかどうかを指定します。この機能を有効にするには、次のパラメーターを設定します。

      • プリフェッチ期間 (秒): アプリケーションインスタンスの次回起動時にサービスプリフェッチに必要な時間。デフォルト値は 120 です。有効値: 0 ~ 86400。値 86400 は 24 時間に相当します。

      • プリフェッチカーブの数: 構成されたプリフェッチ期間では、プリフェッチされたアプリケーションのトラフィックの重みは、カーブの値とともに指数関数的に増加します。指定されたプリフェッチ期間で、カーブの値が大きい場合、アプリケーションの初期化時にプリフェッチされたアプリケーションのトラフィックの重みは小さくなります。これにより、複雑なアプリケーションにプリフェッチのための十分な時間が確保されます。

        デフォルト値は 2 で、一般的なプリフェッチシナリオに適しています。この値は、プリフェッチ中のプロバイダーの受信トラフィックが二次曲線として表示されることを示します。有効値: 0 ~ 20。同じプリフェッチ期間の場合、このパラメーターの値が大きいほど、サービスプリフェッチの開始時にサービスプロバイダーが受信するトラフィック量が少なくなり、プリフェッチが完了するまで受信トラフィック量が徐々に増加します。

      • 登録遅延 (秒): このパラメーターを 0 ~ 86400 の範囲の値に設定します。値 86400 は 24 時間に相当します。

      • グレースフルローリングリリース: グレースフルローリングデプロイメント機能を有効にするかどうかを指定します。

        • Readiness プロービングの前にサービス登録を完了する: アプリケーションがサービスが登録されているかどうかを確認するためのポート 55199 を提供します。登録されている場合は、状態コード 200 が返されます。それ以外の場合は、状態コード 500 が返されます。

        • Readiness プロービングの前にサービスプリフェッチを完了する: アプリケーションがサービスがプリフェッチされているかどうかを確認するためのポート 55199 を提供します。プリフェッチされている場合は、状態コード 200 が返されます。それ以外の場合は、状態コード 500 が返されます。

          説明

          [readiness プロービングの前にサービス登録を完了する] と [readiness プロービングの前にサービスプリフェッチを完了する] の両方をオンにすると、サービスがプリフェッチされているかどうかを確認するためにポート 55199 が提供されます。

    2. [調整とダウングレードの構成] を展開し、[AHAS へのアクセス] をオンにします。

    重要

    [OK] をクリックすると、アプリケーションが再起動されます。これらの機能は、オフピーク時に構成することをお勧めします。

結果を確認する

アプリケーション詳細ページの左側のナビゲーションウィンドウで、[変更リスト] をクリックして、アプリケーションの変更の詳細を表示します。現在の変更の実行が成功した場合、アプリケーションはデプロイされ、構成が有効になります。