Este tema describe cómo migrar de forma fluida las aplicaciones Dubbo en Alibaba Cloud a Enterprise Distributed Application Service (EDAS), así como registrar y descubrir servicios. Si sus aplicaciones Dubbo no están desplegadas en Alibaba Cloud, envíe un ticket o póngase en contacto con el soporte técnico de EDAS para obtener una solución completa de migración a EDAS.
Beneficios de la migración a EDAS
EDAS ofrece funciones para el despliegue de aplicaciones, como la configuración flexible de parámetros de inicio, visualización de procesos, conexión y desconexión graceful de servicios, y versión por fases. Esto le permite configurar, consultar y controlar los procesos de publicación de aplicaciones.
EDAS proporciona las funciones de descubrimiento de servicios y gestión de configuración en su versión comercial. Esto le evita tener que mantener el middleware, como Eureka, ZooKeeper o Consul.
La consola de EDAS admite la gobernanza centralizada de servicios. Esto le permite consultar los detalles de los servicios publicados y consumidos.
EDAS ofrece escalado automático. Esto le permite escalar horizontalmente sus aplicaciones de forma dinámica según los picos y valles de tráfico.
Además de la consulta de información de instancias, EDAS también proporciona funciones avanzadas de monitoreo, como la consulta de trazas de microservices, la topología de llamadas del sistema y la consulta de SQL lentas.
EDAS incluye funciones de limitación de tasa y degradación para garantizar la alta disponibilidad de sus aplicaciones.
EDAS ofrece la función de versión por fases de extremo a extremo para validaciones a pequeña escala cuando itera y actualiza sus aplicaciones.
Migración fluida
Si sus aplicaciones Dubbo están desplegadas en el entorno de producción y funcionan correctamente, puede realizar una migración fluida para trasladarlas a EDAS y utilizar todas sus funciones. La migración fluida garantiza la continuidad del servicio.
Si sus aplicaciones Dubbo no están desplegadas en el entorno de producción o si es aceptable una migración con tiempo de inactividad, puede desplegar la aplicación directamente en EDAS después de desarrollarla en su entorno local. Para obtener más información, consulte Get started with EDAS.
Descripción general de la migración
La migración consta de tres fases:
La siguiente figura muestra una arquitectura de aplicación típica. El proceso de migración se divide en tres pasos.

Migrar aplicaciones (obligatorio): Las aplicaciones sin estado se migran primero, una por una.
Migrar la instancia de Server Load Balancer (SLB) o actualizar el DNS (opcional): Dirija el tráfico hacia el nuevo despliegue.
Migrar almacenamiento y colas de mensajes (opcional): Solo es necesario si sus aplicaciones aún no utilizan servicios de Alibaba Cloud como ApsaraDB RDS y Message Queue.
Esta guía se centra en la fase 1.
Métodos de migración
Puede migrar aplicaciones mediante el cambio de registro o el registro dual y suscripción dual. Ambos métodos le permiten migrar aplicaciones sin interrumpir el servicio.
-
Cambio de registro
Utilice Dubbo para cambiar el registro de servicios original a EDAS Config Server, desarrolle un nuevo conjunto de aplicaciones y luego despliéguelas en EDAS. Posteriormente, use Server Load Balancer (SLB) y configure nombres de dominio para redirigir el tráfico.
Si utiliza el método de cambio de registro, puede omitir el resto del contenido de este tema. Puede usar Spring Boot para desarrollar aplicaciones de microservices Dubbo. Para obtener más información, consulte Use Spring Boot to develop a Dubbo microservices application.
-
Registro dual y suscripción dual
Acceda al registro de servicios original y al registro de servicios de EDAS mientras se migran las aplicaciones para habilitar llamadas mutuas entre las aplicaciones migradas y las no migradas.
La arquitectura para la migración fluida de aplicaciones mediante registro dual y suscripción dual es la siguiente:

Las aplicaciones migradas y las no migradas pueden descubrirse y llamarse entre sí. Esto garantiza la continuidad del servicio.
Solo necesita agregar dependencias y modificar una línea de código para implementar el registro dual y la suscripción dual.
Puede ver los detalles de las llamadas a servicios consumidores y consultar el progreso de la migración en tiempo real.
Puede modificar dinámicamente las directivas de registro y suscripción de servicios sin necesidad de reiniciar repetidamente las aplicaciones. Solo es necesario reiniciar las aplicaciones una vez durante el proceso de migración.
Migrar la primera aplicación
-
Seleccione la primera aplicación para migrar.
Se recomienda comenzar la migración desde el proveedor subyacente. Puede seleccionar aleatoriamente una aplicación para migrar si la traza es compleja y difícil de analizar. Migre la aplicación seleccionada siguiendo los pasos posteriores.
-
Agregue dependencias a la aplicación y modifique sus configuraciones. Debe modificar las configuraciones de la aplicación si utiliza el método de registro dual y suscripción dual.
Agregue dependencias a la aplicación y modifique sus configuraciones antes de migrar la aplicación a EDAS.
-
Agregue la dependencia
edas-dubbo-migration-bomal archivopom.xml.<dependency> <groupId>com.alibaba.edas</groupId> <artifactId>edas-dubbo-migration-bom</artifactId> <version>2.6.5.1</version> <type>pom</type> </dependency> -
Agregue la dirección del registro a
application.properties.dubbo.registry.address = edas-migration://30.5.124.15:9999?service-registry=edas://127.0.0.1:8080,zookeeper://172.31.20.219:2181&reference-registry=zookeeper://172.31.20.219:2181&config-address=127.0.0.1:8848NotaSi la aplicación no es una aplicación Spring Boot, configure la aplicación en dubbo.properties o en el perfil de Spring.
-
edas-migration://30.5.124.15:9999El encabezado de la dirección del registro. No necesita modificar el encabezado si la aplicación está registrada en varios registros de servicios. Si el nivel de registro es WARN o inferior, se puede generar un registro WARN durante el inicio porque Dubbo verifica la dirección IP y el puerto. Este registro se puede ignorar.
-
service-registryLa dirección del registro de servicios donde se registra la aplicación. De forma predeterminada, la aplicación se registra en múltiples registros de servicios. Por lo tanto, se escriben varias direcciones de registro. Cada dirección de registro tiene el formato estándar de una dirección de registro Dubbo. Separe las múltiples direcciones de registro con comas (
,). Introduzca la dirección y el puerto reales de ZooKeeper para la instancia marcada con la dirección de ZooKeeper 172.31.20.219. ` -
reference-registryLa dirección del registro para la suscripción de servicios. Puede registrar la aplicación en múltiples registros de servicios o primero en el registro de servicios original. Cada dirección de registro tiene el formato estándar de una dirección de registro Dubbo. Separe las múltiples direcciones de registro con comas (
,). -
config-addressLa dirección de推送 dinámico. Para implementar el推送 dinámico en su entorno local, descargue Nacos. EDAS convierte esta dirección.
-
-
Complete otras modificaciones.
Si la aplicación Spring no está desarrollada en Spring Boot, agregue
com.alibaba.edas.dubbo.migration.controller.EdasDubboRegistryResta la ruta de escaneo.
-
-
Verifique el resultado en su entorno local.
Utilice la configuración dinámica para una modificación única.
-
Realice los preparativos.
-
Compruebe si el servicio está registrado.
Inicie sesión en el centro de configuración ligero para ver el servicio en la lista de proveedores de servicios.
Inicie sesión en ZooKeeper para ver la información sobre el registro y consumo de servicios.
-
(Opcional) Inicie sesión en Nacos para configurar la información de registro del servicio.
NotaOmita este paso si no se requiere configuración dinámica.
DataId: Establezca este parámetro en
dubbo.registry.config.Group: Establezca este parámetro con el nombre de la aplicación Dubbo especificado en applicationName, como dubbo-migration-demo-server. El nombre de la aplicación debe ser único porque la información de registro del servicio se configura a nivel de aplicación.
-
Configuration Content: El contenido de la configuración puede estar a nivel de aplicación o a nivel de dirección IP de instancia. Si se utilizan múltiples controladores de interfaz de red (NIC), puede producirse un error a nivel de dirección IP de instancia.
-
Nivel de aplicación
dubbo.reference.registry=edas://127.0.0.1:8080 ## The service registry with which the service is registered dubbo.service.registry=edas://127.0.0.1:8080,zookeeper:127.0.0.1:2181 ## The service registry for service subscription -
Nivel de dirección IP de instancia
169.254.15.86.dubbo.reference.registry=edas://127.0.0.1:8080,zookeeper:127.0.0.1:2181 169.254.15.86.dubbo.service.registry=edas://127.0.0.1:8080
Al validar un clúster, puede comprobar si las configuraciones a nivel de dirección IP de instancia y las de nivel de aplicación surten efecto secuencialmente.
-
-
Compruebe si la llamada a la aplicación es normal y verifique la relación de registro y suscripción del registro.
Spring Boot 1.x: http://ip:port/dubboRegistry
Spring Boot 2.x: http://ip:port/actuator/dubboRegistry

-
-
Despliegue la aplicación modificada en EDAS.
Puede desplegar la aplicación en un clúster de Elastic Compute Service (ECS) o en un clúster de Container Service for Kubernetes (ACK) según sus necesidades comerciales. Puede usar la consola de EDAS o la herramienta relacionada para desplegar la aplicación. Para obtener más información, consulte Overview of Application Hosting (K8s) y Overview of Application Hosting (ECS).
-
Se recomienda reutilizar una instancia ECS existente importándola a EDAS. Esto reduce costos. Para obtener más información, consulte Create an ECS cluster in the EDAS console.
ImportanteSi se le solicita realizar una conversión al importar la instancia ECS, haga una copia de seguridad de los datos importantes antes de continuar con la operación.
Si no reutiliza una instancia ECS existente, debe crear recursos como una instancia ECS y un clúster en la virtual private cloud (VPC) existente. Esto conecta la red entre las aplicaciones antes y después de la migración para que las aplicaciones puedan migrarse. Para obtener más información, consulte Overview.
Configure una lista de permitidos de direcciones IP para la nueva instancia ECS en productos como bases de datos, cachés y colas de mensajes. Esto asegura que la instancia ECS pueda acceder a estos componentes de terceros correctamente.
-
-
Verifique el resultado.
Compruebe si su servicio funciona correctamente.
-
Consulte los datos de monitoreo de la suscripción de servicios.
Si Spring Boot Actuator está habilitado para la aplicación, puede acceder a Actuator para ver la información sobre RibbonServerList de cada servicio suscrito por la aplicación. Puede acceder a Actuator mediante las siguientes URL:
Spring Boot 1.x: http://ip:port/dubboRegistry
Spring Boot 2.x: http://ip:port/actuator/dubboRegistry

dubbo.orig.**: la información del registro de servicios configurada en la aplicación.dubbo.effective.**: la información del registro de servicios que surte efecto en la aplicación.
Migrar el resto de las aplicaciones
Migre las demás aplicaciones a EDAS repitiendo el procedimiento utilizado para migrar la primera aplicación.
Eliminar configuraciones de migración
Una vez completada la migración, elimine las configuraciones originales del registro de servicios y la dependencia edas-dubbo-migration-bom utilizada durante la migración.
Modifique la dirección del registro eliminando las configuraciones de ZooKeeper. Esto garantiza que los consumidores se suscriban únicamente desde EDAS y que los proveedores ofrezcan suscripciones solo en EDAS. Puede modificar la dirección del registro mediante los siguientes métodos:
-
Método 1: configuración dinámica
Para obtener más información, consulte Verify the result in your on-premises environment.
-
Método 2: modificación manual
Cambie la dirección del registro a la dirección de EDAS ConfigServer después de modificar todas las aplicaciones.
dubbo.registry.address = edas-migration://30.5.XXX.XXX:9999?service-registry=edas://127.0.0.1:8080,zookeeper://172.31.20.219:2181&reference-registry=edas://127.0.0.1:8080&config-address=127.0.0.1:8848Cambie el valor de
reference-registrydezookeeper://172.31.20.219:2181aedas://127.0.0.1:8080. Luego, despliegue las aplicaciones.NotaSi ya no requiere
ZooKeeper, eliminezookeeper://172.31.20.219:2181de las configuraciones del registro de servicios después de la migración.dubbo.registry.address = edas://127.0.0.1:8080
A largo plazo, ZooKeeper no afecta la estabilidad del servicio, pero sí aumenta la complejidad y la tasa de errores al usar registros de servicios en Dubbo. Se recomienda eliminar las configuraciones de ZooKeeper después de la migración y reiniciar las aplicaciones por lotes durante las horas de menor actividad.