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:
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 @EnableDiscoveryClient
enregistrement 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 RestController
API 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:
2.6 navigateur à l'interface de test d'accès:
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 @EnableDiscoveryClient
enregistrement 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:
3.7 navigateur à l'interface de test d'accès:
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.