Tabla de contenido
Centro de configuración distribuida_Actualización dinámica de la configuración de Nacos
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