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.
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.

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.

Migrar aplicações (obrigatório) -- Migre primeiro as aplicações stateless, uma por vez.
Migrar a instância do Server Load Balancer (SLB) ou atualizar o DNS (opcional) -- Direcione o tráfego para a nova implantação.
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.
Implantação em cluster ECS -- Consulte Implantar aplicações em clusters ECS.
Implantação em cluster ACK -- Consulte Implantar aplicações em clusters Kubernetes.
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:
Verifique a integridade do serviço -- Confirme se a aplicação inicia com sucesso e processa requisições conforme esperado.
-
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_listSpring Boot 2.x:
http://<ip>:<port>/actuator/migration-server-list
Na resposta, o campo
serverGroupemmetaInfoidentifica o registro de origem de cada instância de serviço (por exemplo,eurekaounacos).
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
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:
Exclua a dependência
edas-sc-migration-starterdo arquivopom.xml(oubuild.gradle) de cada aplicação.Remova a anotação
@RibbonClients(defaultConfiguration = MigrationRibbonConfiguration.class)da classe principal.Remova a dependência e a configuração do registro de serviço original (por exemplo, configurações do cliente Eureka ou Consul).
Remova
ribbon.nacos.enabled=falsedo arquivoapplication.properties.Reinicie as aplicações em lotes durante horários de baixa demanda.
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.
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.