Todos los productos
Search
Centro de documentos

Serverless App Engine:Migración fluida de aplicaciones Spring Cloud a SAE

Última actualización: Sep 05, 2026

Migre un clúster de Spring Cloud que se ejecuta en Alibaba Cloud a Serverless App Engine (SAE) sin interrumpir el tráfico en producción. Este tema aborda el enfoque de registro dual y suscripción dual, donde las aplicaciones migradas y no migradas coexisten en la misma malla de servicios hasta completar la transición. Las aplicaciones se reinician solo una vez durante todo el proceso.

Hay una demostración funcional disponible en sc-migration-examples.zip.

Antes de empezar

Revise la siguiente lista de comprobación antes de iniciar la migración. Identificar los bloqueos a tiempo evita migraciones incompletas que requieran reversión.

Comprobación

Acción si no se cumple

Todas las aplicaciones usan detección de servicios de Spring Cloud (Eureka o Consul)

Las aplicaciones que omiten la detección de servicios y llaman directamente por IP o nombre de host no pueden usar este enfoque. Actualice esos clientes antes de migrar.

Los puertos de las instancias ECS están disponibles (no ocupados por otro proceso)

Si los puertos están ocupados, utilice traffic-splitting solution en su lugar.

Las aplicaciones son sin estado

Las aplicaciones con estado requieren planificación adicional para la migración del estado.

Se utilizan servicios de Alibaba Cloud (ApsaraDB RDS, Message Queue) para almacenamiento y mensajería

El almacenamiento y la mensajería fuera de Alibaba Cloud requieren coordinación por separado. Únase al grupo 32874633 de DingTalk para obtener asistencia.

Descripción general de la migración

Migration process

La migración consta de tres fases:

Fase

Pasos

Obligatorio

Migración

Paso 1: Migrar aplicaciones

Obligatorio

Posmigración

Paso 2: Migrar SLB o actualizar DNS

Opcional

Posmigración

Paso 3: Migrar almacenamiento y colas de mensajes

Opcional

Elegir una solución de migración

Dos soluciones admiten la migración sin tiempo de inactividad:

Solución

Funcionamiento

Cuándo utilizarla

Registro dual y suscripción dual (este tema)

Registra las aplicaciones simultáneamente en el registro original y en Nacos. Las aplicaciones migradas y no migradas se detectan entre sí durante todo el proceso.

Utilícela cuando los puertos ECS estén disponibles. Requiere solo un reinicio de la aplicación.

División de tráfico

Cambie el registro a Nacos mediante Spring Cloud Alibaba, despliegue un nuevo conjunto de aplicaciones en SAE y luego redirija el tráfico con Server Load Balancer (SLB) y nombres de dominio.

Utilícela cuando los puertos ECS estén ocupados y no sea posible reutilizar las instancias.

Para la solución de división de tráfico, consulte Modify service registration and discovery of applications to Nacos.

Funcionamiento del registro dual y la suscripción dual

Los siguientes diagramas muestran el estado del sistema en cada etapa de la migración.

Estado inicial

Initial status

Etapa 1

Stage 1

Etapa 2

Stage 2

Etapa 3

Stage 3

Etapa 4

Stage 4

Propiedades clave:

  • Las aplicaciones migradas y no migradas se detectan y se llaman entre sí, lo que garantiza la continuidad del negocio.

  • Los únicos cambios de código necesarios son dos nuevas dependencias y una anotación en la clase principal.

  • Monitoree las llamadas a servicios consumidores y siga el progreso de la migración en tiempo real mediante SAE.

  • Controle las políticas de registro y suscripción de forma dinámica mediante la gestión de configuración de SAE; no se requieren reinicios repetidos. Las aplicaciones se reinician solo una vez.

Paso 1: Migrar la primera aplicación

1. Seleccionar una aplicación

Comience con los proveedores subyacentes, es decir, servicios que no tienen dependencias ascendentes. Si el rastreo de llamadas es complejo o difícil de mapear, seleccione cualquier aplicación para comenzar.

2. Agregar dependencias y actualizar la configuración

a. Agregar la dependencia de detección de Nacos

Agregue spring-cloud-starter-alibaba-nacos-discovery a pom.xml:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    <version>{Version}</version>
</dependency>

b. Configurar la dirección del servidor Nacos

Agregue lo siguiente a application.properties:

spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848

c. Agregar la dependencia de migración de registros múltiples

De forma predeterminada, Spring Cloud permite solo un registro. Agregar un segundo registro provoca un error. La dependencia edas-sc-migration-starter elimina esta restricción y habilita el registro simultáneo en varios registros.

Agréguela a pom.xml:

<dependency>
    <groupId>com.alibaba.edas</groupId>
    <artifactId>edas-sc-migration-starter</artifactId>
    <version>1.0.2</version>
</dependency>

3. Actualizar la configuración de RibbonClients

Para suscribirse a servicios desde varios registros, configure @RibbonClients para usar MigrationRibbonConfiguration en la clase principal.

Antes:

@SpringBootApplication
public class ConsumerApplication {
    public static void main(String[] args) {
        SpringApplication.run(ConsumerApplication.class, args);
    }
}

Después:

@SpringBootApplication
@RibbonClients(defaultConfiguration = MigrationRibbonConfiguration.class)
public class ConsumerApplication {
    public static void main(String[] args) {
        SpringApplication.run(ConsumerApplication.class, args);
    }
}
Después de desplegar estos cambios, ya sea en sus propias instalaciones o en SAE, puede controlar en qué registros se registra o a cuáles se suscribe la aplicación mediante Spring Cloud Config o Nacos Config, sin reiniciar la aplicación. Para más detalles, consulte Dynamically adjust service registration and subscription policies y Manage application configurations .

4. Desplegar la aplicación en SAE

Despliegue la aplicación según sus requisitos. Para más detalles, consulte Deploy applications.

5. Comprobar la migración

Utilice cualquiera de los siguientes métodos:

Opción 1: Verificar el comportamiento del negocio

Confirme que su negocio funciona como se espera después del despliegue.

Opción 2: Revisar el monitoreo de suscripción de servicios

Si Spring Boot Actuator está habilitado, acceda al siguiente endpoint para ver la RibbonServerList de cada servicio suscrito. El campo serverGroup en metaInfo muestra a qué registro pertenece un nodo.

Versión de Spring Boot

Endpoint

1.x

http://ip:port/dubboRegistry

2.x

http://ip:port/actuator/dubboRegistry

Enable Spring Boot Actuator monitoring

Paso 2: Migrar otras aplicaciones

Migre todas las aplicaciones restantes a SAE en secuencia, siguiendo los mismos pasos que en Step 1.

Posmigración: Limpieza y finalización

Eliminar dependencias de migración

Una vez que todas las aplicaciones estén en SAE, elimine la configuración del registro original y la dependencia edas-sc-migration-starter.

Importante

edas-sc-migration-starter es una dependencia exclusiva para la migración. Dejarla instalada no afecta la estabilidad del servicio, pero limita la eficacia del balanceo de carga de Ribbon. Elimine la dependencia después de la migración y reinicie las aplicaciones en lotes durante horas de baja demanda.

Migrar SLB o actualizar la configuración de DNS

Después de migrar sus aplicaciones, gestione su instancia de SLB y la configuración de nombres de dominio:

Instancia de SLB

Escenario

Acción

El SLB existía antes de la migración

Reutilícelo. Para detalles sobre la vinculación, consulte Bind a CLB instance to an application, and generate a public or private IP for it.

No había SLB antes de la migración

Cree una instancia de SLB y vincúlela a la aplicación de ingreso (como un API gateway).

Los puertos ECS están ocupados

Utilice la solución de división de tráfico. Agregue nuevas instancias ECS y luego reutilice el SLB existente o cree uno nuevo.

Nombre de dominio

Escenario

Acción

SLB reutilizado

No se necesitan cambios en el nombre de dominio.

Nuevo SLB creado

Agregue el nuevo SLB a la configuración del nombre de dominio y elimine la entrada anterior. Consulte Update DNS servers.

Migrar almacenamiento y colas de mensajes

Si su aplicación utiliza servicios de Alibaba Cloud como ApsaraDB RDS y Message Queue, no necesita migrar el almacenamiento ni las colas de mensajes. Si su aplicación no está desplegada en Alibaba Cloud, únase al grupo 32874633 de DingTalk para obtener soporte técnico.

Ajustar dinámicamente las políticas de registro y suscripción de servicios

Utilice la función de gestión de configuración de SAE para ajustar las políticas de registro y suscripción en cualquier momento durante la migración, sin necesidad de reiniciar la aplicación.

Ajustar la política de suscripción

De forma predeterminada, SAE se suscribe y agrega datos de servicios de todos los registros relacionados.

Para suscribirse solo a registros específicos, establezca la propiedad spring.cloud.edas.migration.subscribes:

# Subscribe to services from both Eureka and Nacos
spring.cloud.edas.migration.subscribes=nacos,eureka

# Subscribe to services from Nacos only
spring.cloud.edas.migration.subscribes=nacos

Ajustar la política de registro

De forma predeterminada, SAE se registra en todos los registros relacionados.

Para excluir registros específicos, establezca la propiedad spring.cloud.edas.migration.registry.excludes:

# Register with all registries (default — leave blank)
spring.cloud.edas.migration.registry.excludes=

# Disable registration with Eureka only
spring.cloud.edas.migration.registry.excludes=eureka

# Disable registration with Nacos and Eureka
spring.cloud.edas.migration.registry.excludes=nacos,eureka

Utilice la función de gestión de configuración de SAE para actualizar esta propiedad en tiempo de ejecución sin reiniciar sus aplicaciones.