L'enregistrement et la découverte de services des applications Spring Cloud étaient auparavant implémentés à l'aide de composants tels qu'Eureka, Consul et ZooKeeper. Cette rubrique explique comment mettre en œuvre l'enregistrement et la découverte de services avec Nacos, ainsi que l'hébergement de Nacos sur Serverless App Engine (SAE).
Avantages
L'enregistrement et la découverte de services des applications Spring Cloud sont traditionnellement assurés par des composants tels qu'Eureka, Consul, ZooKeeper et Redis. Lorsque vous hébergez des applications Spring Cloud sur SAE, il vous suffit de remplacer le registre de services et le centre de configuration d'origine par Alibaba Nacos Discovery pour effectuer l'enregistrement et la découverte de services, sans modifier le code métier.
Le registre de services de SAE offre toutes les fonctionnalités de Spring Cloud Alibaba Nacos Discovery et vous libère de la dépendance envers plusieurs composants comme Eureka, Consul, ZooKeeper et Redis.
Après avoir hébergé vos applications Spring Cloud sur SAE, vous pouvez vous concentrer sur la logique métier de vos applications, sans vous soucier de la mise en place ni de la maintenance du registre de services et du centre de configuration. Les fonctionnalités proposées par SAE, telles que la mise à l'échelle automatique, le démarrage et l'arrêt rapides des applications par lots, ainsi que la surveillance des applications, contribuent à réduire considérablement vos coûts de développement et d'exploitation.
Si vous disposez d'un grand nombre d'applications microservices, vous pouvez utiliser l'un des types de registres de services suivants, classés par ordre de recommandation décroissant :
Étape 1 : Obtenir une démo
eureka-service-provider et eureka-service-consumer sont des packages d'applications de démonstration pour les microservices SAE. Eureka est intégré au consommateur et au fournisseur. Le consommateur utilise les services fournis par le fournisseur.
Fournisseur : eureka-service-provider.zip
Consommateur : eureka-service-consumer.zip
Étape 2 : Modifier les configurations du registre de services du fournisseur
Pour héberger le fournisseur cloud-native sur SAE, vous devez modifier la dépendance POM dans le fournisseur et spécifier une adresse IP pour Nacos Server.
Vous devez spécifier une adresse IP pour Nacos Server dans les scénarios suivants :
Vous hébergez vos applications sur SAE après avoir réussi les tests locaux.
Le registre de services SAE est un registre Nacos autogéré.
-
Ajoutez la dépendance suivante au fichier pom.xml.
Ouvrez le fichier pom.xml du fournisseur. Remplacez
spring-cloud-starter-netflix-eureka-clientparspring-cloud-starter-alibaba-nacos-discoveryet configurez la version de Nacos Server.Avant le remplacement :
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency>Après le remplacement :
<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <version>2.1.1.RELEASE</version> </dependency>RemarqueCet exemple utilise Spring Cloud Greenwich. La version de
spring-cloud-starter-alibaba-nacos-discoveryest2.1.1.RELEASE.Si vous utilisez Spring Cloud Finchley, la version de
spring-cloud-starter-alibaba-nacos-discoveryest2.0.1.RELEASE.Si vous utilisez Spring Cloud Edgware, la version de
spring-cloud-starter-alibaba-nacos-discoveryest1.5.1.RELEASE. Le support de cette version a pris fin. Nous ne recommandons pas cette version. Pour plus d'informations, consultez les notes de version de Spring Cloud Edgware.
-
Spécifiez une adresse IP pour Nacos Server.
Ouvrez le fichier application.properties situé dans src\main\resources et spécifiez une adresse IP pour Nacos Server.
Avant la modification :
spring.application.name=service-provider server.port=18081 eureka.client.serviceUrl.defaultZone=http://127.0.0.1:8761/eureka/Après la modification :
spring.application.name=service-provider server.port=18081 spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848127.0.0.1correspond à l'adresse IP de Nacos Server. Si Nacos Server est déployé sur un autre serveur physique, modifiez l'adresse IP en conséquence. Si vous avez d'autres exigences, ajoutez les configurations requises dans le fichierapplication.propertiesen vous référant aux Éléments de configuration. -
Interrogez le service de l'application.
Exécutez la fonction
maindeProviderApplicationdans le projetnacos-service-providerpour démarrer le fournisseur.-
Connectez-vous à la console Nacos Server installée sur votre ordinateur en accédant à
127.0.0.1:8848/nacos. Dans le volet de navigation de gauche, choisissez .RemarqueLe nom d'utilisateur et le mot de passe par défaut pour se connecter à la console Nacos Server sont nacos.
Si service-provider s'affiche dans Service list et que vous pouvez consulter les détails de service-provider, cela signifie que service-provider est correctement enregistré.
Étape 3 : Modifier les configurations du registre de services du consommateur
Pour héberger le consommateur cloud-native sur SAE, vous devez modifier la dépendance POM dans le consommateur et spécifier une adresse IP pour le serveur Nacos.
Vous devez spécifier une adresse IP pour le serveur Nacos dans les scénarios suivants :
Vous hébergez vos applications sur SAE après qu'elles ont passé les tests locaux avec succès.
Le registre de services SAE est un registre Nacos autogéré.
-
Ajoutez la dépendance suivante au fichier pom.xml.
Ouvrez le fichier pom.xml du fournisseur. Remplacez
spring-cloud-starter-netflix-eureka-clientparspring-cloud-starter-alibaba-nacos-discoveryet configurez la version du serveur Nacos.Avant le remplacement :
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency>Après le remplacement :
<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <version>2.1.1.RELEASE</version> </dependency>RemarqueCet exemple utilise Spring Cloud Greenwich. La version de
spring-cloud-starter-alibaba-nacos-discoveryest2.1.1.RELEASE.Si vous utilisez Spring Cloud Finchley, la version de
spring-cloud-starter-alibaba-nacos-discoveryest2.0.1.RELEASE.Si vous utilisez Spring Cloud Edgware, la version de
spring-cloud-starter-alibaba-nacos-discoveryest1.5.1.RELEASE. Le support de cette version a pris fin. Nous ne recommandons pas cette version. Pour plus d'informations, consultez les notes de version de Spring Cloud Edgware.
-
Spécifiez une adresse IP pour le serveur Nacos.
Ouvrez le fichier application.properties situé dans src\main\resources et spécifiez une adresse IP pour le serveur Nacos.
Avant la modification :
spring.application.name=service-consumer server.port=18082 eureka.client.serviceUrl.defaultZone=http://127.0.0.1:8761/eureka/Après la modification :
spring.application.name=service-consumer server.port=18082 spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848127.0.0.1correspond à l'adresse IP du serveur Nacos. Si le serveur Nacos est déployé sur un autre serveur physique, modifiez l'adresse IP en conséquence. Si vous avez d'autres exigences, ajoutez les configurations requises dans le fichierapplication.propertiesen vous référant aux Éléments de configuration. -
Interrogez le service de l'application.
Exécutez la fonction
maindeConsumerApplicationdans le projetnacos-service-consumerpour démarrer le consommateur.-
Connectez-vous à la console du serveur Nacos installée sur votre ordinateur en accédant à
127.0.0.1:8848/nacos. Dans le volet de navigation de gauche, choisissez .RemarqueLe nom d'utilisateur et le mot de passe par défaut pour se connecter à la console du serveur Nacos sont nacos.
Si service-consumer s'affiche dans Service list et que vous pouvez consulter les détails de service-consumer, alors l'enregistrement de service-consumer a réussi.
Étape 4 : Consulter les résultats de la consommation des services du fournisseur par le consommateur
Consultez les résultats de la consommation des services fournis par le fournisseur sur votre ordinateur. Démarrez le service et exécutez IP+port/echo-rest/<Custom variable> ou IP+port/echo-feign/<Custom variable> pour afficher les résultats.
Sous Linux, UNIX ou macOS, exécutez
curl http://127.0.0.1:18082/echo-rest/<Custom variable>oucurl http://127.0.0.1:18082/echo-feign/<Custom variable>.Sous Windows, saisissez
http://127.0.0.1:18082/echo-rest/<Custom variable>ouhttp://127.0.0.1:18082/echo-feign/<Custom variable>dans le navigateur.
Voici un exemple de consommation de service réussie sur un système d'exploitation Windows.
Étape 5 : Déployer les applications sur SAE
Cette rubrique présente un exemple illustrant la compilation du programme local en un package JAR exécutable. Vous pouvez également créer une image pour l'application avant le déploiement.
-
Dans le fichier pom.xml de l'application, ajoutez la configuration suivante, puis exécutez la commande mvn clean package pour compiler le programme local en un package JAR exécutable.
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> </plugins> </build> -
Déployez les packages d'application du fournisseur et du consommateur compilés sur SAE. Pour plus d'informations, consultez la rubrique Déployer des applications Java à l'aide d'un package JAR.
ImportantSAE ne permet pas de créer une application vide. Vous devez créer une application dans la console, puis vous pourrez pousser des données vers celle-ci.
Si vous utilisez un package JAR pour déployer les applications, définissez Application Runtime Environment sur Standard Java Application Runtime Environment.
Si vous utilisez un package WAR pour déployer les applications, définissez Application Runtime Environment sur apache-tomcat-XXX.
Lors du déploiement des applications sur SAE, le registre de services de SAE définit automatiquement, avec une priorité élevée, l'adresse IP du serveur Nacos, le port de service, le namespace, l'ID AccessKey et le secret AccessKey. Vous pouvez conserver ou supprimer les configurations par défaut selon vos besoins.
Étape 6 : Vérifier le résultat
Associez une instance CLB orientée Internet au consommateur et saisissez le point de terminaison public spécifié pour l'instance CLB dans le navigateur pour accéder à la page d'accueil du consommateur. Pour plus d'informations, consultez la rubrique Associer une instance CLB à une application et générer une adresse IP publique ou privée pour l'application.
Sur la page d'accueil du consommateur, créez une requête pour appeler les services du fournisseur. Connectez-vous à la console SAE. Dans le volet de navigation de gauche, choisissez Applications > Applications. Dans la barre de navigation supérieure, sélectionnez une région.
Sur la page Applications, sélectionnez un consommateur et accédez à la page Basic Information.
-
Dans le volet de navigation de gauche, choisissez pour consulter les données globales d'appel de service.
Si les données relatives à la requête d'appel des services du fournisseur s'affichent sur la page Overview, les services ont été appelés avec succès.
Éléments de configuration
|
Élément de configuration |
Clé |
Valeur par défaut |
Description |
|
Adresse IP du serveur |
spring.cloud.nacos.discovery.server-addr |
Aucune |
L'adresse IP et le port sur lesquels le serveur Nacos écoute. |
|
Nom du service |
spring.cloud.nacos.discovery.service |
${spring.application.name} |
Le nom du service. |
|
Nom de l'interface réseau (NIC) |
spring.cloud.nacos.discovery.network-interface |
Aucune |
Si aucune adresse IP n'est spécifiée, l'adresse IP de l'interface réseau est enregistrée. Si cet élément n'est pas configuré, l'adresse IP de la première interface réseau est utilisée par défaut. |
|
Adresse IP enregistrée |
spring.cloud.nacos.discovery.ip |
Aucune |
L'adresse IP enregistrée a une priorité plus élevée que le nom ENI lors de la configuration. |
|
Port enregistré |
spring.cloud.nacos.discovery.port |
-1 |
Vous n'avez pas besoin de configurer le port enregistré. Le système détecte automatiquement le port. |
|
Namespace |
spring.cloud.nacos.discovery.namespace |
Aucune |
L'isolation de l'enregistrement dans différents environnements. Par exemple, l'isolation des ressources, y compris les configurations et les services, dans les environnements de développement, de test et de production. |
|
Métadonnées |
spring.cloud.nacos.discovery.metadata |
Aucune |
Ces métadonnées doivent être configurées au format JSON Map. Vous pouvez spécifier les métadonnées liées au service en fonction de vos besoins métier. |
|
Cluster |
spring.cloud.nacos.discovery.cluster-name |
DEFAULT |
Le nom du cluster Nacos. |
|
Endpoint |
spring.cloud.nacos.discovery.endpoint |
Aucune |
Le nom de domaine d'un service dans la région. Vous pouvez récupérer dynamiquement l'adresse IP du serveur à partir de ce nom de domaine. Vous n'avez pas besoin de spécifier cet élément lors du déploiement d'une application sur SAE. |
|
Activation de l'intégration Ribbon |
ribbon.nacos.enabled |
true |
Désactivez l'intégration Ribbon uniquement si nécessaire. |
Pour plus d'informations sur Spring Cloud Alibaba Nacos Discovery, consultez la page Spring Cloud Alibaba Nacos Discovery.
Étapes suivantes
Vous pouvez effectuer les opérations suivantes sur l'application créée.
L'application ne peut pas accéder à Internet ni être accessible depuis Internet. Si vous souhaitez configurer le réseau pour l'application, consultez la rubrique Accès aux applications.
Pour plus d'informations, consultez la rubrique Gestion des opérations et de la maintenance.



