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

Microservices Engine:Dubbo マイクロサービスアプリケーション用に MSE でサービスレジストリを作成する

最終更新日:Mar 14, 2025

このトピックでは、Dubbo マイクロサービスアプリケーション用にマイクロサービスエンジン(MSE)でサービスレジストリを作成する方法について説明します。 Dubbo マイクロサービスアプリケーションは、プロバイダーとコンシューマーとして機能します。 サービスレジストリは、ZooKeeper、Eureka、または Nacos エンジンを使用し、アプリケーションのサービス登録とディスカバリをサポートし、コンシューマーがプロバイダーを呼び出すことを可能にします。

前提条件

サービスレジストリを作成する前に、以下の操作が実行されていることを確認してください。

  • Maven がダウンロードされ、環境変数が設定されている。

  • Nacos エンジンが作成されている。 詳細については、「Nacos エンジンの作成」をご参照ください。

  • 名前空間が作成されている。 詳細については、「名前空間を作成する」をご参照ください。 このトピックでは、デフォルトの名前空間 Public が使用されます。

プロバイダーを作成する

オンプレミス環境でプロバイダーアプリケーションプロジェクトを作成し、依存関係を追加し、サービスの登録とディスカバリを設定し、Nacos をサービスレジストリとして指定します。

  1. Maven プロジェクトを作成し、依存関係を追加します。

    1. IntelliJ IDEA や Eclipse などの統合開発環境(IDE)で Maven プロジェクトを作成します。

    2. [pom.xml] ファイルに dubbo と nacos-client の依存関係を追加します。

      <dependencies>
          <dependency>
              <groupId>org.apache.dubbo</groupId>
              <artifactId>dubbo</artifactId>
              <version>2.7.9</version>
          </dependency>
          <dependency>
              <groupId>com.alibaba.nacos</groupId>
              <artifactId>nacos-client</artifactId>
              <version>1.4.2</version>
          </dependency>
      </dependencies>            
  2. Dubbo サービスプロバイダーを開発します。

    すべての Dubbo サービスはインターフェースとして公開されます。

    1. src/main/java ディレクトリに [com.alibaba.mse] という名前の package を作成します。

    2. com.alibaba.mse パッケージに、[sayhello] メソッドを含む [ihelloservice] という名前のインターフェースを作成します。

      package com.alibaba.mse;
      
      public interface IHelloService {
         String sayHello(String str);
      }                                
    3. インターフェースを実装するために、com.alibaba.mse パッケージに [ihelloserviceimpl] という名前のクラスを作成します。

      package com.alibaba.mse;
      
      public class IHelloServiceImpl implements IHelloService {
      public String sayHello(String str) {
          return "hello " + str;
          }
      }                          
  3. Dubbo サービスを設定します。

    1. src/main/resources ディレクトリに [provider.xml] という名前のファイルを作成し、ファイルを開きます。

    2. provider.xml ファイルに、Spring フレームワークの XML 名前空間(xmlns)と XML スキーマインスタンス(xmlns:xsi)を追加し、Dubbo フレームワークの XML 名前空間(xmlns:dubbo)と XML スキーマインスタンス(xsi:schemaLocation)を追加します。

      <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
      xmlns="http://www.springframework.org/schema/beans"
      xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
      http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd">                   
    3. [provider.xml] ファイルで、インターフェースとクラスを Dubbo サービスとして公開します。

      <dubbo:application name="demo-provider"/>
      
      <dubbo:protocol name="dubbo" port="28082"/>
      
      <dubbo:service interface="com.alibaba.mse.IHelloService" ref="helloService"/>
      
      <bean id="helloService" class="com.alibaba.mse.IHelloServiceImpl"/>                                
    4. [provider.xml] ファイルで、オンプレミスの Nacos サーバーをサービスレジストリとして指定します。

      <dubbo:registry address="nacos://mse.XX.nacos.mse.aliyuncs.com:8848" />                                
      説明

      Nacos インスタンスのパブリックエンドポイントを使用する場合は、空のホワイトリストを設定します。 詳細については、「パブリック IP アドレスのホワイトリストの構成」をご参照ください。

      インスタンスリストで Nacos インスタンスを見つけ、[アクセス方法] 列で Nacos インスタンスのパブリックエンドポイントを表示します。 パブリックエンドポイントは mse.XX.nacos.mse.aliyuncs.com 形式です。

      説明

      サービスレジストリが MSE Zookeeper インスタンスの場合は、この手順のサービスレジストリのコードを ZooKeeper インスタンスのコードに置き換える必要があります。 詳細については、「使用上の注意」をご参照ください。

  4. サービスを開始します。

    1. com.alibaba.mse パッケージに [provider] という名前のクラスを作成し、次のコードに基づいて Provider クラスの main 関数に Spring コンテキストを読み込み、Dubbo サービスを公開します。

      package com.alibaba.mse;
      
      import org.springframework.context.support.ClassPathXmlApplicationContext;
      
      public class Provider {
          public static void main(String[] args) throws Exception {
              ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"provider.xml"});
              context.start();
              System.in.read();
          }
      }                
    2. Provider クラスの main 関数を呼び出して、Dubbo サービスを開始します。

  5. 結果を確認します。

    1. MSE コンソール にログインします。

    2. 左側のナビゲーションペインで、[マイクロサービスレジストリ] > [インスタンス] を選択します。 [インスタンス] ページで、作成した MSE インスタンスをクリックします。

    3. MSE インスタンスのホワイトリストを設定します。

      ホワイトリストに IP アドレスまたは CIDR ブロックを追加しない場合、すべての IP アドレスが MSE インスタンスにアクセスできます。

    4. インスタンス詳細ページの左側のナビゲーションペインで、[サービス管理] > [サービス] を選択します。 サービスリストにプロバイダーサービスが存在する場合、サービスは MSE インスタンスに登録されています。

コンシューマーを作成する

オンプレミス環境で Spring Boot コンシューマーアプリケーションプロジェクトを作成し、依存関係を追加し、Dubbo サービスの購読に使用する設定を追加します。

spring-boot-dubbo-consumer という名前の Maven プロジェクトを作成し、依存関係を追加します。

  1. IntelliJ IDEA や Eclipse などの IDE で Maven プロジェクトを作成します。

  2. pom.xml ファイルに dubbonacos-client の依存関係を追加します。

    <dependencies>
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo</artifactId>
            <version>2.7.9</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba.nacos</groupId>
            <artifactId>nacos-client</artifactId>
            <version>1.4.2</version>
        </dependency>
    </dependencies>
  3. Dubbo コンシューマーを作成します。

    1. src/main/java ディレクトリに com.alibaba.mse という名前の package を作成します。

    2. com.alibaba.mse パッケージに、SayHello メソッドを含む IHelloService という名前のインターフェースを作成します。

      package com.alibaba.mse;
      
      public interface IHelloService {
          String sayHello(String str);
      }
      
  4. 次のコードを使用して、コントローラーでリモート Dubbo サービスを呼び出します。

    package com.alibaba.mse;
    
    import com.alibaba.dubbo.config.annotation.Reference;
    import org.springframework.web.bind.annotation.PathVariable;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    @RestController
    public class DemoConsumerController {
        @Reference
        private IHelloService demoService;
    
        @RequestMapping("/sayHello/{name}")
        public String sayHello(@PathVariable String name) {
            return demoService.sayHello(name);
        }
    }
    
    説明

    Reference アノテーションは com.alibaba.dubbo.config.annotation.Reference です。

  5. application.properties 設定ファイルに次の設定を追加します。

    server.port=8080
    dubbo.application.name=dubbo-consumer-demo
    dubbo.registry.address=nacos://mse.XX.nacos.mse.aliyuncs.com:8848
    説明

    dubbo.registry.address の値は nacos:// で始まる必要があります。 nacos:// に続く IP アドレスとポート番号は、MSE Nacos サーバーのエンドポイントを表します。

  6. Spring Boot エントリクラス SpringBootDubboConsumerApplication を作成して起動します。

    package com.alibaba.mse;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    
    @SpringBootApplication
    public class SpringBootDubboConsumerApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(SpringBootDubboConsumerApplication.class, args);
        }
    } 
  1. 結果を確認します。

    1. MSE コンソール にログインします。

    2. 左側のナビゲーションペインで、[マイクロサービスレジストリ] > [インスタンス] を選択します。 [インスタンス] ページで、作成した MSE インスタンスをクリックします。

    3. MSE インスタンスのホワイトリストを設定します。

      ホワイトリストに IP アドレスまたは CIDR ブロックを追加しない場合、すべての IP アドレスが MSE インスタンスにアクセスできます。

    4. インスタンス詳細ページの左側のナビゲーションペインで、[サービス管理] > [サービス] を選択します。 サービスリストにコンシューマーサービスが存在する場合、サービス登録は成功です。

結果を確認する

curl http://localhost:8080/sayHello/mse コマンドを実行します。 Hello, mse が返された場合、コンシューマーはプロバイダーを正常に呼び出しています。

`curl http://localhost:8080/sayHello/mse`

`Hello, mse`            

参考資料