Configuration de Dubbo via XML et installation de Dubbo-admin

Table des matières- 1 Configuration XML de Dubbo

  • 1.1 Fournisseur
  • 1.1.1 Interface du fournisseur
  • 1.1.2 Classe implémentant le fournisseur
  • 1.1.2.1 Structure du projet
  • 1.1.2.2 Fichier pom.xml
  • 1.1.2.3 Interface implémentée
  • 1.1.2.4 Fichier de configuration
  • 1.1.2.4.1 Configuration XML
  • 1.1.2.4.2 Utilisation d'annotations
  • 1.1.2.5 Classe de démarrage
  • 1.1.2.5.1 Lecture directe du fichier de configuration
  • 1.1.2.5.2 Démarrage avec Main.main
  • 1.1.3 Autres méthodes de configuration
  • 1.2 Consommateur
  • 1.2.1 Structure du projet
  • 1.2.2 Fichier pom.xml
  • 1.2.3 Interface et implémentation du consommateur
  • 1.2.4 Configuration du consommateur
  • 2 Dubbo-admin
  • 2.1 Téléchargement
  • 2.2 Configuration et génération
  • 2.3 Démarrage du service

1 Configuration XML de Dubbo

1.1 Fournisseur

1.1.1 Interface du fournisseur

Illustration

pom.xml

   <groupId>cn.jzh</groupId>
    <artifactId>dubbo-service</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>


Interface

public interface DemoService {
    public String test (String msg);
}


1.1.2 Classe implémentant le fournisseur

1.1.2.1 Structure du projet

1.1.2.2 Fichier pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>cn.jzh</groupId>
    <artifactId>dubbo-service-impl</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>


    <dependencies>
        <dependency>
            <groupId>cn.jzh</groupId>
            <artifactId>dubbo-service</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/com.alibaba/dubbo -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>dubbo</artifactId>
            <version>2.6.12</version>
        </dependency>
        <!--<dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.1.6.RELEASE</version>
        </dependency>-->

        <!-- Bibliothèque client pour accéder à Zookeeper -->
        <dependency>
            <groupId>com.101tec</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.10</version>
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-api</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <!-- io/netty/channel/EventLoopGroup -->
        <dependency>
            <groupId>io.netty</groupId>
            <artifactId>netty-all</artifactId>
            <version>4.1.32.Final</version>
        </dependency>
        <!-- org/apache/curator/RetryPolicy -->
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-framework</artifactId>
            <version>4.0.1</version>
            <exclusions>
                <exclusion>
                    <groupId>org.apache.zookeeper</groupId>
                    <artifactId>zookeeper</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

    </dependencies>
</project> 	


1.1.2.3 Interface implémentée

import cn.jzh.service.DemoService;
public class DemoServiceImpl implements DemoService {
    @Override
    public String test (String msg) {
        return "dubbo reçoit le message"+msg;
    }
}


1.1.2.4 Fichier de configuration

1.1.2.4.1 Configuration XML

applicationContext-dubbo.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd
        http://code.alibabatech.com/schema/dubbo
        http://code.alibabatech.com/schema/dubbo/dubbo.xsd">

    <!-- Nom de l'application -->
    <dubbo:application name="dubbo-server"/>
    <!-- Adresse et port du registre Zookeeper -->
    <dubbo:registry address="127.0.0.1:2181" protocol="zookeeper"></dubbo:registry>
    <!-- Port utilisé pour les services -->
    <dubbo:protocol name="dubbo" port="20881"></dubbo:protocol>
    <!-- Service exposé -->
    <dubbo:service interface="cn.jzh.service.DemoService" ref="demoServiceImpl"></dubbo:service>
    <bean id="demoServiceImpl" class="cn.jzh.service.impl.DemoServiceImpl"></bean>
</beans>


Explication des configurations :

  • <dubbo:service/> : Configuration du service, utilisé pour exposer un service.
  • <dubbo:reference/> : Configuration de référence, utilisé pour créer une instance distante.
  • <dubbo:protocol/> : Configuration du protocole utilisé par le service.
  • <dubbo:application/> : Configuration de l'application.
  • <dubbo:registry/> : Configuration du registre central.
  • <dubbo:monitor/> : Configuration du système de monitoring.
  • <dubbo:provider/> : Configuration du fournisseur.
  • <dubbo:consumer/> : Configuration du consommateur.
  • <dubbo:method/> : Configuration spécifique aux méthodes.
  • <dubbo:argument/> : Configuration spécifique aux arguments.
1.1.2.4.2 Utilisation d'annotations

applicationContext-dubbo.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd
        http://code.alibabatech.com/schema/dubbo
        http://code.alibabatech.com/schema/dubbo/dubbo.xsd">

    <!-- Nom de l'application -->
    <dubbo:application name="dubbo-server"/>
    <!-- Adresse et port du registre Zookeeper -->
    <dubbo:registry address="127.0.0.1:2181" protocol="zookeeper" ></dubbo:registry>
    <!-- Port utilisé pour les services -->
    <dubbo:protocol name="dubbo" port="20881"></dubbo:protocol>
    
    <!-- Utilisation d'annotations -->
    <dubbo:annotation package="cn.jzh.service.impl" />
</beans>


L'implémentation doit utiliser l'annotation @Service de Alibaba :

import cn.jzh.service.DemoService;
import com.alibaba.dubbo.config.annotation.Service;

@Service
public class DemoServiceImpl implements DemoService {
    @Override
    public String test(String msg) {
        return "dubbo reçoit le message"+msg;
    }
}


1.1.2.5 Classe de démarrage

1.1.2.5.1 Lecture directe du fichier de configuration
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class App {

    public static void main(String[] args) {
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext-dubbo.xml");
        context.start();
        System.out.println("Démarrage réussi");
    }
}


Après avoir lancé le service Zookeeper, le service peut être lancé. Si vous souhaitez garder le service actif, utilisez une méthode différente. Attention : il faut d'abord lancer Zookeeper.

1.1.2.5.2 Démarrage avec Main.main

La méthode officielle recommandée est com.alibaba.dubbo.container.Main.main().

Attention : le fichier de configuration applicationContext-dubbo.xml doit être placé dans le dossier resource/META-INF/spring/*.xml.

Exemple :

import com.alibaba.dubbo.container.Main;
public class App {
    public static void main(String[] args) {
        // Méthode recommandée
        // Le fichier de configuration doit se trouver dans META-INF/spring/*.xml
        Main.main(args);
    }
}


1.1.3 Autres méthodes de configuration

En plus de la configuration XML, on peut aussi utiliser dubbo.properties. Si la configuration est simple, sans multiples registres ou protocoles, ou si plusieurs conteneurs Spring partagent la même configuration, dubbo.properties peut être utilisé comme configuration par défaut. Dubbo charge automatiquement dubbo.properties à la racine de la classe. On peut changer sa localisation en utilisant -Ddubbo.properties.file=xxx.properties.

Exemple de dubbo.properties :

# Nom de l'application
dubbo.application.name=dubbodemo-provider
# Adresse du registre
dubbo.registry.address=zookeeper://127.0.0.1:2181
# Exemple de registre de diffusion
# dubbo.registry.address=multicast://224.5.6.7:1234
# Adresse du protocole
dubbo.protocol.name=dubbo
dubbo.protocol.port=28080


Stratégie de surcharge :

  • Les paramètres JVM (-D) sont prioritaires.
  • La configuration XML est secondaire.
  • Le fichier properties est final.

Remarques :

  1. Si plusieurs dubbo.properties existent, Dubbo en charge un aléatoirement.
  2. L'id du protocole est utilisé comme identifiant par défaut.

1.2 Consommateur

1.2.1 Structure du projet

1.2.2 Fichier pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>cn.jzh</groupId>
    <artifactId>dubbo-consumer</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>

    <dependencies>
        <dependency>
            <groupId>cn.jzh</groupId>
            <artifactId>dubbo-service</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/com.alibaba/dubbo -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>dubbo</artifactId>
            <version>2.6.12</version>
        </dependency>
        <!--<dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.1.6.RELEASE</version>
        </dependency>-->

        <!-- Bibliothèque client pour accéder à Zookeeper -->
        <dependency>
            <groupId>com.101tec</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.10</version>
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-api</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <!-- io/netty/channel/EventLoopGroup -->
        <dependency>
            <groupId>io.netty</groupId>
            <artifactId>netty-all</artifactId>
            <version>4.1.32.Final</version>
        </dependency>
        <!-- org/apache/curator/RetryPolicy -->
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-framework</artifactId>
            <version>4.0.1</version>
            <exclusions>
                <exclusion>
                    <groupId>org.apache.zookeeper</groupId>
                    <artifactId>zookeeper</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>
</project>


1.2.3 Interface et implémentation du consommateur

Interface

public interface ConsumerService {
    void test();
}


Implémentation, notez que l'on utilise les annotations d'Alibaba :

import cn.consumber.service.ConsumerService;
import cn.jzh.service.DemoService;
import com.alibaba.dubbo.config.annotation.Reference;

public class ConsumerServiceImpl implements ConsumerService {
    @Reference
    private DemoService demoService;
    @Override
    public void test() {
        // Appel de la fonction fournie par le fournisseur
        System.out.println(demoService.test("Test de Dubbo"));
    }
}


1.2.4 Configuration du consommateur

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd
        http://code.alibabatech.com/schema/dubbo
        http://code.alibabatech.com/schema/dubbo/dubbo.xsd">

    <!-- Nom de l'application -->
    <dubbo:application name="dubbo-consumer"/>

    <!-- Adresse et port du registre Zookeeper -->
    <dubbo:registry address="127.0.0.1:2181" protocol="zookeeper" ></dubbo:registry>

<!--    <dubbo:reference id="demo" interface="DemoService"  check="false" />-->
   <!-- Configuration de l'annotation -->
   <dubbo:annotation package="cn.consumber" />
    <bean id="consumerImpl" class="cn.consumber.service.impl.ConsumerServiceImpl"></bean>

</beans>


2 Dubbo-admin

2.1 Téléchargement

Adresse de téléchargement de Dubbo-admin : https://github.com/apache/dubbo-admin/tree/master, récupérez la branche master et téléchargez le fichier zip.

Le dernier version de dubbo-admin utilise un modèle séparé front-end/back-end, donc il faut disposer d'un environnement Java et d'un environnement Node.js. Après avoir lancé le service, il faut également lancer l'interface web dubbo-admin-ui.

2.2 Configuration et génération

Ouvrez le service avec IDEA. Configurez l'adresse de Zookeeper dans dubbo-admin-service.

Configuration Zookeeper
admin.registry.address=zookeeper://127.0.0.1:2181
admin.config-center=zookeeper://127.0.0.1:2181
admin.metadata-report.address=zookeeper://127.0.0.1:2181

Configuration Nacos
#admin.registry.address=nacos://127.0.0.1:8848?group=DEFAULT_GROUP&namespace=public
#admin.config-center=nacos://127.0.0.1:8848?group=dubbo
#admin.metadata-report.address=nacos://127.0.0.1:8848?group=dubbo


Configurez le port par défaut, qui est 8080 par défaut mais peut provoquer des conflits. Les identifiants de connexion sont définis ci-dessous.

server.port=8001

admin.root.user.name=root
admin.root.user.password=root


Pour générer le package, il faut le faire au niveau supérieur, ce qui permettra de packager toutes les dépendances. Ensuite, lancez le service dubbo-admin-server.

2.3 Démarrage du service

Il faut d'abord lancer le service Zookeeper, sinon le démarrage échouera.

Après le démarrage, accédez à http://127.0.0.1:8080/Capture d'écran exemple

Si le service est arrêté, attendez 10 secondes avant de redémarrer, c'est une stratégie d'arrêt propre.

Étiquettes: dubbo XML ZooKeeper Spring Configuration

Publié le 16 septembre à 03h33