Práctica de protección del tráfico basada en una puerta de enlace nativa en la nube

fondo

En una arquitectura de sistema distribuido, cada solicitud pasará por muchas capas de procesamiento, como desde la puerta de enlace de ingreso al servidor web hasta la llamada entre servicios y luego a la caché de acceso al servicio o a la base de datos y otros tipos de almacenamiento. En el sistema de protección del tráfico de la figura siguiente, normalmente seguimos el principio del embudo de tráfico para la protección del tráfico. En cada capa del enlace de tráfico, debemos llevar a cabo protección de tráfico específica y medidas tolerantes a fallas para garantizar la estabilidad del servicio; al mismo tiempo, debemos preposicionar la protección de tráfico tanto como sea posible, por ejemplo. , parte del tráfico de solicitud HTTP El control se carga frontalmente en la capa de puerta de enlace y una parte del tráfico se controla de antemano, para evitar que el exceso de tráfico llegue al backend, lo que provoca presión en el backend y desperdicio de recursos. Es muy necesario proteger el tráfico en el lado de la puerta de enlace.

En escenarios de pasarelas de tráfico tradicionales, el control de acceso al tráfico es un requisito muy común. Por ejemplo, en nginx, limit_req es la configuración de limitación de corriente más común, y en Envoy, también admite modos de limitación de corriente local y global, pero ambos tienen sus limitaciones. En términos de riqueza de funciones, los dos no son tan buenos como los proyectos comunes de código abierto con componentes limitantes actuales, como Sentinel, Hystrix, etc. En escenarios de uso reales, la viabilidad también es muy débil, por ejemplo, limitación de corriente del clúster sin No se admite la pérdida de rendimiento.

La función de protección del tráfico de la puerta de enlace nativa de la nube utiliza el kernel Sentinel en la capa inferior y se ha reforzado y modificado hasta cierto punto. Sentinel toma el tráfico y la tolerancia a fallas como punto de partida y ayuda a garantizar la estabilidad de los servicios y puertas de enlace desde múltiples dimensiones, como control de tráfico, aislamiento de llamadas inestables, degradación de disyuntores, protección del tráfico de puntos de acceso, protección adaptativa del sistema, control de flujo de clústeres, etc. , al tiempo que proporciona funciones de análisis y seguimiento del tráfico de segundo nivel. Sus productos comercializados no solo se utilizan ampliamente en los campos internos de Taobao, Tmall y otros campos del comercio electrónico de Alibaba, sino que también tienen mucha práctica en las finanzas de Internet, la educación en línea, los juegos, las industrias de transmisión en vivo y otras grandes empresas gubernamentales y centrales.

Como puerta de enlace en la nube de próxima generación que integra seguridad, tráfico y microservicios, la puerta de enlace nativa de la nube recibió una posición para su uso en todos los escenarios desde el comienzo de su nacimiento. Por esta razón, la protección del tráfico también es una capacidad necesaria para ella. En términos de capacidades de protección del tráfico, tiene las siguientes ventajas:

  • Tiene las mismas funciones avanzadas de protección del tráfico que proyectos populares de protección del tráfico como Sentinel y Hystrix, y todavía se actualiza de forma iterativa.
  • Naturalmente, admite el control de flujo de clúster amortizado, de modo que los usuarios no necesitan preocuparse por la cantidad de puertas de enlace y nodos de servicio ascendentes.
  • Proporciona monitoreo de segundo nivel de soporte y admite indicadores de tráfico enriquecidos como QPS, QPS rechazado, QPS anormal, RT y concurrencia. Al mismo tiempo, admite la visualización de datos históricos y realiza convenientemente la ruta de uso de observación primero y luego configurar reglas de protección.
  • Las reglas de protección del tráfico entran en vigor en segundos. Después de configurarlas, no es necesario esperar a que entren en vigor en segundos.

Introducción al modelo de tráfico Sentinel

Como se muestra en la siguiente figura, la protección del tráfico se refiere a establecer una estrategia de barrera adecuada para diferentes tipos de tráfico. Bajo la observación de la barrera, una vez que se determina que el tráfico no puede pasar, debe interceptarse a tiempo para proteger el tráfico. puerta de enlace y back-end upstream.El papel del servicio.

La puerta de enlace nativa de la nube actualmente admite tres capacidades diferentes de protección del tráfico: limitación de corriente QPS, control de concurrencia y fusión. Este artículo explicará los efectos específicos y los escenarios aplicables de estas tres funciones.

  • Limitación de corriente QPS

Este es el escenario más común de protección del tráfico. Como sugiere el nombre, consiste en limitar el tráfico de una determinada ruta para que solo pueda acceder a la puerta de enlace dentro de una determinada velocidad, a fin de evitar que el tráfico de una determinada ruta aumente. provocando el colapso de los servicios back-end. La puerta de enlace nativa de la nube no solo admite la limitación del tráfico a nivel de enrutamiento, sino que también admite, naturalmente, el control del tráfico de clúster amortizado. Los usuarios no necesitan preocuparse por la cantidad de nodos de puerta de enlace o la cantidad de nodos de servicio back-end. Solo necesitan configurar un umbral general para implementar fácilmente el control de tráfico para un cierto El umbral general límite actual de una ruta.

  • control de concurrencia

La implementación específica del control de concurrencia es mantener un valor de concurrencia en tiempo real (este valor se refiere al valor paralelo máximo del tráfico de enrutamiento en un segundo, es decir, el número de solicitudes sin terminar), una vez que la siguiente solicitud excede el umbral establecido , Simplemente intercepte la solicitud. Esta función es diferente de la limitación actual de QPS: incluso en escenarios de QPS bajo, puede garantizar que los recursos clave no sean ocupados por llamadas lentas acumuladas continuamente, lo que resultará en la indisponibilidad de servicios, como el grupo de subprocesos del servicio ascendente de back-end y la base de datos. Los recursos, etc., si están ocupados durante mucho tiempo, provocarán anomalías en el servicio ascendente. De manera similar a la limitación de corriente QPS, las puertas de enlace nativas de la nube naturalmente admiten la limitación de corriente concurrente del clúster amortizado. Solo necesita configurar un umbral de concurrencia general para lograr el control de concurrencia general en una ruta determinada.

  • fusible

Esta función se puede ver en Sentinel, Hystrix y otros proyectos de limitación actuales. Al igual que el significado literal, fusionar significa que cuando hay un estado anormal en el tráfico de la ruta, el tráfico debe fusionarse a tiempo para garantizar la conexión con La ruta Los servicios ascendentes relevantes pueden ejecutarse de manera eficiente y estable sin verse afectados por un tráfico de enrutamiento anormal.

El mecanismo de fusible corresponde al modelo de disyuntor (Circuit Breaker). Cuando la llamada se encuentra en un cierto estado inestable (generalmente una excepción o una llamada lenta) hasta cierto punto (generalmente centrándose en la proporción en lugar de la cantidad absoluta), el fusible se enciende (ABIERTO) y todas las solicitudes retrocederán; después Después de un período de tiempo, ingrese a la fase de recuperación de detección (MEDIO ABIERTA), suelte una cierta cantidad de solicitudes y use el estado de estas solicitudes para indicar la recuperación de los servicios posteriores. Si estas solicitudes alcanzan un estado estable, restaure el llamada correspondiente (CERRADO); de lo contrario, regresa al estado del fusible, el principio específico como se muestra a continuación:

Además, la capa inferior de la capacidad de protección del tráfico de la puerta de enlace nativa de la nube se basa en las estadísticas precisas de la ventana deslizante de nivel de milisegundos de Sentinel. Por esta razón, la interfaz de la función de protección del tráfico de la puerta de enlace nativa de la nube también está equipada con un sistema de monitoreo de segundo nivel. , que puede detectar problemas mediante observación = > Crear reglas de protección Esta ruta se utiliza para crear mejores reglas de protección del tráfico en puertas de enlace nativas de la nube.

Cómo implementar protección del tráfico en la puerta de enlace nativa de la nube

Limitación de corriente QPS

A continuación, practicaremos y utilizaremos las tres funciones de protección del tráfico anteriores en la puerta de enlace nativa de la nube.

Primero, ingrese a la interfaz de configuración de ruta en la instancia de puerta de enlace nativa de la nube, seleccione la opción "Limitar" en "Configuración de políticas" e inyecte manualmente un tráfico de aproximadamente QPS 10,000 en esta ruta, que se puede ver en el segundo nivel de soporte. Monitoreando durante 5 minutos el estado QPS de esta ruta.

Debajo del monitoreo de segundo nivel, puede ver tres elementos de configuración: reglas de control de flujo, reglas de concurrencia y reglas de fusión. Primero, configure una regla de limitación de flujo. Los parámetros específicos se muestran en la siguiente figura:

Encienda el interruptor y haga clic en el botón Guardar para agregar con éxito una estrategia de limitación de flujo QPS. El significado de esta estrategia es que cuando el QPS total del tráfico de enrutamiento alcance 5000, el siguiente tráfico entrante en la ventana de estadísticas será rechazado. Sí, Devuelve un paquete HTTP, el código de retorno es 429, el contenido es un texto en formato JSON y el contenido es:

{
  "context": "just for test"
}

En este momento, regrese para ver el monitoreo de segundo nivel y podrá ver el siguiente gráfico:

control de concurrencia

Las reglas de concurrencia también son similares, excepto que el valor de control se cambia de QPS al número de concurrencia. Los parámetros de configuración de referencia específicos son los siguientes:

 

Regrese y vea el monitoreo de segundo nivel, y podrá ver los siguientes resultados:

 

fusible

La configuración de la regla de fusibles es relativamente complicada. Para conocer el significado específico, consulte la descripción de la interfaz de configuración. La configuración de referencia específica es la siguiente:

 

El significado específico de esta regla es que dentro de la ventana estadística de 20 segundos, después de la quinta solicitud, se contará la proporción de llamadas lentas. Una vez que la proporción supere el 20%, el tráfico de esta ruta se cortará inmediatamente. de llamadas lentas es que el RT excede 1 ms de solicitud. Una vez completada la configuración, el rendimiento de la supervisión se muestra en la siguiente figura:

 

El ejemplo anterior es solo para demostrar el efecto: en el entorno de producción real, es necesario ser más cauteloso al definir parámetros como la tasa de llamadas lentas y la duración del fusible, de lo contrario, el servicio de backend general puede no estar disponible, lo que es una función de protección del tráfico de alto riesgo. Además de la proporción de llamadas lentas, también admite el juicio de la condición del disyuntor de la proporción anormal. La definición de anormalidad se refiere a la situación en la que ocurre 5XX en la llamada HTTP.

Resumir

Este artículo presenta en detalle cómo implementar la protección del tráfico en la puerta de enlace nativa de la nube, incluido qué tipo de reglas de protección configurar en diferentes escenarios, y brinda una ruta de uso detallada, desde la cual puede experimentar la función de protección del tráfico de la puerta de enlace nativa de la nube. puerta de enlace en comparación con las ventajas de la función de limitación de corriente de otros productos de puerta de enlace. Como una de las funciones principales de la puerta de enlace en la nube, continuaremos fortaleciendo la función de protección del tráfico en el futuro. Le invitamos a seguir prestando atención a los desarrollos de productos del motor de microservicios MSE en el sitio web oficial de Alibaba Cloud.

Autor: graffiti

Haga clic para probar los productos en la nube de forma gratuita ahora y comenzar el viaje práctico en la nube.

Enlace original

Este artículo es el contenido original de Alibaba Cloud y no debe reproducirse sin permiso.

Se lanzó Redis 7.2.0, la versión de mayor alcance, los programadores chinos se negaron a escribir programas de juegos de azar, se extrajeron 14 dientes y el 88% de todo el cuerpo resultó dañado. Se lanzó Flutter 3.13. System Initiative anunció que todo su software Sea de código abierto. Apareció la primera aplicación independiente a gran escala, Grace cambió su nombre a "Doubao". Spring 6.1 es compatible con subprocesos virtuales y JDK 21. Tableta Linux StarLite 5: Ubuntu predeterminado, Chrome 116 de 12,5 pulgadas lanzado oficialmente . Red Hat redistribuyó el escritorio. Desarrollo de Linux, el desarrollador principal fue transferido Kubernetes 1.28 lanzado oficialmente
{{o.nombre}}
{{m.nombre}}

Supongo que te gusta

Origin my.oschina.net/yunqi/blog/10101078
Recomendado
Clasificación