I. Visión general
registro de servicios: las instancias de servicio de almacenamiento y base de datos de servicio de la política de equilibrio de carga
En este documento para demostrar el registro del servicio Nacos proceso de descubrimiento y en el uso de proyectos de la nube a través de la primavera, caso cuadro de la ilustración muestra el flujo principal de papel:
En segundo lugar, el proveedor de servicios (NACOS proveedor)
Proveedor de servicios: significa la provisión de lado de aplicación reutilizables y servicios exigibles
2.1, una nueva primavera proyectos de arranque, pom.xml de la siguiente manera:
<?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, el archivo de configuración de la siguiente manera (application.yml):
server:
port: 8070
spring:
# 配置服务名称
application:
name: service-provider
# 配置 Nacos Server的地址
cloud:
nacos:
discovery:
server-addr: 192.168.145.129:8848
2.3, iniciar las clases de la siguiente manera (Aplicación):
Por anotada @EnableDiscoveryClient
registro de servicio abierta Nacos y el descubrimiento:
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, de la siguiente manera la parte delantera del controlador (Controller):
Escribir una RestController
API REST proporcionada para la prueba:
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, iniciar el proyecto para verificar el registro con éxito:
Acceso nacos Server a través de un navegador: http: //192.168.145.129: 8848 / nacos; a continuación, haga clic en la lista de servicios, se puede ver que el servicio ha sido registrado en el servidor nacos:
2.6 navegador a la interfaz de prueba de acceso:
En tercer lugar, el consumo de servicios (NACOS de consumo)
consumidor de servicios: significa que el partido va a iniciar una solicitud de llamada de servicio
Debido a que es el proyecto de Primavera de arranque, por lo que aquí en el consumidor final RestTemplate vienen a 服务提供者
llamar.
3.1, una nueva primavera proyectos de arranque, pom.xml de la siguiente manera:
<?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, el archivo de configuración de la siguiente manera (application.yml):
server:
port: 8071
spring:
# 配置服务名称
application:
name: service-consumer
# 配置 Nacos Server的地址
cloud:
nacos:
discovery:
server-addr: 192.168.145.129:8848
3.3, iniciar las clases de la siguiente manera (Aplicación):
Por anotada @EnableDiscoveryClient
registro de servicio abierta Nacos y el descubrimiento:
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, clase de configuración de la siguiente manera (configuración):
RestTemplate es proporcionada por el cliente primavera para acceder a los servicios de descanso que simplifica la comunicación con los servicios HTTP, unificado estándar REST y encapsulados HTTP enlace, simplemente escribe la URL entrante y el valor de retorno puede ser. HttpClient utilizan comúnmente, es un RestTemplate más elegantes servicios RESTful de llamadas en comparación con el método anterior.
Inyección clase de configuración RestTemplate , se puede utilizar en el proyecto:
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, de la siguiente manera la parte delantera del controlador (Controller):
En el controlador, por RestTemplate para acceder al proveedor de servicios, utilizando el nombre del servicio y el proveedor de servicios registrados en el servidor de acceso Nacos, se puede comprobar si los consumidores pueden encontrar un proveedor de servicios a nombre de servicio por Nacos servidor.
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 Elementos de inicio verificar el registro con éxito:
Acceso nacos Server a través de un navegador: http: //192.168.145.129: 8848 / nacos; a continuación, haga clic en la lista de servicios, se puede ver que el servicio ha sido registrado en el servidor nacos:
3.7 navegador a la interfaz de prueba de acceso:
IV Resumen
Al escribir proveedor de servicios (proveedor) y el módulo de servicios al consumidor (consumidor), y registrarlo en el servicio Nacos Server, utilizado por última vez en los consumidores de servicios RestTemplate (de consumo) para llamar al proveedor de servicios (proveedor) este proceso caso, para comprender mejor registro Nacos y el descubrimiento, así como su uso en el proyecto.