Todos os produtos
Search
Central de documentação

Enterprise Distributed Application Service:Migrar um cluster Spring Cloud com múltiplas aplicações para o EDAS

Última atualização: Jun 26, 2026

Este guia orienta a migração de um cluster Spring Cloud com múltiplas aplicações para o Enterprise Distributed Application Service (EDAS) sem interrupção de serviço. A abordagem de registro duplo e assinatura dupla mantém a comunicação entre as aplicações migradas e não migradas durante todo o processo.

Este guia aplica-se a clusters Spring Cloud já implantados na Alibaba Cloud. Se o seu cluster ainda não estiver na Alibaba Cloud, abra um ticket ou entre em contato com o suporte técnico do EDAS para obter uma solução completa de migração.

Nota

Se o seu cluster não estiver em produção ou se uma interrupção for aceitável, ignore este guia. Desenvolva as aplicações localmente e implante-as diretamente no EDAS. Consulte Implementar registro e descoberta de serviços.

Por que migrar para o EDAS

O EDAS substitui a sobrecarga operacional da infraestrutura Spring Cloud autogerenciada por uma plataforma gerenciada. Após a migração:

  • Implantação flexível -- Configure parâmetros de inicialização, acompanhe visualmente o progresso da implantação e utilize conexões e desconexões de serviço graceful para evitar perda de requisições.

  • Descoberta de serviço integrada -- O EDAS oferece descoberta de serviço e gerenciamento de configuração em sua versão comercial, substituindo soluções autogerenciadas como Eureka, ZooKeeper ou Consul.

  • Administração centralizada de serviços -- Consulte serviços publicados e consumidos diretamente pelo console do EDAS. Além de consultar informações de instâncias, acesse rastreamentos de microsserviços, topologia de chamadas do sistema e análise de SQL lento.

  • Auto Scaling -- Dimensione dinamicamente as instâncias da aplicação horizontalmente com base no tráfego.

  • Lançamentos graduais -- Execute lançamentos graduais de ponta a ponta para validação em pequena escala antes de distribuir atualizações para todas as instâncias.

  • Limitação de taxa e degradação -- Aplique limitação de taxa e degradação de serviço para manter a estabilidade da aplicação sob carga elevada.

Escolha um método de migração

O EDAS suporta dois métodos de migração. Ambos preservam a continuidade do serviço.

Método

Como funciona

Troca de registro

Utilize o Spring Cloud Alibaba para trocar o registro de serviço original pelo Nacos. Desenvolva as aplicações, implante-as no EDAS e direcione o tráfego configurando a instância do SLB e o nome de domínio.

Registro duplo e assinatura dupla

Acesse simultaneamente o registro de serviço original e o registro de serviço do EDAS durante a migração, permitindo chamadas mútuas entre aplicações migradas e não migradas.

Se optar pela troca de registro, siga a configuração padrão em Implementar registro e descoberta de serviços. O restante deste guia aborda o registro duplo e a assinatura dupla.

Como funciona o registro duplo

Durante a migração, cada aplicação se registra tanto no registro de serviço original quanto no registro do EDAS (Nacos). Isso significa que:

A figura a seguir mostra a arquitetura para uma migração suave de aplicações usando registro duplo e assinatura dupla.

EDAS应用迁移双注册和双订阅迁移方案

  • As aplicações migradas descobrem as não migradas por meio do registro original.

  • As aplicações não migradas descobrem as migradas da mesma forma.

  • Ambos os grupos se comunicam mutuamente sem interrupções.

  • Visualize a lista de chamadas de serviço do consumidor e acompanhe o progresso da migração em tempo real.

  • As aplicações reiniciam apenas uma vez durante todo o processo de migração. Posteriormente, ajuste dinamicamente as políticas de registro e assinatura sem necessidade de reinicialização.

Após a migração de todas as aplicações, remova a configuração do registro original e a dependência de migração.

Visão geral da migração

A migração consiste em três fases:

A figura a seguir mostra uma arquitetura típica de aplicação. O processo de migração divide-se em três etapas.

SpringCloud应用迁移EDAS迁移流程

  1. Migrar aplicações (obrigatório) -- Migre primeiro as aplicações stateless, uma por vez.

  2. Migrar a instância do Server Load Balancer (SLB) ou atualizar o DNS (opcional) -- Direcione o tráfego para a nova implantação.

  3. Migrar armazenamento e filas de mensagens (opcional) -- Necessário apenas se suas aplicações ainda não utilizarem serviços da Alibaba Cloud, como ApsaraDB RDS e Message Queue.

Este guia foca na fase 1.

Fase 1: Migrar aplicações

Etapa 1: Selecione a primeira aplicação

Comece por um provedor downstream — uma aplicação chamada por outros serviços, mas com poucas ou nenhuma dependência upstream. Se a cadeia de chamadas for muito complexa para identificar tal aplicação, escolha qualquer uma e prossiga.

Etapa 2: Adicione dependências e atualize a configuração

Realize as seguintes alterações na aplicação antes de implantá-la no EDAS.

2a. Adicione a dependência de descoberta do Nacos

Adicione spring-cloud-starter-alibaba-nacos-discovery ao arquivo pom.xml.

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

Substitua {Version} pela versão do Spring Cloud Alibaba compatível com sua versão do Spring Boot.

2b. Configure o endereço do servidor Nacos

Adicione as seguintes propriedades ao arquivo application.properties:

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

Definir ribbon.nacos.enabled como false impede que o Nacos sobrescreva a lista de servidores do Ribbon, requisito necessário para a configuração de assinatura dupla.

2c. Adicione o starter de migração

Por padrão, o Spring Cloud permite apenas um registro de serviço. A dependência edas-sc-migration-starter remove essa restrição e habilita o registro duplo.

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

2d. Configure o Ribbon para assinatura de múltiplos registros

Para agregar instâncias de serviço de múltiplos registros, defina MigrationRibbonConfiguration como a configuração padrão do Ribbon na classe principal da aplicação.

Antes:

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

Depois:

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

Esta anotação é a única alteração de código necessária.

Etapa 3: Implante no EDAS

Implante a aplicação modificada em um cluster ECS ou ACK. Utilize o console do EDAS ou ferramentas CLI.

Considerações importantes:

  • Reutilize instâncias ECS existentes para reduzir custos importando-as para o EDAS. Consulte Criar um cluster ECS no console do EDAS.

  • Ao criar novas instâncias ECS, coloque-as na mesma Virtual Private Cloud (VPC) das aplicações existentes para manter a conectividade de rede interna. Consulte Visão geral do gerenciamento de recursos.

  • Atualize as listas de permissões de endereços IP em bancos de dados, caches e filas de mensagens para incluir os IPs das novas instâncias ECS.

Etapa 4: Verifique a migração

Após a implantação, verifique se a aplicação migrada funciona corretamente:

  1. Verifique a integridade do serviço -- Confirme se a aplicação inicia com sucesso e processa requisições conforme esperado.

  2. Inspecione a lista de servidores do Ribbon -- Se o Spring Boot Actuator estiver ativado, consulte o endpoint de migração para verificar a quais registros a aplicação está assinando:

    • Spring Boot 1.x: http://<ip>:<port>/migration_server_list

    • Spring Boot 2.x: http://<ip>:<port>/actuator/migration-server-list

    Na resposta, o campo serverGroup em metaInfo identifica o registro de origem de cada instância de serviço (por exemplo, eureka ou nacos).

    EDSA应用迁移结果验证之查看服务订阅监控

Etapa 5: Migre as aplicações restantes

Repita as etapas 2 a 4 para cada aplicação restante no cluster.

Fase 2: Migrar a instância do SLB ou atualizar o DNS (opcional)

Após a migração de todas as aplicações, atualize o roteamento de rede:

  • Se uma instância do SLB foi usada antes da migração, reutilize-a . Selecione uma política para anexar a instância do SLB conforme necessário. Para mais informações, consulte Visão geral da vinculação do SLB.

  • Se nenhuma instância do SLB foi usada, crie uma e vincule-a à sua aplicação de ponto de entrada (por exemplo, API Gateway).

  • Configuração de nome de domínio:

    • Se a instância do SLB for reutilizada, nenhuma alteração de DNS será necessária.

    • Se uma nova instância do SLB for criada, atualize o DNS para apontar para a nova instância do SLB e remova a antiga. Consulte Alterar servidores DNS para um nome de domínio.

Fase 3: Migrar armazenamento e filas de mensagens (opcional)

Se suas aplicações já utilizam serviços da Alibaba Cloud, como ApsaraDB RDS e Message Queue, nenhuma migração de armazenamento ou fila de mensagens é necessária.

Caso suas aplicações não estejam na Alibaba Cloud, entre em contato com o suporte técnico do EDAS para obter um plano completo de migração.

Ajustar dinamicamente as políticas de registro e assinatura

Durante a migração, ajuste em quais registros uma aplicação se registra ou assina sem reinicialização. Use o recurso de gerenciamento de configuração do EDAS, o Spring Cloud Config ou o Nacos Config para atualizar as seguintes propriedades em tempo de execução.

Controlar quais registros a aplicação assina

Por padrão, a aplicação assina todos os registros e agrega os resultados.

Para assinar apenas registros específicos, defina spring.cloud.edas.migration.subscribes:

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

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

Controlar em quais registros a aplicação se registra

Por padrão, a aplicação se registra em todos os registros disponíveis.

Para interromper o registro em registros específicos, defina spring.cloud.edas.migration.registry.excludes:

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

# Stop registering with Eureka
spring.cloud.edas.migration.registry.excludes=eureka

# Stop registering with both Nacos and Eureka
spring.cloud.edas.migration.registry.excludes=nacos,eureka
Nota

Dica: Se usar o Spring Cloud Config, consulte a documentação open source. Para instruções de configuração do Nacos Config, consulte Gerenciar configurações de aplicações.

Limpeza pós-migração

Depois que todas as aplicações estiverem em execução no EDAS, remova a configuração específica da migração:

  1. Exclua a dependência edas-sc-migration-starter do arquivo pom.xml (ou build.gradle) de cada aplicação.

  2. Remova a anotação @RibbonClients(defaultConfiguration = MigrationRibbonConfiguration.class) da classe principal.

  3. Remova a dependência e a configuração do registro de serviço original (por exemplo, configurações do cliente Eureka ou Consul).

  4. Remova ribbon.nacos.enabled=false do arquivo application.properties.

  5. Reinicie as aplicações em lotes durante horários de baixa demanda.

Nota

O edas-sc-migration-starter não afeta a estabilidade do serviço se mantido temporariamente. No entanto, ele limita o comportamento de balanceamento de carga do Ribbon; portanto, remova-o após a conclusão da migração.

Projeto de demonstração

O EDAS fornece um projeto de exemplo que demonstra o registro duplo e a assinatura dupla. Baixe o projeto e siga o README incluído para executá-lo localmente.

Ajuda com problemas de migração

Se encontrar algum problema ao migrar seu cluster Spring Cloud para o EDAS, entre no grupo do DingTalk (ID: 31723701) para contatar um especialista técnico do produto e obter assistência.

Nota

Para nos ajudar a atendê-lo melhor, forneça o nome da sua empresa e o ID da conta Alibaba Cloud ao solicitar entrada no grupo do DingTalk.