springboot combiné avec dubbo

springboot combiné avec dubbo

Dubbo combiné avec spring doit être configuré dans le fichier de configuration. Lorsqu'il est combiné avec springboot, vous pouvez utiliser le fichier de configuration application.yml ou application.properties. Personnellement, je préfère utiliser springboot.
Sans parler de tant de choses, ce que vous obtenez du code est le plus profond.
Créer un projet maven

Créer un module de fournisseur Springboot

step0: Après la création, introduisez la dépendance du package jar dans pom.xml

 <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <!--web项目-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--dubbo ali apache-->
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo</artifactId>
            <version>2.7.3</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.apache.curator/curator-recipes -->
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-recipes</artifactId>
            <version>2.7.0</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.apache.dubbo/dubbo-spring-boot-starter -->
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>2.7.3</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>com.itzz</groupId>
            <artifactId>dubbo02-api</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
    </dependencies>

Étape 1 Modifiez le suffixe du fichier application.properties en suffixe .yml, la configuration dans le fichier de configuration

dubbo:
  application:
    name: dubbo02-provider
  registry:
    address: zookeeper://localhost:2181
  protocol:
    port: 20880
    name: dubbo
  scan:
    base-packages: com.itzz.provider.service.Impl
#自定义当前应用版本号
application:
  version: 1.0.0
#修改web项目启动默认的端口号
server:
  port: 8081

Créez la structure de package appropriée, puis créez les fonctions appropriées dans le package Impl du service


import com.itzz.provider.service.UserService;
import org.apache.dubbo.config.annotation.Service;

@Service(version = "${application.version}")
public class UserServiceImpl implements UserService {
    
    
    @Override
    public String getName(int id) {
    
    
        System.out.println("------1------");
        if (id == 1){
    
    
            return "张三";
        }else if (id == 2){
    
    
            return "李四";
        }
        return "傻蛋";
    }
}

@Service (version = "$ {application.version}") fait référence au numéro de version dans le fichier de configuration. Si la version est mise à jour ultérieurement, vous ne pouvez pas la modifier une par une, alors ajoutez des notes pertinentes. Ma structure de package ressemble à ceci:
Insérez la description de l'image ici

Créer un module api (module de structure maven)

Créez la même structure de package que le module du fournisseur dans le module api


public interface UserService {
    
    
    public String getName(int id);
}

Structure du package
Insérez la description de l'image ici

Créer un module de démarrage de printemps grand public

step0: package jar de pom.xml

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo</artifactId>
            <version>2.7.3</version>
        </dependency>
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>2.7.3</version>
        </dependency>
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-recipes</artifactId>
            <version>2.7.0</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>com.itzz</groupId>
            <artifactId>dubbo02-api</artifactId>
            <version>1.0-SNAPSHOT</version>
            <scope>compile</scope>
        </dependency>
    </dependencies>

Assurez-vous d'introduire la dépendance api, sinon une erreur sera signalée, indiquant que le suffixe du fichier de configuration généré automatiquement par springboot ne peut pas être trouvé dans l'interface UserService
step1: ou remplacez-le par le suffixe .yml. Ce sont les mêmes que les informations de configuration utilisées lors de la combinaison du ressort.

dubbo:
  application:
    name: dubbo02-consumer
  registry:
    address: zookeeper://localhost:2181
  scan:
    base-packages: com.itzz.provider.service.Impl
  #自定义当前应用版本号
application:
  version: 1.0.0
  #修改web项目启动默认的端口号
server:
  port: 8082

étape 2: créez une couche Web et le Web appelle directement les méthodes définies dans l'interface.

import com.itzz.provider.service.UserService;
import org.apache.dubbo.config.annotation.Reference;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class UserController {
    
    
    @Reference(version = "${application.version}")
    private UserService userService;
    @RequestMapping("getName")
    public String getName(Integer id){
    
    
        return userService.getName(id);
    }
}

La structure du package est la suivante:
Insérez la description de l'image ici
le projet est terminé ici, démarrez d'abord la classe principale du fournisseur, puis démarrez la classe principale du consommateur, le reste est à tester dans le centre de gestion.

Test dans le centre de contrôle

Entrez http: // localhost: 7001 / dans la page Web pour accéder au centre de gestion (bien sûr, le principe est que votre centre de gestion est activé). L'ajout d'un fournisseur est identique à la fonction ci-dessus, créant un cluster de fournisseurs.

Ensuite, voyez si les deux ont été enregistrés dans le centre de surveillance

Accédez à l'url de la page Web via le port du consommateur, comme indiqué ci-dessous:Insérez la description de l'image ici

Poids

Poids: j'ai défini un poids de 300 sur la deuxième classe d'implémentation fournie, de sorte que les chances d'accès seront supérieures à celles du premier fournisseur.
Insérez la description de l'image ici
Désactiver signifie interdire l'utilisation, et ce fournisseur n'est plus utilisé.
Insérez la description de l'image ici
Affiché dans le centre de service

Insérez la description de l'image ici
Insérez la description de l'image ici
Insérez la description de l'image ici
Insérez la description de l'image ici

Stratégie d'équilibrage de charge

La stratégie d'équilibrage de charge de Dubbo est l'accès aléatoire. Parce que la stratégie d'équilibrage de charge par défaut de Dubbo est aléatoire, en plus de l'interrogation aléatoire (deux fournisseurs se côtoient) et de la moindre concurrence (comme là où il y a moins de personnes dans la file d'attente).

Stratégie aléatoire

Aléatoire lorsque les poids sont les mêmes
Insérez la description de l'image ici
Insérez la description de l'image ici
Insérez la description de l'image ici

Stratégie de sondage

Insérez la description de l'image ici

Le nombre de visites chez le fournisseur est le même.
Insérez la description de l'image ici
Insérez la description de l'image ici

Je suppose que tu aimes

Origine blog.csdn.net/qq_39095899/article/details/107425777
conseillé
Classement