Todos los productos
Search
Centro de documentos

Microservices Engine:Creación de un registro de servicios para aplicaciones Dubbo en MSE

Última actualización: Sep 05, 2026

En este tutorial, creará un registro de servicios en Microservices Engine (MSE) para una aplicación Apache Dubbo y lo utilizará para el registro y descubrimiento de servicios. Al finalizar, un consumidor Dubbo que se ejecuta en su computadora local llamará a un proveedor descubierto a través de un registro Nacos de MSE.

Arquitectura

La aplicación de ejemplo es una aplicación de microservices Dubbo compuesta por un proveedor y un consumidor. Desarrollará ambos roles como dos proyectos Maven independientes en su computadora local, y ambos se conectarán a la misma instancia de registro en MSE mediante su endpoint público.

  • Proyecto del proveedor: expone la interfaz com.alibaba.mse.IHelloService como un servicio Dubbo en el puerto 28082 y registra el servicio en la instancia de registro de MSE.

  • Proyecto del consumidor: se suscribe a com.alibaba.mse.IHelloService mediante la misma instancia de registro y llama al proveedor.

  • Instancia de registro en MSE: funciona como el registro de servicios donde se registra el proveedor y al que se suscribe el consumidor.

Tipos de registro

MSE puede alojar un registro de servicios Nacos, ZooKeeper o Eureka para una aplicación Dubbo. Este tutorial utiliza MSE Nacos, y todos los ejemplos de configuración de este tema están orientados a una instancia de MSE Nacos.

  • Nacos (utilizado en este tutorial): establezca la dirección del registro Dubbo en el endpoint público de su instancia de MSE Nacos. No se requiere ninguna otra configuración específica del registro.

  • ZooKeeper: si utiliza MSE ZooKeeper como registro de servicios, reemplace el código de registro del Paso 2 con el código correspondiente para ZooKeeper. Para obtener más información, consulte Usage notes.

Requisitos previos

  • Descargue Maven y configure las variables de entorno.

  • Tener instalado un IDE, como IntelliJ IDEA o Eclipse, en su computadora local.

  • Una instancia de MSE Nacos. Para consultar las instrucciones, véase Create a Nacos engine instance

  • Create a namespace. Este tutorial utiliza el namespace predeterminado, Public.

Paso 1: Crear el proyecto del proveedor y definir el servicio

En este paso, creará el proyecto Maven para el proveedor y definirá el servicio que expone. En Dubbo, todos los servicios se proporcionan como interfaces.

  1. En su IDE, cree un proyecto Maven para el proveedor.

  2. Agregue las dependencias dubbo y nacos-client al archivo pom.xml.

    <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. En el directorio src/main/java, cree un paquete llamado com.alibaba.mse.

  4. En com.alibaba.mse, cree una interfaz llamada IHelloService que contenga un método sayHello.

    package com.alibaba.mse;
    
    public interface IHelloService {
        String sayHello(String str);
    }
  5. En com.alibaba.mse, cree una clase llamada IHelloServiceImpl que implemente la interfaz.

    package com.alibaba.mse;
    
    public class IHelloServiceImpl implements IHelloService {
        public String sayHello(String str) {
            return "hello " + str;
        }
    }

Paso 2: Configurar el proveedor para usar MSE Nacos como registro

En este paso, creará el archivo provider.xml, el cual expone IHelloService como un servicio Dubbo y dirige al proveedor hacia la instancia de MSE Nacos. Obtenga primero el endpoint de la instancia, ya que es necesario para la configuración del registro.

  1. Inicie sesión en la consola de MSE y consulte el endpoint público de la instancia Nacos que creó en MSE. El endpoint público se muestra en la columna Access Method de la lista de instancias y tiene el formato mse.XX.nacos.mse.aliyuncs.com.

  2. En el directorio src/main/resources del proyecto del proveedor, cree un archivo llamado provider.xml.

  3. Agregue la siguiente configuración a provider.xml. Reemplace mse.XX.nacos.mse.aliyuncs.com con el endpoint público de su instancia Nacos.

    <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">
    
        <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"/>
    
        <dubbo:registry address="nacos://mse.XX.nacos.mse.aliyuncs.com:8848" />
    </beans>

La siguiente tabla describe la configuración en provider.xml.

Elemento

Descripción

xmlns, xmlns:xsi, xmlns:dubbo y xsi:schemaLocation

Declara el Namespace XML de Spring (xmlns) y la instancia de esquema XML (xmlns:xsi), así como el Namespace de Dubbo (xmlns:dubbo) y la instancia de esquema (xsi:schemaLocation).

dubbo:application

Nombre de la aplicación proveedora. Este ejemplo utiliza demo-provider.

dubbo:protocol

Publica el servicio mediante el protocolo dubbo en el puerto 28082.

dubbo:service y bean

Exponen la interfaz IHelloService y la clase de implementación IHelloServiceImpl como un servicio Dubbo.

dubbo:registry

Especifica la instancia Nacos creada en MSE como registro de servicios. La dirección corresponde al endpoint público de la instancia.

Paso 3: Permitir que el proveedor acceda a la instancia de MSE

El proveedor se conecta al registro mediante el endpoint público de la instancia de MSE, por lo que la lista de permitidos de la instancia debe autorizar el tráfico. Complete este paso antes de iniciar el proveedor; de lo contrario, el registro fallará.

  1. En la consola de MSE, en el panel de navegación izquierdo, elija Microservices Registry > Instances. En la página Instances, haga clic en la instancia de MSE que creó.

  2. Borre la lista de permitidos de la instancia. Si no especifica ninguna dirección IP o máscara, todas las direcciones podrán acceder a la instancia. Este tutorial utiliza una lista de permitidos vacía como ejemplo. Para obtener más información, consulte Set a whitelist.

Aviso

Una lista de permitidos vacía permite que todas las direcciones accedan a la instancia de MSE.

Paso 4: Iniciar el proveedor y verificar el registro

En este paso, iniciará el proveedor y confirmará en la consola de MSE que el servicio está registrado en la instancia Nacos.

  1. En com.alibaba.mse, cree una clase llamada Provider. Utilice el siguiente código para cargar el contexto de Spring en el método main de Provider y exponer el servicio Dubbo que configuró.

    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. Ejecute el método main de Provider para iniciar el servicio. Mantenga el proceso en ejecución hasta que termine el tutorial, ya que el consumidor llamará a este proceso.

  3. En la consola de MSE, en la página de detalles de su instancia de MSE, elija Service Management > Services en el panel de navegación izquierdo.

  4. Compruebe que la lista de servicios contiene com.alibaba.mse.IHelloService, la interfaz que expone la aplicación demo-provider.

No continúe con el siguiente paso hasta que la interfaz aparezca en la lista de servicios. Si la interfaz no aparece, revise las siguientes configuraciones:

  • Lista de permitidos: la lista de permitidos de la instancia de MSE autoriza la dirección de su computadora local. Una lista vacía permite todas las direcciones.

  • Dirección del registro: la dirección dubbo:registry en provider.xml utiliza el endpoint público de su instancia, no el marcador de posición mse.XX.nacos.mse.aliyuncs.com.

  • Tipo de registro: la dirección dubbo:registry utiliza el esquema del tipo de instancia que creó, como nacos:// para una instancia de MSE Nacos.

Paso 5: Crear el consumidor y suscribirse al servicio

En este paso, creará un segundo proyecto Maven para el consumidor, se suscribirá a com.alibaba.mse.IHelloService mediante la misma instancia de MSE Nacos e implementará la clase que llama al proveedor.

  1. En su IDE, cree un segundo proyecto Maven para el consumidor.

  2. Agregue las dependencias dubbo y nacos-client al archivo pom.xml del proyecto del consumidor. Las dependencias son idénticas a las del proyecto del proveedor en el Paso 1.

  3. En el directorio src/main/java, cree el paquete com.alibaba.mse y agregue la interfaz IHelloService que definió en el Paso 1. El consumidor referencia el servicio por su interfaz, por lo que esta debe estar en el classpath del proyecto del consumidor.

  4. En el directorio src/main/resources del proyecto del consumidor, cree un archivo llamado consumer.xml. Reemplace mse.XX.nacos.mse.aliyuncs.com con el endpoint público de su instancia Nacos, que es el mismo endpoint que configuró en provider.xml.

    <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">
    
        <dubbo:application name="demo-consumer"/>
    
        <dubbo:registry address="nacos://mse.XX.nacos.mse.aliyuncs.com:8848" />
    
        <dubbo:reference id="helloService" interface="com.alibaba.mse.IHelloService"/>
    </beans>

    El elemento dubbo:registry dirige al consumidor al mismo registro que el proveedor, y el elemento dubbo:reference se suscribe a la interfaz com.alibaba.mse.IHelloService que expone el proveedor.

  5. En com.alibaba.mse, cree una clase llamada Consumer. Utilice el siguiente código para cargar el contexto de Spring en el método main de Consumer y llamar al método sayHello del servicio suscrito.

    package com.alibaba.mse;
    
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    public class Consumer {
        public static void main(String[] args) throws Exception {
            ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"consumer.xml"});
            context.start();
            IHelloService helloService = (IHelloService) context.getBean("helloService");
            System.out.println(helloService.sayHello("mse"));
        }
    }

Paso 6: Verificar la llamada del consumidor al proveedor

En este paso, confirmará que el consumidor descubre al proveedor mediante el registro de MSE Nacos y recibe la respuesta del método sayHello. El consumidor pasa mse como argumento, y IHelloServiceImpl devuelve hello seguido de dicho argumento.

  1. Confirme que el proceso del proveedor que inició en el Paso 4 sigue en ejecución.

  2. Ejecute el método main de Consumer.

  3. Revise la salida de consola del proyecto del consumidor. La siguiente salida indica que el consumidor llamó correctamente al proveedor:

    hello mse

Si la llamada falla o no se devuelve ninguna salida, revise las siguientes configuraciones:

  • Disponibilidad del proveedor: el proceso del proveedor se está ejecutando y com.alibaba.mse.IHelloService aparece en la lista de servicios de la instancia de MSE.

  • Dirección del registro: la dirección dubbo:registry en consumer.xml es el endpoint público que configuró en provider.xml.

  • Nombre de la interfaz: la interfaz en el elemento dubbo:reference de consumer.xml coincide con com.alibaba.mse.IHelloService, que es la interfaz definida en el elemento dubbo:service de provider.xml.

  • Lista de permitidos: la lista de permitidos de la instancia de MSE autoriza la dirección de su computadora local.