Depuis son transfert à la fondation Apache, l'écosystème Dubbo a évolué. L'installation de l'interface d'administration (Dubbo-Admin) nécessite désormais une attention particulière quant au choix des dépôts, les anciennes versions n'étant plus maintenues. Ce guide détaille la mise en œuvre de Dubbo avec Spring Boot et le déploiement de l'outil d'administration moderne.
1. Choix de la version de Dubbo-Admin
Il existe deux sources principales pour récupérer l'interface d'administration :
- Dépôt historique : Les versions supérieures à 2.6 du dépôt principal ne contiennent plus le module
dubbo-admin. - Dépôt dédié (Recommandé) : Le projet incubator-dubbo-ops propose une version isolée basée sur Spring Boot. Elle peut être lancée directement comme un service autonome via un fichier JAR ou une méthode Main, simplifiant considérablement le déploiement.
2. Mise en place du projet Spring Boot avec Dubbo
Nous utilisons ici le starter officiel pour faciliter l'auto-configuraton.
2.1 Dépendance Maven
<dependency>
<groupId>com.alibaba.spring.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.0.0</version>
</dependency>
2.2 Définition de l'Interface (Module API)
Il est recommandé d'isoler les interfaces dans un module commun pour qu'elles soient accessibles par le fournisseur et le consommateur.
package net.techguide.service;
public interface GreetingService {
String sayHello(String name);
}
2.3 Implémentation du Fournisseur (Provider)
Le fournisseur implémente l'interface et expose le service via l'annotation @Service de Dubbo.
package net.techguide.provider.service;
import com.alibaba.dubbo.config.annotation.Service;
import net.techguide.service.GreetingService;
import org.springframework.stereotype.Component;
@Component
@Service(version = "1.0.0", timeout = 5000, interfaceClass = GreetingService.class)
public class GreetingServiceImpl implements GreetingService {
@Override
public String sayHello(String name) {
return "Bienvenue sur Dubbo, " + name;
}
}
Fichier de configuration application.properties du fournisseur :
server.port=8081
spring.application.name=app-provider-service
spring.dubbo.server=true
spring.dubbo.registry=zookeeper://127.0.0.1:2181
Classe principale avec activation de la configuration Dubbo :
@SpringBootApplication
@EnableDubboConfiguration
public class ProviderApplication {
public static void main(String[] args) {
SpringApplication.run(ProviderApplication.class, args);
}
}
2.4 Création du Consommateur (Consumer)
Le consommateur utilise @Reference pour injecter dynamiquement le service distant.
package net.techguide.web.controller;
import com.alibaba.dubbo.config.annotation.Reference;
import net.techguide.service.GreetingService;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class PortalController {
@Reference(version = "1.0.0")
private GreetingService greetingService;
@GetMapping("/api/greet/{name}")
public String executeGreeting(@PathVariable String name) {
return greetingService.sayHello(name);
}
}
Configuration du consommateur :
server.port=8080
spring.application.name=app-consumer-web
spring.dubbo.registry=zookeeper://127.0.0.1:2181
3. Configuration et lancement de Dubbo-Admin
Une fois le projet dubbo-admin récupéré, la configuration s'effectue dans le fichier src/main/resources/application.properties. Cet outil permet de visualiser l'état du registre Zookeeper et la santé des services.
server.port=7001
# Identifiants de connexion
spring.root.password=admin
spring.guest.password=guest
# Adresse du registre Zookeeper
dubbo.registry.address=zookeeper://127.0.0.1:2181
Après le lancement de DubboAdminApplication, l'interface est accessible sur http://localhost:7001. Les identifiants par défaut sont généralement root / root ou ceux définis dans le fichier de propriétés. Vous y trouverez la liste exhaustive des fournisseurs actifs, des consommateurs connectés ainsi que les métadonnées des services exposés.