Construcción y uso de SpringCloud-Nacos

Para obtener la dirección del proyecto, vaya a gitee para descargar y ver https://gitee.com/xwb1056481167/spring-cloud

Nacos (Servicio de configuración y nombres dinámicos)

La función principal:

Degradación del límite actual del servicio : de forma predeterminada, admite el acceso a la función de degradación del límite actual de WebServlet, WebFlux, OpenFeign, RestTemplate, Spring Cloud Gateway, Zuul, Dubbo y RocketMQ. Puede modificar las reglas de degradación del límite actual en tiempo real a través de la consola durante el tiempo de ejecución, y también admite límites de visualización Degradación de flujo Monitoreo de métricas.

Registro y descubrimiento de servicios : adáptese a los estándares de descubrimiento y registro de servicios de Spring Cloud e integre el soporte de Ribbon de forma predeterminada.

Gestión de configuración distribuida : admite la configuración externa en sistemas distribuidos y se actualiza automáticamente cuando cambia la configuración.

Capacidades impulsadas por mensajes: cree capacidades impulsadas por mensajes para aplicaciones de microservicio basadas en Spring Cloud Stream.

Transacción distribuida : use las anotaciones @GlobalTransactional para resolver problemas de transacciones distribuidas de manera eficiente y sin ninguna intrusión en el negocio. .

Almacenamiento de objetos en la nube de Alibaba : servicios de almacenamiento en la nube masivos, seguros, de bajo costo y altamente confiables proporcionados por Alibaba Cloud. Soporte para almacenar y acceder a cualquier tipo de datos en cualquier aplicación, en cualquier momento y en cualquier lugar.

Programación de tareas distribuida : proporciona servicios de programación de tareas de segundo nivel, precisos, altamente confiables y de alta disponibilidad (basados ​​en la expresión Cron). Al mismo tiempo, proporciona modelos de ejecución de tareas distribuidos, como tareas de cuadrícula. La tarea de cuadrícula admite la distribución uniforme de tareas cuánticas marinas a todos los trabajadores (programadorx-cliente) para su ejecución.

Servicio de mensajes cortos en la nube de Alibaba : un servicio global de mensajes cortos con capacidades de comunicación interconectadas amigables, eficientes e inteligentes para ayudar a las empresas a construir rápidamente canales de acceso de clientes.

Nacos = Eureka + Config + Bus

Instalación de nacos

Dirección de descarga:  https://github.com/alibaba/nacos/releases
1.1.4 Dirección de descarga
https://github.com/alibaba/nacos/releases/download/1.1.4/nacos-server-1.1.4. Zip
https://github.com/alibaba/nacos/releases/download/1.1.4/nacos-server-1.1.4.tar.gz

Ingrese la siguiente dirección en el navegador

http: // localhost: 8848 / nacos // Nombre de usuario contraseña nacos / nacos

Integración de proyectos Nacos

Cree un nuevo cloudalibaba-provider-payment9001, cloudalibaba-provider-payment9002 y cree 9001, 9002 y 9001 a continuación.

Primero, integre el jar en el proyecto total spring-cloud (o especifique el número de versión en el proveedor directo)

<!-- SpringCloud alibaba -->
<dependencyManagement>
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-alibaba-dependencies</artifactId>
        <version>2.1.0.RELEASE</version>
        <type>pom</type>
        <scope>import</scope>
    </dependency>
</dependencyManagement>

1. Nuevo proveedor de servicios cloudalibaba-provider-payment9001,9002

1 、 pom.xml

<!-- alibaba nacos 服务端 -->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

2 、 l 配置

server:
  port: 9001
spring:
  application:
    name: nacos-payment-provider
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #配置Nacos地址
management:
  endpoints:
    web:
      exposure:
        include:  '*'

3. La clase de inicio principal

@SpringBootApplication
@EnableDiscoveryClient
public class PaymentMain9001 {
    public static void main(String[] args) {
        SpringApplication.run(PaymentMain9001.class, args);
    }
}

4 、 controlador

@RestController
public class PaymentController {
    @Value("\${server.port}")
    private String serverPort;
    @GetMapping(value = "/payment/nacos/{id}")
    public String getPaymentById(@PathVariable("id") Long id) {
        return "nacos registry ,serverPort: +" + serverPort + "\\t id " + id;
    }
}

Complete la construcción de 9001, lo mismo que el anterior para 9002 (omitido aquí).

2. Nuevo servicio consumidor cloudalibaba-consumer-nacos-order83

1 、 pom.xml

<!-- alibaba nacos 服务端 -->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

2 、 l

server:
  port: 83
spring:
  application:
    name: nacos-payment-comsumer
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #配置Nacos地址
management:
  endpoints:
    web:
      exposure:
        include:  '*'
#消费者将要去访问的微服务名称,(注册成功进nacos的微服务提供者)
service-url:
  nacos-user-service: http://nacos-payment-provider

3. La clase de inicio principal

@SpringBootApplication
@EnableDiscoveryClient
public class NacosConsumerMain83 {
    public static void main(String[] args) {
        SpringApplication.run(NacosConsumerMain83.class, args);
    }
}

4 、 restTemplate 和 Controlador

//restTemplate类
@Configuration
public class ApplicationContextConfig {
    @Bean
    @LoadBalanced
    public RestTemplate getRestTemplate() {
        return new RestTemplate();
    }
}
//controller
@RestController
@Slf4j
public class OrderNacosController {
    @Resource
    private RestTemplate restTemplate;
    @Value("\${service-url.nacos-user-service}")
    private String nacosUserService;

    @GetMapping("/consumer/payment/nacos/{id}")
    public String paymentInfo(@PathVariable("id") Long id) {
        return restTemplate.getForObject(nacosUserService + "/payment/nacos/" + id, String.class);
    }
}

Resultados de la prueba (actualización, acceso de sondeo 9001,9002)

Comparación de registro


Cómo cambiar entre AP y CP compatible con nacos

curl -X PUT '\ $ NACOS_SERVER: 8848 / nacos / v1 / ns / operator / switches? entrada = serverMode & value = CP'

Servicio de registro y descubrimiento de las similitudes y diferencias entre los tres centros de registro de Eureka, Zookeeper y Consul (teoría CAP)

Introducción a la teoría CAP

Como teoría básica del sistema distribuido, la teoría CAP describe un sistema distribuido en las siguientes tres características:

  • Consistencia
  • Disponibilidad (disponibilidad)
  • Tolerancia de partición

Coherencia: una vez que el sistema distribuido completa una determinada operación de escritura, cualquier operación de lectura debe obtener el último valor escrito por la operación de escritura. Equivale a exigir que todos los nodos de un sistema distribuido mantengan la coherencia de los datos en todo momento.

Disponibilidad (disponibilidad): las operaciones de lectura y escritura siempre se pueden realizar con normalidad. En pocas palabras, el cliente siempre puede acceder normalmente y obtener una respuesta normal del sistema. Desde el punto de vista del usuario, no habrá problemas como fallas en el funcionamiento del sistema o tiempo de espera de acceso.

Tolerancia de partición: cuando falla un nodo o una partición de red en un sistema distribuido, todo el sistema puede proporcionar servicios externos que cumplan con la coherencia y la disponibilidad. Es decir, la falla parcial no afecta el uso general. De hecho, al diseñar un sistema distribuido, consideraremos las fallas causadas por errores, hardware, redes, etc., por lo que incluso si fallan algunos nodos o redes, requerimos que se continúe usando todo el sistema (no continuar usando, equivalente a Solo hay una partición, por lo que no hay consistencia y disponibilidad posteriores)

Como máximo, se pueden cumplir dos condiciones al mismo tiempo (por el motivo, consulte: https://www.cnblogs.com/zhuyeshen/p/11720655.html).

El núcleo de la teoría CAP es que un sistema distribuido no puede satisfacer los tres requisitos de consistencia, disponibilidad y tolerancia a fallas de partición al mismo tiempo. Por lo tanto, de acuerdo con el principio CAP, las bases de datos NoSQL se dividen en tres categorías que cumplen con los principios de CA , CP y AP.:

QUE

Los clústeres de un solo punto, los sistemas que cumplen con la coherencia y la disponibilidad, generalmente no son fuertes en escalabilidad.

CP

Un sistema que cumple con la coherencia y la tolerancia a fallas de partición generalmente no tiene un rendimiento particularmente alto.

AP

Los sistemas que cumplen con la disponibilidad y la tolerancia a fallas de la partición generalmente pueden tener requisitos más bajos de consistencia.

Nombre del componente Idioma GORRA Verificación de monitoreo de servicio Interfaz expuesta externamente Integración SpringCloud
eureka Java AP Puede equiparse con soporte http Integrado
cónsul Vamos CP apoyar http: DNS Integrado
cuidador del zoológico Java CP apoyar Cliente Integrado

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Supongo que te gusta

Origin blog.csdn.net/www1056481167/article/details/113612177
Recomendado
Clasificación