Tous les produits
Search
Centre de documentation

Serverless App Engine:Migration fluide des applications Spring Cloud vers SAE

Dernière mise à jour :Aug 11, 2026

Migrez un cluster Spring Cloud hébergé sur Alibaba Cloud vers Serverless App Engine (SAE) sans interrompre le trafic en production. Cette rubrique présente l'approche d'enregistrement et d'abonnement doubles, où les applications migrées et non migrées coexistent au sein du même maillage de services jusqu'à la finalisation du basculement. Les applications ne redémarrent qu'une seule fois tout au long du processus.

Une démo fonctionnelle est disponible à l'adresse sc-migration-examples.zip.

Avant de commencer

Consultez la liste de vérification suivante avant d'entamer la migration. Identifier les obstacles tôt permet d'éviter les migrations incomplètes qui nécessiteraient un retour arrière.

Vérification Action si la condition n'est pas remplie
Toutes les applications utilisent la découverte de services Spring Cloud (Eureka ou Consul) Les applications qui contournent la découverte de services et appellent les services directement par adresse IP ou nom d'hôte ne peuvent pas utiliser cette approche. Mettez à jour ces clients avant la migration.
Les ports des instances ECS sont disponibles (non occupés par un autre processus) Si les ports sont occupés, utilisez plutôt la solution de répartition du trafic.
Les applications sont sans état Les applications avec état nécessitent une planification supplémentaire pour la migration de l'état.
Les services Alibaba Cloud (ApsaraDB RDS, Message Queue) sont utilisés pour le stockage et la messagerie Le stockage et la messagerie hors Alibaba Cloud requièrent une coordination distincte. Rejoignez le groupe DingTalk 32874633 pour obtenir de l'aide.

Aperçu de la migration

Migration process

La migration se déroule en trois phases :

Phase Étapes Obligatoire
Migration Étape 1 : Migrer les applications Oui
Post-migration Étape 2 : Migrer SLB ou mettre à jour le DNS Non
Post-migration Étape 3 : Migrer le stockage et les files d'attente de messages Non

Choisir une solution de migration

Deux solutions permettent une migration sans interruption de service :

Solution Fonctionnement Cas d'utilisation
Enregistrement et abonnement doubles (cette rubrique) Enregistrez les applications simultanément auprès du registre d'origine et de Nacos. Les applications migrées et non migrées se découvrent mutuellement tout au long du processus. Utilisez cette méthode lorsque les ports ECS sont disponibles. Un seul redémarrage de l'application est nécessaire.
Répartition du trafic Basculez le registre vers Nacos via Spring Cloud Alibaba, déployez un nouvel ensemble d'applications sur SAE, puis redirigez le trafic à l'aide de Server Load Balancer (SLB) et des noms de domaine. Privilégiez cette option lorsque les ports ECS sont occupés et que les instances ne peuvent pas être réutilisées.

Pour la solution de répartition du trafic, consultez la page Modifier l'enregistrement et la découverte de services des applications vers Nacos.

Fonctionnement de l'enregistrement et de l'abonnement doubles

Les schémas suivants illustrent l'état du système à chaque étape de la migration.

État initial

Initial status

Étape 1

Stage 1

Étape 2

Stage 2

Étape 3

Stage 3

Étape 4

Stage 4

Caractéristiques principales :

  • Les applications migrées et non migrées se découvrent et s'appellent mutuellement, garantissant la continuité des activités.

  • Les seules modifications de code nécessaires consistent en deux nouvelles dépendances et une annotation sur la classe principale.

  • Surveillez les appels aux services consommateurs et suivez la progression de la migration en temps réel via SAE.

  • Contrôlez dynamiquement les politiques d'enregistrement et d'abonnement via la gestion de configuration SAE, sans redémarrages répétés. Les applications ne redémarrent qu'une seule fois.

Étape 1 : Migrer la première application

1. Sélectionner une application

Commencez par les fournisseurs sous-jacents, c'est-à-dire les services qui n'ont aucune dépendance amont. Si la trace d'appel est complexe ou difficile à cartographier, sélectionnez n'importe quelle application pour démarrer.

2. Ajouter des dépendances et mettre à jour la configuration

a. Ajouter la dépendance de découverte Nacos

Ajoutez spring-cloud-starter-alibaba-nacos-discovery au fichier pom.xml :

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

b. Configurer l'adresse du serveur Nacos

Ajoutez les éléments suivants au fichier application.properties :

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

c. Ajouter la dépendance de migration multi-registres

Par défaut, Spring Cloud n'autorise qu'un seul registre. L'ajout d'un second registre génère une erreur. La dépendance edas-sc-migration-starter supprime cette restriction et permet l'enregistrement simultané auprès de plusieurs registres.

Ajoutez-la au fichier pom.xml :

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

3. Mettre à jour la configuration RibbonClients

Pour s'abonner aux services de plusieurs registres, configurez @RibbonClients pour utiliser MigrationRibbonConfiguration dans la classe principale.

Avant :

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

Après :

@SpringBootApplication
@RibbonClients(defaultConfiguration = MigrationRibbonConfiguration.class)
public class ConsumerApplication {
    public static void main(String[] args) {
        SpringApplication.run(ConsumerApplication.class, args);
    }
}
Après le déploiement de ces modifications, que ce soit sur site ou sur SAE, vous pouvez contrôler les registres auprès desquels l'application s'enregistre ou s'abonne à l'aide de Spring Cloud Config ou Nacos Config, sans redémarrer l'application. Pour plus de détails, consultez les sections Ajuster dynamiquement les politiques d'enregistrement et d'abonnement de services et Gérer les configurations des applications .

4. Déployer l'application sur SAE

Déployez l'application selon vos besoins. Pour plus d'informations, consultez la page Déployer des applications.

5. Vérifier la migration

Utilisez l'une des méthodes suivantes :

Option 1 : Vérifier le comportement métier

Confirmez que votre activité fonctionne comme prévu après le déploiement.

Option 2 : Vérifier la surveillance de l'abonnement aux services

Si Spring Boot Actuator est activé, accédez au point de terminaison suivant pour afficher la liste RibbonServerList pour chaque service abonné. Le champ serverGroup dans metaInfo indique le registre auquel appartient un nœud.

Version de Spring Boot Point de terminaison
1.x http://ip:port/dubboRegistry
2.x http://ip:port/actuator/dubboRegistry

Enable Spring Boot Actuator monitoring

Étape 2 : Migrer les autres applications

Migrez toutes les applications restantes vers SAE séquentiellement, en suivant les mêmes étapes que celles décrites dans la section Étape 1.

Post-migration : Nettoyage et finalisation

Supprimer les dépendances de migration

Une fois toutes les applications déployées sur SAE, supprimez la configuration du registre d'origine ainsi que la dépendance edas-sc-migration-starter.

Important

La dépendance edas-sc-migration-starter est destinée exclusivement à la migration. Bien que son maintien n'affecte pas la stabilité du service, elle limite l'efficacité de l'équilibrage de charge de Ribbon. Supprimez cette dépendance après la migration et redémarrez les applications par lots pendant les heures creuses.

Migrer SLB ou mettre à jour les paramètres DNS

Après avoir migré vos applications, gérez votre instance SLB et la configuration de votre nom de domaine :

Instance SLB

Scénario Action
SLB existait avant la migration Réutilisez-le. Pour plus de détails sur la liaison, consultez la page Lier une instance CLB à une application et générer une adresse IP publique ou privée pour celle-ci.
Aucun SLB avant la migration Créez une instance SLB et liez-la à l'application d'entrée (par exemple, une passerelle API).
Les ports ECS sont occupés Utilisez la solution de répartition du trafic. Ajoutez de nouvelles instances ECS, puis réutilisez le SLB existant ou créez-en un nouveau.

Nom de domaine

Scénario Action
SLB réutilisé Aucune modification du nom de domaine n'est nécessaire.
Nouveau SLB créé Ajoutez le nouveau SLB aux paramètres du nom de domaine et supprimez l'ancienne entrée. Consultez la page Mettre à jour les serveurs DNS.

Migrer le stockage et les files d'attente de messages

Si votre application utilise des services Alibaba Cloud tels qu'ApsaraDB RDS et Message Queue, vous n'avez pas besoin de migrer le stockage ni les files d'attente de messages. Si votre application n'est pas déployée sur Alibaba Cloud, rejoignez le groupe DingTalk 32874633 pour obtenir une assistance technique.

Ajuster dynamiquement les politiques d'enregistrement et d'abonnement de services

Utilisez la fonctionnalité de gestion de configuration de SAE pour ajuster les politiques d'enregistrement et d'abonnement à tout moment pendant la migration, sans redémarrage de l'application.

Ajuster la politique d'abonnement

Par défaut, SAE s'abonne aux données de service de tous les registres associés et les agrège.

Pour vous abonner uniquement à des registres spécifiques, définissez la propriété 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

Ajuster la politique d'enregistrement

Par défaut, SAE s'enregistre auprès de tous les registres associés.

Pour exclure des registres spécifiques, définissez la propriété 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

Utilisez la fonctionnalité de gestion de configuration de SAE pour mettre à jour cette propriété à l'exécution sans redémarrer vos applications.