Artículo anterior: Centro de configuración de Nacos
Tabla de contenido
Introducción centinela ( introducción oficial )
Sentinel es un componente de control de flujo, disyuntor y degradación para microservicios nativos de la nube. Reemplace Hystrix para abordar los problemas: avalancha de servicio, degradación del servicio, disyuntor de servicio, limitación de corriente de servicio
Histrix:
Consumidor de servicios -> Llame al proveedor de servicios
Introduzca Hystrix en la persona que llama -> Cree un proyecto de panel separado -> Turbine
1) Cree su propio panel de plataforma de monitoreo
2) No se proporciona ninguna interfaz de interfaz de usuario para la configuración, como el disyuntor del servicio y la degradación del servicio (y estaba escribiendo código que invadió nuestro entorno de programa fuente)
Sentinel:
1) Componentes de consola/panel de control implementables de forma independiente.
2) Reducir el desarrollo de código y completar el control detallado (microservicios de entrega) a través de la configuración de la interfaz de usuario.
Sentinel tiene las siguientes características:
Escenarios de aplicación enriquecidos : Sentinel se ha hecho cargo de los escenarios centrales de la promoción de tráfico Double Eleven de Alibaba en los últimos 10 años, como las ventas flash (es decir, el tráfico en ráfagas se controla dentro del rango que la capacidad del sistema puede soportar), la reducción de picos de mensajes y llenado de valles, y disyuntor en tiempo real para usuarios aguas abajo, aplicaciones no disponibles, etc.
Monitoreo completo en tiempo real : Sentinel también proporciona funciones de monitoreo en tiempo real. Puede ver los datos de segundo nivel de una sola máquina conectada a la aplicación en la consola, e incluso el estado de operación resumido de un clúster de menos de 500 máquinas.
Amplio ecosistema de código abierto : Sentinel proporciona módulos de integración listos para usar con otros marcos/bibliotecas de código abierto, como la integración con Spring Cloud, Dubbo y gRPC. Solo necesita introducir las dependencias correspondientes y realizar una configuración simple para conectarse rápidamente a Sentinel.
Puntos de extensión SPI completos : Sentinel proporciona puntos de extensión SPI completos y fáciles de usar. Puede personalizar rápidamente la lógica implementando puntos de extensión. Por ejemplo, gestión de reglas personalizadas, fuentes de datos adaptadas, etc.
Características principales de Sentinel : Ecosistema de código abierto de
Sentinel :
Despliegue centinela
Dirección de descarga: https://github.com/alibaba/Sentinel/releases Usamos v1.8.0
para iniciar: java -jar sentinel-dashboard-1.8.0.jar y
nombre de usuario/contraseña: sentinel/sentinel
Transformación del servicio
- servicio al consumidor
lagou-service-autodeliver-8094-sentinel
- confiar
<dependencies>
<!--sentinel 核⼼环境 依赖-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- <dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>-->
</dependencies>
- Configuración
server:
port: 8094
spring:
application:
name: m-service-autodeliver
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848,127.0.0.1:8849,127.0.0.1:8850
sentinel:
transport:
dashboard: 127.0.0.1:8888
port: 8719
#针对的被调⽤⽅微服务名称,不加就是全局⽣效
m-service-autodeliver:
ribbon:
#请求连接超时时间
ConnectTimeout: 2000
#请求处理超时时间
ReadTimeout: 5000
#对所有操作都进⾏重试
OkToRetryOnAllOperations: true
####根据如上配置,当访问到故障请求的时候,它会再尝试访问⼀次当前实例(次数由MaxAutoRetries配置),
####如果不⾏,就换⼀个实例进⾏访问,如果还不⾏,再换⼀次实例访问(更换次数由MaxAutoRetriesNextServer配置),
####如果依然不⾏,返回失败信息。
MaxAutoRetries: 0 #对当前选中实例重试次数,不包括第⼀次调⽤
MaxAutoRetriesNextServer: 0 #切换实例的重试次数
NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RoundRobinRule #负载策略调整
# 暴露健康接⼝的细节
management:
endpoints:
web:
exposure:
include: "*"
endpoint:
health:
show-details: always
#负载策略调整
logging:
level:
# Feign⽇志只会对⽇志级别为debug的做出响应
com.w.edu.service.ResumeServiceFeignClientFallback: debug
-
grupo de nacos
-
Acceda a la interfaz http: http://localhost:8094/autodeliver/checkState/1545132 varias veces para observar la consola Sentinel
Conceptos clave de centinela
Reglas de control de flujo: enlaces de puntos de clúster, reglas de control de flujo
modo directo
- Tipo de QPS : (Número de solicitudes por segundo) Limita el flujo cuando el QPS que llama al recurso alcanza el umbral
-
Si la nueva regla de control de flujo
está agrupada : si está agrupada Limitación actual
Modo de control de flujo :
Directo : cuando la llamada de recurso alcanza la condición de limitación actual, el flujo se limita directamente
Asociación : cuando la llamada de recurso asociada alcanza el umbral, la El flujo es limitado.
Enlace propio : Sólo se registra el enlace especificado.
Efecto del control del flujo :
Fallo rápido : Fallo directo, generando una excepción.
Calentamiento : Según el valor del factor de carga en frío (predeterminado 3), a partir del Umbral/factor de carga en frío, después del tiempo de calentamiento, se
alcanza el umbral QPS establecido.
Cola y espera : cola a una velocidad uniforme para permitir que las solicitudes pasen a una velocidad uniforme. El tipo de umbral debe establecerse en QPS, de lo contrario ser inválido. -
Múltiples accesos en 1 segundo, falla rápida
- Número de subprocesos: cuando el número de subprocesos que llaman recursos alcanza el umbral, la corriente es limitada.
- Múltiples accesos en 1 segundo, falla rápida
modo de asociación
Cuando la llamada al recurso asociado alcanza el umbral, se limita a sí misma. Por ejemplo, la interfaz de registro de usuario necesita llamar a la interfaz de verificación de la tarjeta de identificación (a menudo la interfaz de verificación de la tarjeta de identificación). Si la solicitud de la interfaz de verificación de la tarjeta de identificación alcanza el umbral, utilice el asociación para llamar a la interfaz de registro de usuario realizar limitación actual
@RestController
@RequestMapping("/user")
public class UserController {
/**
* ⽤户注册接⼝
* @return
*/
@GetMapping("/register")
public String register() {
System.out.println("Register success!");
return "Register success!";
}
/**
* 验证注册身份证接⼝(需要调⽤公安户籍资源)
* @return
*/
@GetMapping("/validateID")
public String findResumeOpenState() {
System.out.println("validateID");
return "ValidateID success!";
}
}
-
Crear reglas limitantes actuales
-
Múltiples accesos en 1 segundo, solicitudes intensivas a la interfaz de verificación /user/validateID, encontraremos que la interfaz /user/register también está restringida.
modo de enlace
Enlace se refiere al enlace de solicitud (cadena de llamadas)
En modo de enlace, se controla el tráfico de la entrada del enlace de llamada donde se encuentra el recurso. El recurso de entrada debe configurarse en la regla, es decir, el nombre de contexto de la entrada del enlace de llamada.
En la siguiente figura se muestra un árbol de llamadas típico: (Proporcionado por Alibaba Cloud)
En la figura anterior, las solicitudes de los portales Entrance1
se Entrance2
llaman al recurso Nodo A. Sentinel permite
la limitación del flujo de recursos basándose únicamente en la información estadística de un determinado portal de llamadas. Por ejemplo, en el modo de enlace, configure el recurso de entrada en para Entrance1
indicar que solo
Entrance1
las llamadas de la entrada se registrarán en las estadísticas limitantes actuales del NodoA, independientemente de Entrance2
las llamadas entrantes.
efecto de control de flujo
Fallo rápido : fallo directo, generando una excepción
Calentamiento : De acuerdo con el valor del factor de carga en frío (predeterminado 3), a partir del umbral/factor de carga en frío, después del tiempo de calentamiento, se alcanza el umbral QPS establecido. esperando: haga cola a una velocidad uniforme para que las solicitudes sean
uniformes . Pasado, el tipo de umbral debe establecerse en QPS; de lo contrario, no será válido
Fallar rapido
Falla directamente y lanza una excepción
Calentamiento
A través del modo Warm Up (modo de precalentamiento), el tráfico que pasa aumenta lentamente y, después del tiempo de calentamiento establecido, alcanza el valor establecido de la tasa de procesamiento de solicitudes del sistema.
El modo de calentamiento comenzará desde 1/3 del umbral de QPS establecido y aumentará lentamente hasta el valor de configuración de QPS de forma predeterminada.
Esperando en la fila
En el modo de cola y espera , el intervalo de tiempo entre solicitudes está estrictamente controlado, es decir, las solicitudes se pasan a una velocidad uniforme y algunas solicitudes pueden ponerse en cola y esperar, generalmente se usa en escenarios como corte de picos. y llenado de valles de colas de mensajes. Es necesario establecer un tiempo de espera específico. Cuando el tiempo de espera calculado exceda el tiempo de espera, la solicitud será rechazada.
Cuando llega mucho tráfico, las solicitudes no se rechazan directamente, sino que se ponen en cola y se pasan (procesan) una por una a una velocidad constante. Si las solicitudes pueden esperar, se procesarán. Si no pueden esperar (tiempo de espera > tiempo de espera), serán rechazados.
![[Error en la transferencia de la imagen del enlace externo. El sitio de origen puede tener un mecanismo anti-leeching. Se recomienda guardar la imagen y cargarla directamente (img-9aNig8vD-1684245570404)(h](https://img-blog. csdnimg.cn/7b33aa6ec9ba428fba582e0b07a59dec.png)
efecto de cola