Intégration de Spring Boot avec Apache Dubbo et configuration de Dubbo-Admin

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.

Étiquettes: SpringBoot dubbo ZooKeeper distributed-systems Java

Publié le 20 juin à 16h05