Red de conocimiento informático - Problemas con los teléfonos móviles - Cómo funciona Sentinel y cómo utilizarlo

Cómo funciona Sentinel y cómo utilizarlo

Sentinel es un componente de control de tráfico totalmente funcional, liviano y de alta disponibilidad adecuado para arquitecturas de servicios distribuidos. Se utiliza principalmente como entrada de tráfico para ayudar a los usuarios a proteger la estabilidad de sus servicios en múltiples aspectos, como control de tráfico, degradación de la convergencia y protección de la carga del sistema. Así es como funciona y cómo usarlo.

En primer lugar, el principio de funcionamiento de centinela.

Cuando se llama al rol de centinela en la interfaz, la interfaz se abstraerá en un recurso y la persona que llama debe solicitarlo. recurso El método utilizado es SphU.entry (). Si la aplicación puede tener éxito, significa que el tráfico no está restringido; de lo contrario, se generará una BlockException y parece que el tráfico ha sido limitado.

Al ejecutar hacia abajo desde el método SphU.entry() se ingresará al método Sph.entry(). Entry (), después de ingresar, creará un contexto para cada aplicación. Este contexto se utiliza para registrar el contexto de la solicitud, y luego se creará un conjunto de espacios para cada recurso. Este conjunto de espacios es el modelo de cadena de responsabilidad. Cada ranura implementa una función y las solicitudes se ejecutarán una por una en las ranuras, que incluyen principalmente las siguientes ranuras:

Entre ellas, ClusterBuilderSlot aplica un ClusterNode global a cada recurso, y el ClusterNode registra el de cada hilo. llamadas a la interfaz (número total de llamadas, número de éxitos, número de fallas, etc.) en StatiscSlot, y estas condiciones se registran en StatiscSlot. StatiscSlot utiliza el método estadístico de ventana deslizante, que tiene dos parámetros importantes: longitud de la ventana (windowLength), intervalo (intervalInSec), etc. Si la longitud de la ventana es de 500 ms, el tiempo del intervalo es el mismo que la longitud de la ventana. Si la longitud de la ventana es de 500 ms y el intervalo de tiempo es de 1 segundo, entonces el sistema solicitará dos ventanas y luego calculará la marca de tiempo actual como tiempo para determinar a qué ventana pertenece. La lógica específica es la siguiente:

Se puede ver que a través de la ventana de tiempo, se puede asignar una solicitud a una ventana y luego se puede calcular el tráfico por unidad de tiempo y realizar el control de flujo. La degradación del disyuntor también es un módulo muy central. La ventana de tiempo es un módulo muy central porque puede calcular condiciones anormales por unidad de tiempo. A través de estadísticas continuas, cuando el tiempo de una ventana es menor que el tiempo actual, se eliminará de la matriz de ventanas actual y se colocará en una lista, y se iniciará una tarea programada localmente para actualizar periódicamente los datos de la ventana en la lista a un local. archivo. . Cuando el panel envía una solicitud para obtener estadísticas, los datos del archivo se devuelven al panel localmente para que el usuario pueda ver las estadísticas.

En segundo lugar, utiliza centinelas.

Actualmente, existen cuatro formas principales de utilizar centinelas.

1. Úselo directamente en el código

Llame directamente a la función SphU.entry() en el código Dado que este método es una intrusión directa en el código, no se recomienda. usar

p>

2. Agregar a través de comentarios

Agregue el comentario @SentinelResource en la interfaz llamada, de modo que cuando se llame a la interfaz. Spring mejorará la interfaz que contiene la anotación SentinelResource a través de AOP, utilizará la notificación circundante @Around para cortar y capturar, y ejecutará SphU.entry() antes de ejecutar el método de destino. Este es un método mejor, pero no es adecuado para configuraciones a gran escala y, si hay muchas interfaces, agregar comentarios uno por uno será engorroso. Agregar configuración al panel

El código local agrega el paquete centinela, que es equivalente al cliente. El panel se implementa en el servidor y la configuración centinela se puede agregar a través de la página de configuración en el panel. El centinela local escucha los últimos mensajes de configuración a través de zk. Cuando se modifica la configuración, zk enviará los mensajes de configuración al cliente mediante inserción activa.

3. Implementación del clúster Sentinel

La limitación de corriente y la degradación del disyuntor en Sentinel se pueden completar localmente o controlarse mediante múltiples instancias en el clúster.

En el modo de clúster, una instancia es el servicio y las instancias restantes son clientes que se comunican a través de sockets de malla. El cliente realiza estadísticas de tráfico, control de flujo y degradación de disyuntores enviando solicitudes al servicio, y el servicio maneja las estadísticas de tráfico, control de flujo y degradación de disyuntores de manera unificada. El descubrimiento de servicios en el lado del cliente se logra mediante la configuración dinámica del panel.

Cuarto, comunicación local y del panel de Sentinel

El panel local y el Sentinel implementan ty simple a través de ty-ty. Proporciona métodos de codificación y decodificación http: HttpRequestDecoder y HttpResponseEncoder), y los obtiene localmente a través de SPI. hereda la clase CommandHandler y encuentra la clase que contiene la anotación CommandMapping en estas clases. El campo de nombre de CommandMapping es la URL en http, crea una asignación y registra la relación de asignación entre la URL y el controlador. solicitud desde el panel Cuando, busque el controlador en la URL y procese la solicitud. De hecho, es similar al MappingHandler en Spring MVC.

V. Resumen

Sentinel es potente y fácil de usar, y puede ayudarle a crear rápidamente un sistema de seguimiento en línea.