springCloud intègre Nacos en tant que centre de configuration et centre d'enregistrement

avant-propos

Cet article présente principalement que SpringCloud utilise Nacos comme centre de configuration et centre d'enregistrement, apprend la configuration de base de Naocs via une simple démo et effectue des appels d'interface entre différents microservices via RestTemplate et openfeign.

Configuration de l'installation Nacos

Les ressources d'apprentissage de Nacos comprennent principalement les deux éléments suivants

  1. Réseau de canalisations Nacos Réseau de canalisations Nacos
  2. Nacos GitHub NacosGitHub

Télécharger Nacos

Téléchargez la version correspondante de Nacos directement depuis GitHub https://github.com/alibaba/nacos/releases . Cet article utilise 2.1.0. S'il n'y a pas d'accélération GitHub, vous pouvez la télécharger directement depuis CSDN. Je l'ai téléchargée, complètement gratuit et aucun point n'est requis https: //download.csdn.net/download/whzhaochao/88074308

Démarrer les NAOC

Si startup.cmdla configuration dans la modification de Windows set MODE="standalone"est configurée en mode autonome, cliquez sur startup.cmdExécuter pour activer Nacos ou utilisez pour startup.sh -m standalonespécifier le mode de démarrage.

insérez la description de l'image ici
Lorsque nous voyons 8848, cela signifie que le démarrage a réussi. Entrez http://127.0.0.1:8848/nacos/ dans le navigateur , nom d'utilisateur nacos, mot de passe nacos pour vous connecter à Nacos.

configurer nacos

insérez la description de l'image ici
Après être entré dans Nacos, plusieurs concepts doivent être brièvement expliqués

Espaces de noms

Il peut être compris comme des environnements différents. Par exemple, dev/test/prod correspond à développement/test/officiel. Nous pouvons créer ces trois environnements séparément. Faites attention à l'identifiant de l'espace de noms (il sera généré automatiquement s'il n'est pas renseigné ). Nous ne le remplirons pas et le laisserons être généré automatiquement.
insérez la description de l'image ici

liste de configurations

La liste de configuration doit remplacer le fichier yml ou les propriétés de notre projet précédent. Nous choisissons l'environnement de développement pour créer un DataID en tant que service utilisateur et un groupe en tant que boutique. Ici, DataID peut être compris comme correspondant à l'un de nos microservices, et Group peut être compris comme l'un de nos projets. Nous faisons un centre commercial, il y aura un centre d'utilisateurs et un centre de commande. Ici, le projet de centre commercial peut être compris comme un groupe et le centre utilisateur peut être compris comme un identifiant de données.

insérez la description de l'image ici

la gestion des services

La gestion des services ici correspond à l'un de nos microservices. Lorsque notre microservice démarrera, il sera automatiquement enregistré ici. Il n'y a pas encore de données
insérez la description de l'image ici

Construction de l'environnement Spring Cloud

Nous faisons une démo très simple, la logique de base est d'activer un centre utilisateur, qui extrait la configuration utilisateur du centre de configuration nacos, puis fournit une interface pour obtenir des informations utilisateur via ID, crée une interface dans le centre de commande et appelle le interface du centre utilisateur Obtenir des informations utilisateur, la structure de base du projet est la suivante :
insérez la description de l'image ici
Ici, nous nous référons au POM avec une note : différentes versions de SpingBoot peuvent ne pas être compatibles avec cloud-alibaba et nacos, nous pouvons télécharger à partir de https://github .com/spring-cloud-incubator/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E Vérifiez la version compatible correspondante

    <properties>
        <spring-boot-start-web.version>2.3.11.RELEASE</spring-boot-start-web.version>
        <spring-cloud-alibaba.version>2.2.5.RELEASE</spring-cloud-alibaba.version>
    </properties>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
                <version>${spring-boot-start-web.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>${spring-cloud-alibaba.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
</project>

La configuration bootstrap.yml du centre utilisateur

Ici, nous examinons principalement deux configurations clés, nacos.config et nacos.discovery. config est principalement configuré pour extraire les informations de configuration de nacos. Ici, notre préfixe s'applique à notre service utilisateur d'arrière-plan nacos, l'espace de noms correspond à notre environnement de développement et le groupe correspond à notre boutique de projet.

server:
  port: 82
spring:
  profiles:
    active: dev
  application:
    name: user-service
  cloud:
    nacos:
      config:
        server-addr: 127.0.0.1:8848
        group: shop
        enabled: true
        prefix: user-service
        namespace: 6835622b-e819-4a78-a4d0-3fdc12b29ae9
        file-extension: yaml
      discovery:
        server-addr: 127.0.0.1:8848
        username: nacos
        password: nacos
        namespace: 6835622b-e819-4a78-a4d0-3fdc12b29ae9
        group: shop

Paramétrage des dépendances

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
        </dependency>

Jetons un coup d'œil à UserConfigcette classe, à travers laquelle nous pouvons extraire les données users.list configurées dans nacos.

@Configuration
@ConfigurationProperties("users")
@Data
public class UserConfig {
    
    
	private List<User> list;
}

Jetons un coup d'œil UserControllerCette classe fournit un moyen /user/{id}d'obtenir les informations utilisateur du centre de configuration nacos via l'id.

@RestController
@RequestMapping("/user")
@Slf4j
public class UserController {
    
    
    @Value("${server.port}")
    private Integer port;
    @Resource
    private UserConfig userConfig;
    @GetMapping("/{id}")
    public User info(@PathVariable Long id){
    
    
        return  userConfig.getList().stream().filter(x->x.getId().equals(id)).peek(x-> x.setPort(port)).findFirst().get();
    }
}

Activez le projet nacos-user, lorsque nous démarrons le projet nacos-user, vous pouvez voir le service utilisateur en arrière-plan nacos, le port est 82

insérez la description de l'image ici

Nous pouvons obtenir avec succès les informations de configuration de nacos via l'adresse IP et le port http://192.168.1.103:82/user/1 affichés sur nacos

insérez la description de l'image ici

Centre de commande

Configuration du centre de commande

server:
  port: 81

spring:
  profiles:
    active: dev
  application:
    name: order-service
  cloud:
    nacos:
      config:
        server-addr: 127.0.0.1:8848
        group: shop
        enabled: true
        prefix: order-service
        namespace: 6835622b-e819-4a78-a4d0-3fdc12b29ae9
        file-extension: yaml
      discovery:
        server-addr: 127.0.0.1:8848
        username: nacos
        password: nacos
        namespace: 6835622b-e819-4a78-a4d0-3fdc12b29ae9
        group: shop

Paramétrage des dépendances

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
            <version>2.2.6.RELEASE</version>
        </dependency>

Centre de commande, dans le centre de commande nous avons écrit deux interfaces /order/{id}en restTempateappelant l'interface du centre utilisateur et /order/feign/{id}en openFeignappelant l'interface du centre utilisateur. Il convient de noter ici qu'il RestTemplatefaut l'ajouter dans la configuration @LoadBalanced, sinon l'adresse de l'interface ne sera pas être trouvé, et il sera utilisé après l'avoir ajouté ribonL'équilibrage de charge ribontrouvera l'adresse de service correspondante à partir du centre d'enregistrement via le service utilisateur.

@RestController
@RequestMapping("/order")
public class OrderController {
    
    
    @Resource
    private RestTemplate restTemplate;
    @Resource
    private UserFeign userFeign;
    @GetMapping("/{id}")
    public User info(@PathVariable Long id){
    
    
       return restTemplate.getForObject("http://user-service/user/".concat(id.toString()), User.class);
    }
    @GetMapping("/feign/{id}")
    public User feign(@PathVariable Long id){
    
    
        return userFeign.getUser(id);
    }
}
@Configuration
public class RestTempleteConfig {
    
    
    @LoadBalanced
    @Bean
    public RestTemplate restTemplate() {
    
    
        return new RestTemplate();
    }
}

@FeignClient(value = "user-service")
@Component
public interface UserFeign {
    
    
    @GetMapping("user/{id}")
    User getUser(@PathVariable Long id);
}

Démarrer nacos-order, il y aura l'un des services nacos order-service, nous accédons à l'interface correspondante via l'IP et le port, et terminons l'appel au service du centre utilisateur
insérez la description de l'image ici
Entrez http://192.168.1.103:81/order/1 Appelez l'interface du centre utilisateur via restTempate Entrez
http : //192.168.1.103:81/order/feign/2 appelle l'interface du centre utilisateur via openFeign

Ici, nous copions la configuration de démarrage du service utilisateur et écrasons et service.portdémarrons deux services utilisateur
insérez la description de l'image ici

image.png

Vous pouvez voir qu'il existe deux instances de service utilisateur d'arrière-plan nacos

image.png
Lorsque le service de commande est appelé, il est fourni par différents services utilisateurs pour réaliser l'équilibrage de charge.

image.png

enfin

Cet article est nacosune introduction à l'apprentissage, et plus nacosde contenu connexe sera appris plus tard
Code source du projet : https://gitee.com/whzhaochao/nacos-study

Je suppose que tu aimes

Origine blog.csdn.net/whzhaochao/article/details/131867282
conseillé
Classement