Cette rubrique explique comment créer localement un exemple d'application microservice Dubbo avec une configuration XML, puis le déployer sur Serverless App Engine (SAE). L'application se compose d'un fournisseur de services et d'un consommateur de services, qui utilisent tous deux Nacos comme registre de services. Après le déploiement, SAE remplace automatiquement l'adresse du registre Nacos local, sans aucune modification de configuration requise.
Prérequis
Avant de commencer, assurez-vous d'avoir :
Maven installé et configuré dans vos variables d'environnement
Un serveur Nacos local s'exécutant en mode autonome (voir les étapes ci-dessous)
Configuration du serveur Nacos
Téléchargez et décompressez le package Nacos Server.
-
Accédez au répertoire
nacos/binet démarrez le serveur Nacos :Linux, Unix ou macOS : ``
bash sudo sh startup.sh -m standalone``Windows : ``
bash startup.cmd -m standalone``
standalonedémarre Nacos en mode autonome plutôt qu'en mode cluster. Si le double-clic surstartup.cmdsous Windows échoue, ouvrez le fichier et définissez manuellementMODE="standalone". Pour plus de détails, consultez Démarrage rapide de Nacos .
Note sur la version : Dubbo 2.7.x et Dubbo 3.0.x ont atteint leur fin de vie en mars 2023. Cette rubrique utilise Dubbo 3.2.15.
Étape 1 : Créer un fournisseur
Créez localement un projet Maven, définissez l'interface de service, configurez l'enregistrement du service basé sur XML et démarrez le fournisseur.
1.1 Créer un projet Maven et ajouter des dépendances
Utilisez un IDE (tel qu'IntelliJ IDEA ou Eclipse) pour créer un projet Maven.
-
Ajoutez les dépendances suivantes au fichier
pom.xml:<dependencies> <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo</artifactId> <version>3.2.15</version> </dependency> <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo-registry-nacos</artifactId> <version>3.2.15</version> </dependency> <dependency> <groupId>com.alibaba.nacos</groupId> <artifactId>nacos-client</artifactId> <version>1.1.1</version> </dependency> </dependencies>
1.2 Définir l'interface de service
Tous les services Dubbo sont définis via des interfaces.
Dans
src/main/java, créez le packagecom.alibaba.edas.-
Dans
com.alibaba.edas, créez l'interfaceIHelloService:package com.alibaba.edas; public interface IHelloService { String sayHello(String str); } -
Dans
com.alibaba.edas, créez la classe d'implémentationIHelloServiceImpl:package com.alibaba.edas; public class IHelloServiceImpl implements IHelloService { public String sayHello(String str) { return "hello " + str; } }
1.3 Configurer le service Dubbo
Dans
src/main/resources, créez le fichierprovider.xml.-
Ajoutez les espaces de noms XML Spring et Dubbo :
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://dubbo.apache.org/schema/dubbo" xmlns="http://www.springframework.org/schema/beans" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd"> -
Exposez l'interface de service et pointez vers le serveur Nacos local :
Élément Valeur Remarque Adresse du registre nacos://127.0.0.1:8848Pointe vers votre serveur Nacos local. Après le déploiement sur SAE, cette adresse est automatiquement remplacée par le registre géré par SAE, sans modification du code. Port Nacos 8848Fixe ; ne pas modifier. <dubbo:application name="demo-provider"/> <dubbo:protocol name="dubbo" port="28082"/> <dubbo:service interface="com.alibaba.edas.IHelloService" ref="helloService"/> <bean id="helloService" class="com.alibaba.edas.IHelloServiceImpl"/> <dubbo:registry address="nacos://127.0.0.1:8848" />Configuration clé :
1.4 Démarrer le fournisseur
-
Dans
com.alibaba.edas, créez la classeProvider:package com.alibaba.edas; import org.springframework.context.support.ClassPathXmlApplicationContext; public class Provider { public static void main(String[] args) throws Exception { ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"provider.xml"}); context.start(); System.in.read(); } } Exécutez la méthode principale de
Providerpour démarrer le service.
Vérifier le fournisseur
Connectez-vous à la console Nacos à l'adresse http://127.0.0.1:8848. Dans le volet de navigation de gauche, cliquez sur Service List.
Le service com.alibaba.edas.IHelloService apparaît dans la liste, accompagné de son Service Group et de son Provider IP.
Étape 2 : Créer un consommateur
Créez un projet Maven distinct pour le consommateur, abonnez-vous au service du fournisseur et vérifiez que l'appel fonctionne localement.
2.1 Créer un projet Maven et ajouter des dépendances
Suivez les mêmes étapes que celles décrites dans la section Étape 1.1 pour créer un projet Maven et ajouter les trois mêmes dépendances au fichier pom.xml.
2.2 Définir l'interface de service
Dans
src/main/java, créez le packagecom.alibaba.edas.-
Dans
com.alibaba.edas, créez la même interfaceIHelloService:package com.alibaba.edas; public interface IHelloService { String sayHello(String str); }
En production, définissez l'interface dans un module partagé et référencez-la depuis le fournisseur et le consommateur via des dépendances Maven. La duplication de l'interface ici sert uniquement à des fins de démonstration.
2.3 Configurer le service Dubbo
Dans
src/main/resources, créez le fichierconsumer.xml.-
Ajoutez les espaces de noms XML Spring et Dubbo (identiques à ceux du fichier
provider.xml) :<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://dubbo.apache.org/schema/dubbo" xmlns="http://www.springframework.org/schema/beans" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd"> -
Abonnez-vous au service du fournisseur :
<dubbo:application name="demo-consumer"/> <dubbo:registry address="nacos://127.0.0.1:8848"/> <dubbo:reference id="helloService" interface="com.alibaba.edas.IHelloService"/>
2.4 Démarrer le consommateur
-
Dans
com.alibaba.edas, créez la classeConsumer:package com.alibaba.edas; import org.springframework.context.support.ClassPathXmlApplicationContext; import java.util.concurrent.TimeUnit; public class Consumer { public static void main(String[] args) throws Exception { ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"consumer.xml"}); context.start(); while (true) { try { TimeUnit.SECONDS.sleep(5); IHelloService demoService = (IHelloService)context.getBean("helloService"); String result = demoService.sayHello("world"); System.out.println(result); } catch (Exception e) { e.printStackTrace(); } } } } Exécutez la méthode principale de
Consumerpour démarrer le service.
Vérifier le consommateur
Après le démarrage, la console affiche en continu :
hello world
Cette sortie confirme que le consommateur appelle correctement le fournisseur.
Connectez-vous à la console Nacos à l'adresse http://127.0.0.1:8848 et cliquez sur Services dans le volet de navigation de gauche. Sélectionnez Callers.
Le service com.alibaba.edas.IHelloService apparaît dans la liste, accompagné de son Service Group et de son Subscriber IP.
Étape 3 : Déployer sur SAE
Empaquetez le fournisseur et le consommateur sous forme de fichiers JAR exécutables, puis déployez-les sur SAE.
3.1 Ajouter le plugin de build
Ajoutez la configuration <build> suivante au fichier pom.xml de chaque projet :
-
Provider — définissez
mainClasssurcom.alibaba.sae.Provider:<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <executions> <execution> <goals> <goal>repackage</goal> </goals> <configuration> <classifier>spring-boot</classifier> <mainClass>com.alibaba.sae.Provider</mainClass> </configuration> </execution> </executions> </plugin> </plugins> </build> -
Consumer — définissez
mainClasssurcom.alibaba.sae.Consumer:<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <executions> <execution> <goals> <goal>repackage</goal> </goals> <configuration> <classifier>spring-boot</classifier> <mainClass>com.alibaba.sae.Consumer</mainClass> </configuration> </execution> </executions> </plugin> </plugins> </build>
3.2 Générer les packages JAR
Dans le répertoire de chaque projet, exécutez :
mvn clean package
Cela produit un fichier JAR exécutable dans le répertoire target/.
3.3 Déployer sur SAE
Déployez les deux packages JAR sur SAE. Pour les étapes de déploiement, consultez la rubrique Déployer une application Java.
Après le déploiement, SAE remplace automatiquement l'adresse du registre Nacos local ( nacos://127.0.0.1:8848 ) par l'adresse du registre de services géré par SAE. Aucune modification de vos fichiers de configuration n'est nécessaire.
Étapes suivantes
Déployer une application Java — options de déploiement complètes pour les applications basées sur JAR sur SAE