Deux, l'enregistrement et la découverte de service Printemps-Cloud Alibaba-Nacos-

I. Vue d'ensemble

Registre de services: les instances de service de stockage et un service d'équilibrage de charge de base de données politiques

       Le présent document pour démontrer processus d'inscription et de découverte de service Nacos dans la façon d'utiliser des projets Spring Nuage par cas, image Illustration cas montre le flux principal de papier:
schéma flux

Deuxièmement, le fournisseur de services (nacos-fournisseur)

Prestataire de services: désigne la fourniture de services réutilisables et appelables côté application

2.1, un nouveau démarrage des projets Spring, pom.xml suit comme:

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.6.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <groupId>com.zhoumo</groupId>
    <artifactId>nacos-provider</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <properties>
        <java.version>1.8</java.version>
        <maven.compiler.source>${java.version}</maven.compiler.source>
        <maven.compiler.target>${java.version}</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

        <spring-cloud.version>Greenwich.RELEASE</spring-cloud.version>
        <spring-cloud-alibaba.verion>0.9.0.RELEASE</spring-cloud-alibaba.verion>
    </properties>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>${spring-cloud-alibaba.verion}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>


    <dependencies>
        <!-- Spring Boot Start -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!-- Spring Boot End -->

        <!-- Nacos Start -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <!-- Nacos End -->
    </dependencies>

</project>

2.2, le fichier de configuration suit comme (application.yml):

server:
  port: 8070

spring:
  # 配置服务名称
  application:
    name: service-provider
  # 配置 Nacos Server的地址
  cloud:
    nacos:
      discovery:
        server-addr: 192.168.145.129:8848

2.3, commencer les classes comme suit (Application):

        Par annotée @EnableDiscoveryClientenregistrement et découverte de service Nacos ouvert:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

@SpringBootApplication
@EnableDiscoveryClient
public class NacosProviderApplication {

    public static void main(String[] args) {
        SpringApplication.run(NacosProviderApplication.class, args);
    }

}

2,4, suit l'extrémité avant du dispositif de commande (contrôleur):

        Ecrire une RestControllerAPI RESTful fourni pour le test:

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/provider")
public class ProviderController {

    @RequestMapping("/hello")
    public String Hello(){
        return "Hello, This is Nacos provider!";
    }
}

2.5, démarrer le projet afin de vérifier l'inscription réussie:

        l'accès nacos Server via un navigateur: http: //192.168.145.129: 8848 / nacos, puis cliquez sur la liste des services, vous pouvez consulter le service a été enregistré sur le serveur nacos:
Insérer ici l'image Description

2.6 navigateur à l'interface de test d'accès:

Insérer ici l'image Description

Troisièmement, le consommateur de services (nacos-consommation)

Service aux consommateurs: désigne la partie lancera une demande d'un appel de service

        Parce qu'il est le printemps projet Boot, voici donc à la fin des consommateurs RestTemplate viennent à 服务提供者appeler.

3.1, un nouveau démarrage des projets Spring, pom.xml suit comme:

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.6.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <groupId>com.zhoumo</groupId>
    <artifactId>nacos-consumer</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <properties>
        <java.version>1.8</java.version>
        <maven.compiler.source>${java.version}</maven.compiler.source>
        <maven.compiler.target>${java.version}</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

        <spring-cloud.version>Greenwich.RELEASE</spring-cloud.version>
        <spring-cloud-alibaba.verion>0.9.0.RELEASE</spring-cloud-alibaba.verion>
    </properties>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>${spring-cloud-alibaba.verion}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>


    <dependencies>
        <!-- Spring Boot Start -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!-- Spring Boot End -->

        <!-- Nacos Start -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <!-- Nacos End -->
    </dependencies>

</project>

3.2, le fichier de configuration suit comme (application.yml):

server:
  port: 8071

spring:
  # 配置服务名称
  application:
    name: service-consumer
  # 配置 Nacos Server的地址
  cloud:
    nacos:
      discovery:
        server-addr: 192.168.145.129:8848

3.3, commencer les classes comme suit (Application):

        Par annotée @EnableDiscoveryClientenregistrement et découverte de service Nacos ouvert:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

@SpringBootApplication
@EnableDiscoveryClient
public class NacosConsumerApplication {

    public static void main(String[] args) {
        SpringApplication.run(NacosConsumerApplication.class, args);
    }
}

3.4, classe de configuration suit comme (Configuration):

RestTemplate est fourni par le client Spring pour accéder aux services de repos qui simplifie la communication avec les services HTTP, unifié RESTful standard et encapsule lien HTTP, il suffit de taper l'URL entrante et la valeur de retour peut être. Généralement utilisé HttpClient, RestTemplate est un service RESTful d'appel plus élégant par rapport à la méthode précédente.

        configuration injection classe RestTemplate , peut être utilisé dans le projet:

import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;

@Configuration
public class RestTemplateConfigure {

    @Bean
    @LoadBalanced
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }

}

3,5, suit l'extrémité avant du dispositif de commande (contrôleur):

        Dans le contrôleur, par RestTemplate pour accéder au fournisseur de services, en utilisant le nom du service et fournisseur de services enregistrés dans l'accès Nacos Server, vous pouvez vérifier si les consommateurs peuvent trouver un fournisseur de services pour le nom de service par Nacos Server.

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

@RestController
@RequestMapping("/consumer")
public class ConsumerController {

    private final RestTemplate restTemplate;

    @Autowired
    public ConsumerController(RestTemplate restTemplate) {
        this.restTemplate = restTemplate;
    }

    @RequestMapping("/hello")
    public String Hello(){
        // 使用服务名称调用服务提供者
        return restTemplate.getForObject("http://service-provider/provider/hello", String.class);
    }
}

3.6 Éléments de démarrage vérifier l'inscription réussie:

        l'accès nacos Server via un navigateur: http: //192.168.145.129: 8848 / nacos, puis cliquez sur la liste des services, vous pouvez consulter le service a été enregistré sur le serveur nacos:
Insérer ici l'image Description

3.7 navigateur à l'interface de test d'accès:

Insérer ici l'image Description

IV Résumé

        En écrivant fournisseur de services (fournisseur) et les services aux consommateurs module (consommateurs), et l'enregistrer au service Nacos Server, utilisé pour la dernière des consommateurs de services RestTemplate (grand public) pour appeler le fournisseur de services (fournisseur) ce processus cas, pour mieux comprendre l'enregistrement Nacos et de découverte, ainsi que l'utilisation dans le projet.


Publié 47 articles originaux · louange gagné 16 · vues 70000 +

Je suppose que tu aimes

Origine blog.csdn.net/zorro_jin/article/details/105197250
conseillé
Classement