Spring Cloud Alibaba [Actualización dinámica de la configuración de Nacos, Introducción de la arquitectura de clúster de Nacos, Persistencia de datos de Nacos, Comprensión de la protección del tráfico distribuido] (5)

 

Tabla de contenido

Centro de configuración distribuida_Actualización dinámica de la configuración de Nacos

Centro de configuración distribuida_Centro de configuración distribuida de acoplamiento de servicio de Dubbo

Centro de configuración distribuida_Introducción a la arquitectura de clúster de Nacos 

Persistencia de datos de Centro de configuración distribuida_Nacos

 Centro de configuración distribuida_Configuración de clúster de Nacos

Protección del tráfico distribuido_Comprensión de la protección del tráfico distribuido 

Protección de tráfico distribuido_Conocer Sentinel


 

Centro de configuración distribuida_Actualización dinámica de la configuración de Nacos

Configurar actualización dinámica 

La actualización dinámica de la configuración solo debe anotarse con @RefreshScope.

método de anotación

@RestController
/* 只需要在需要动态读取配置的类上添加此注解就可以 */
@RefreshScope
public class ConfigController {
    
 @Value( "${config.config}" )
 private String appName;
  
 @GetMapping("/getConfig")
 public String nacosConfingTest2(){
      return(appName);
 }
}

Retroalimentación de efectos en tiempo real

1. El centro de configuración distribuido de Nacos realiza una actualización dinámica a través de la anotación ____.

una actualización

B RefreshScope

Alcance C

D arriba están todos mal

Centro de configuración distribuida_Centro de configuración distribuida de acoplamiento de servicio de Dubbo

POM introduce dependencias 

       <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
        </dependency>

Consola crea dataId

Crear bootstrap.yml 

spring:
 main:
   allow-bean-definition-overriding: true
   allow-circular-references: true
 application:
    #应用名字
   name: consumer-dubbo-order
 cloud:
   nacos:
     config:
        # 设置应用名字
       prefix: ${spring.application.name}
        # 配置文件后缀
       file-extension: yaml
        # 配置中心地址
       server-addr: 192.168.66.101:8848
 profiles:
    # 设置环境
   active: dev

prueba

Solicitud http://localhost:80/order/index

 

Centro de configuración distribuida_Introducción a la arquitectura de clúster de Nacos 

¿Por qué necesita construir un clúster de Nacos? 

De forma predeterminada, Nacos utiliza la base de datos integrada Derby para almacenar datos. Por lo tanto, si inicia varios nodos de Nacos con la configuración predeterminada, habrá problemas de coherencia en el almacenamiento de datos. Para resolver este problema, Nacos adopta un método de almacenamiento centralizado para admitir la implementación de clústeres y actualmente solo admite almacenamiento MySQL.

Nacos admite tres modos de implementación

1. Modo independiente: para pruebas y pruebas independientes.

2. Modo de clúster: se utiliza en entornos de producción para garantizar una alta disponibilidad.

3. Modo multiclúster: para escenarios de varios centros de datos. 

modo de clúster

Retroalimentación de efectos en tiempo real

1. Construya un clúster de Nacos para resolver el problema de _____.

Un dato es inconsistente

B seguro

C único punto de falla

D arriba están todos mal 

2. La base de datos de memoria predeterminada de Nacos es ____.

un SQLite

MySQL B

derbi c

D arriba están todos mal

Persistencia de datos de Centro de configuración distribuida_Nacos

Inicializar la base de datos 

El archivo de secuencia de comandos de la base de datos Nacos ingresa al directorio \nacos\conf en el paquete comprimido cuando descargamos el servidor Nacos, el archivo de inicialización: nacos-mysql.sql Aquí creo una base de datos llamada mynacos , y luego ejecuto la secuencia de comandos de inicialización.Después del éxito, se generarán 11 tablas;

Modificar el archivo de configuración 

Aquí está la necesidad de modificar el archivo de configuración de Nacos-server. Nacos-server es en realidad un proyecto Java o un proyecto Springboot. Su archivo de configuración está en el directorio nacos\conf, llamado application.properties, y la configuración de la fuente de datos se agrega en la parte inferior del archivo :

spring.datasource.platform=mysql

db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/mynacos?
characterEncoding=utf8&connectTimeout=1000&so
cketTimeout=3000&autoReconnect=true
db.user=root
db.password=123456

Inicie el servidor Nacos y la configuración de Nacos 

Inicie el servidor de Nacos primero e ingrese a la consola de Nacos después de que el inicio sea exitoso. En este momento, la consola de Nacos tiene un nuevo aspecto y los datos anteriores se han ido.

Nota: debido a la adición de una nueva fuente de datos, Nacos lee todos los archivos de configuración de mysql y la base de datos que acabamos de inicializar está limpia, por lo que, naturalmente, no habrá datos ni información para mostrar.

Cree un nuevo archivo de configuración DataID: nacos-config.yml en el espacio público (public), el contenido de configuración es el siguiente: 

server:
   port: 9989
nacos:
   config: 配置文件已持久化到数据库中...

Luego inicie el proyecto de demostración en Nacos (4). Después de que el servicio se inicie correctamente, observe la consola de Nacos de la siguiente manera

 

Verifique si se persiste en la base de datos 

 Centro de configuración distribuida_Configuración de clúster de Nacos

comienzo del grupo 

Simule 3 máquinas localmente a través de 3 puertos, los puertos son: 8848, 8858, 8868.

#copy3份解压后的nacos,修改各自的application.properties中的端口号,分别为:8848,8858,8868
server.port=8848
server.port=8858
server.port=8868

El archivo cluster.conf se coloca en el directorio conf respectivo y el contenido del archivo es:

192.168.66.100:8848
192.168.66.100:8858
192.168.66.100:8868

Inicie el servicio Nacos

./startup.sh

Use Nginx como equilibrio de carga para acceder a Nacos del clúster 

Instalación de ambiente

yum -y install gcc make automake pcre-devel
zlib zlib-devel openssl openssl-devel

Instalar Nginx

./configure
make && make install

Configurar el archivo nginx.conf

#定义upstream名字,下面会引用
upstream nacos{  
        #指定后端服务器地址
        server 192.168.66.100:8848;        
        server 192.168.66.100:8858;  
        server 192.168.66.100:8868;    
}
server {
  listen 80;
  server_name localhost;
  location / {
      proxy_pass http://nacos;        #引用upstream
 }
}

Reiniciar Nginx

docker restart nginx

El equilibrio de carga del acceso de nacos se puede lograr accediendo a nginx

solicitar http://localhost/nacos

 

Protección del tráfico distribuido_Comprensión de la protección del tráfico distribuido 

En un sistema distribuido, las llamadas mutuas entre servicios generan tráfico distribuido. Cómo proteger el tráfico a través de componentes y controlarlo de manera efectiva es uno de los desafíos técnicos de los sistemas distribuidos. 

¿Qué es la avalancha de servicios?

Supongamos que tengo un sistema de microservicios, que contiene cuatro microservicios de ABCD, todos los cuales están integrados en modo de clúster.

Problema de avalanchas:

Los microservicios se llaman entre sí, porque una falla en el servicio en la cadena de llamadas hace que todo el enlace sea inaccesible. 

solución 

Tecnología de protección de servicios

Spring Cloud admite varias tecnologías de protección de servicios: 

1, Hystrix

2, centinela

3、Resiliencia4J

Ideas de tolerancia a fallas del servicio Sentinel 

Sentinel es un componente de servicio tolerante a fallas de Spring Cloud Alibaba, y a menudo lo llamamos "centinela antitráfico". Es el santo patrón de los escenarios centrales de la promoción Double Eleven de Alibaba, y tiene escenarios de aplicaciones tolerantes a fallas de servicios integrados. Toma el tráfico como punto de entrada y logra el propósito de mantener la estabilidad del servicio a través de diversos métodos internos y externos de prevención y control.

 

Gobernanza de excepciones internas 

En Sentinel, podemos manejar las excepciones internas degradando y fusionando. La llamada degradación significa que cuando una llamada de servicio tiene un tiempo de espera de respuesta, una excepción de servicio, etc., podemos ejecutar una "lógica de degradación" dentro del servicio.

 

El llamado disyuntor significa que cuando la cantidad de llamadas anormales alcanza una cierta condición de juicio, por ejemplo, cuando la proporción de solicitudes de llamadas lentas y degradadas anormales alcanza un umbral y la cantidad de solicitudes degradadas alcanza un número determinado dentro del tiempo de la ventana, el microservicio deja de llamar al servicio de destino durante un período de tiempo, y todas las solicitudes entrantes ejecutan directamente la lógica de degradación. Por lo tanto, el disyuntor es el resultado acumulativo de "múltiples excepciones de llamadas de servicio". 

 

 control de flujo externo

La limitación del tráfico es un tipo de esquema de conformación del tráfico y control de flujo. En Sentinel, podemos establecer una regla de limitación de flujo para cada servicio de acuerdo con la capacidad de procesamiento del clúster y controlar el tráfico de acceso externo desde la dimensión de QPS o la cantidad de subprocesos concurrentes. Una vez que el número de visitas supere el umbral, las solicitudes posteriores serán de "fallo rápido", que es el método de limitación de tráfico más utilizado.

 

Retroalimentación de efectos en tiempo real

1. El siguiente ___ puede resolver el problema de la avalancha de servicio.

Un mecanismo de tiempo de espera

mecanismo fusible B

Control de flujo C

Todo lo anterior es correcto 

2. El control de flujo externo Sentinel se refiere a _____.

un fusible

B degradado

límite de corriente C

D aislado

Protección de tráfico distribuido_Conocer Sentinel

Sentinel es un proyecto de código abierto de Ali, que proporciona múltiples dimensiones, como control de flujo, degradación de disyuntores y protección de carga del sistema para garantizar la estabilidad de los servicios.

 Características clave de Sentinel

 

 Sentinel se divide en dos partes.

1. Consola (Tablero): La consola es principalmente responsable de administrar las reglas de inserción, el monitoreo, la administración de la asignación de límites de corriente del clúster, el descubrimiento de máquinas, etc.

2. Biblioteca principal (cliente de Java): no depende de ningún marco/biblioteca, puede ejecutarse en el entorno de tiempo de ejecución de Java 7 y superior, y también tiene un buen soporte para Dubbo/Spring Cloud y otros marcos.

Aviso:

Sentinel se puede dividir simplemente en la biblioteca principal de Sentinel y en el Panel de control. La biblioteca principal no depende de Dashboard, pero puede lograr los mejores resultados en combinación con Dashboard. 

¿Quién está usando Sentinel?

 

Comparación de Sentinel con Hystrix y resiliencia4j 

Retroalimentación de efectos en tiempo real

1. Las siguientes ventajas de Sentinel son ___.

A proporciona una consola lista para usar

B Rich estrategia de degradación de interruptores automáticos

C admite la configuración del tráfico

Todo lo anterior es correcto 

Supongo que te gusta

Origin blog.csdn.net/m0_58719994/article/details/131818284
Recomendado
Clasificación