La estabilidad de los microservices es una preocupación principal para los clientes que utilizan esta arquitectura. Con la evolución de una arquitectura monolítica a una distribuida y los cambios en los métodos de despliegue, las dependencias entre servicios son cada vez más complejas, por lo que la alta disponibilidad resulta fundamental para los sistemas empresariales. La protección de tráfico de Microservices Engine (MSE) es un servicio que emplea módulos como la limitación de tasa y la protección de parámetros de acceso frecuente para mejorar la alta disponibilidad de las aplicaciones. Este tema describe las reglas de protección de tráfico y sus escenarios de uso.
Escenarios de inestabilidad
Es posible que enfrente los siguientes problemas de inestabilidad en el entorno de producción:
Cuando el tráfico aumenta repentinamente durante actividades promocionales a gran escala, no se pueden realizar pedidos debido a sobrecargas del sistema, cargas elevadas o fallos del sistema.
Algunos productos desconocidos se vuelven populares. Como consecuencia, se producen fallos en la caché, caídas de la base de datos o problemas de contención de recursos.
El llamador falla debido a un servicio de terceros inestable, el pool de hilos está lleno o hay una gran cantidad de llamadas en espera de procesamiento. Esto provoca que todo el proceso de llamada se suspenda.
Estos escenarios de inestabilidad pueden tener consecuencias graves. Sin embargo, en la mayoría de los casos, los desarrolladores no aplican protección de alta disponibilidad relacionada con el tráfico y las dependencias. La protección de tráfico de MSE ayuda a prevenir el impacto de estos factores de inestabilidad en el tráfico y proporciona protección de tráfico de alta disponibilidad para garantizar la estabilidad del servicio.
Escenarios principales
A continuación se describen las reglas de protección de tráfico y los escenarios principales aplicables.
|
Regla de protección de tráfico |
Descripción |
Escenario principal |
Referencias |
|
Regla de limitación |
Use MSE para configurar una regla de limitación basada en consultas por segundo (QPS). Si el valor de QPS supera un umbral especificado, el sistema rechaza automáticamente las solicitudes adicionales. |
Las reglas de limitación son adecuadas para escenarios en los que es necesario restringir aumentos repentinos de tráfico. En estos casos, permiten que el sistema continúe procesando solicitudes y evitan fallos en el servicio. |
|
|
Regla de aislamiento |
Las reglas de aislamiento controlan el número de llamadas concurrentes en curso y evitan que un exceso de llamadas lentas consuma los recursos asignados a las llamadas normales. |
Este tipo de regla es apropiada cuando se llama a un servicio de terceros y un número excesivo de llamadas lentas consume los recursos asignados a las llamadas normales. Las reglas de aislamiento garantizan la disponibilidad del servicio. |
|
|
Regla de interrupción de circuito |
Las reglas de interrupción de circuito permiten que el sistema ejecute automáticamente la interrupción o degradación de llamadas inestables con dependencias débiles. Estas reglas previenen fallos del sistema causados por factores de inestabilidad. |
Se usan para evitar fallos del sistema provocados por factores de inestabilidad, como una llamada lenta o una excepción de servicio. Por ejemplo, especifique una regla de interrupción de circuito para deshabilitar la llamada a un servicio de terceros que tiene un tiempo de respuesta (RT) alto. |
|
|
Regla de protección de parámetros de acceso frecuente |
Estas reglas permiten que el sistema identifique automáticamente los parámetros de acceso frecuente y controle la frecuencia de acceso o la concurrencia de cada valor. Evitan eficazmente que los recursos asignados a llamadas normales se vean desplazados debido a un acceso excesivamente frecuente a parámetros específicos. |
Son ideales para escenarios donde se debe controlar el acceso a los datos más consultados dentro de un conjunto específico de datos de acceso frecuente. Por ejemplo, use estas reglas para controlar los ID de los productos comprados con mayor frecuencia durante un periodo determinado. Esto evita que se envíe una gran cantidad de solicitudes a la base de datos cuando ocurre un fallo en la caché debido al acceso frecuente a ciertos productos. |
Create hot parameter throttling rules for RPC and custom interface requests |
Reglas de limitación
Escenarios
El tráfico es aleatorio e impredecible. Pueden producirse aumentos repentinos en momentos específicos, como a las 00:00 del 11 de noviembre (Doble 11). Sin embargo, la capacidad del sistema siempre es limitada. Si el tráfico máximo supera la capacidad del sistema, pueden ocurrir las siguientes consecuencias que derivan en fallos del sistema: (1) Una gran cantidad de solicitudes quedan en espera de procesamiento. (2) El procesamiento de solicitudes se vuelve lento. (3) La utilización de la CPU es alta o se produce una sobrecarga del sistema. Para solucionar estos problemas, limite los aumentos repentinos de tráfico. La limitación de tráfico permite que el sistema procese tantas solicitudes como sea posible sin provocar fallos. Es un método común adecuado para escenarios como ráfagas de tráfico.
Descripción de la regla
En escenarios donde hay portales web o proveedores de servicios disponibles, evite que los proveedores de servicios se saturen por aumentos repentinos de tráfico. En este caso, el tráfico se limita según las capacidades del proveedor de servicios o para llamadores de servicio específicos. Evalúe la capacidad de procesamiento de las interfaces principales mediante pruebas de estrés previas y use MSE para configurar reglas de limitación basadas en QPS. Una vez configuradas estas reglas, el sistema rechaza automáticamente las solicitudes adicionales si el valor de QPS supera un umbral especificado. Para obtener más información sobre las reglas de limitación, consulte Create a throttling rule.
Control de concurrencia
Escenarios
En la mayoría de los casos, un servicio llama a otro módulo, como un servicio remoto, una base de datos o una API de terceros. Por ejemplo, al pagar facturas, se puede llamar remotamente a una API proporcionada por UnionPay. Al consultar el precio de un producto, pueden involucrarse consultas a la base de datos. Sin embargo, no se puede garantizar la estabilidad de este servicio dependiente. Si el servicio dependiente es inestable y el tiempo de respuesta de la solicitud aumenta, el tiempo de respuesta del método utilizado para llamar al servicio también aumenta y se consumen muchos hilos. Como resultado, los hilos del pool de hilos del servicio pueden agotarse y el servicio deja de estar disponible.
Las arquitecturas modernas de microservices están distribuidas y constan de varios microservices. Los distintos microservices se llaman entre sí, lo que hace que los procesos de llamada sean complejos. Los problemas mencionados anteriormente tienen un gran impacto en las llamadas de servicio. En un proceso de llamada complejo, si un nodo es inestable, otros nodos también pueden volverse inestables. En consecuencia, toda la llamada deja de estar disponible.
Descripción de la regla
MSE proporciona la capacidad de controlar el número de hilos concurrentes de interfaces o dependencias para evitar la indisponibilidad del servicio causada por factores de inestabilidad, como llamadas lentas.
El control de concurrencia se utiliza como un método de aislamiento ligero para controlar el número de hilos concurrentes en llamadas específicas. Esto ayuda a evitar que un número excesivo de llamadas lentas consuma los recursos de las llamadas normales. Para obtener más información, consulte Configure isolation rules.
Reglas de protección de parámetros de acceso frecuente
Escenarios
Para evitar fallos del sistema causados por sobrecarga de tráfico, en la mayoría de los casos configure reglas de limitación para las interfaces principales. Sin embargo, en algunos escenarios, las reglas de limitación comunes no resuelven el problema.
Por ejemplo, durante las horas pico de actividades promocionales a gran escala, las vistas instantáneas de página de productos populares son altas. En este caso, prediga los productos populares con antelación y realice una precarga de caché para la información de dichos productos. De esta manera, obtendrá rápidamente la información del producto sin consultas a la base de datos cuando las vistas de página sean altas. No obstante, algunos productos desconocidos pueden volverse populares durante actividades promocionales a gran escala. No puede predecir este tipo de productos y su información no se precarga. Cuando aumentan las vistas de página de estos productos, se envía una gran cantidad de solicitudes a la caché, lo que provoca un fallo en la caché. Como resultado, el acceso a la base de datos consume mucho tiempo. Los recursos del pool de recursos de solicitudes de productos normales son consumidos por las solicitudes anómalas. En consecuencia, se produce un fallo del sistema.
Descripción de la regla
Para solucionar este problema, configure reglas de protección de parámetros de acceso frecuente. Estas reglas permiten que el sistema identifique automáticamente los parámetros de acceso frecuente y controle la frecuencia de acceso o la concurrencia de cada valor, basándose en el control de acceso de MSE. Las reglas de protección de parámetros de acceso frecuente evitan eficazmente que un exceso de solicitudes de acceso a parámetros populares consuma los recursos asignados a las llamadas normales. Para obtener más información, consulte Create hot parameter throttling rules for RPC and custom interface requests y Configure a hot parameter throttling rule for HTTP requests.