El control de flujo estándar aplica límites de velocidad uniformes a todo el tráfico de una interfaz. Cuando un conjunto reducido de valores de parámetro genera una carga desproporcionada (por ejemplo, algunos ID de producto durante una venta relámpago o unos pocos ID de usuario abusivos), los límites uniformes resultan insuficientes. La limitación por parámetro activo identifica estos valores de alta frecuencia mediante una política de uso menos reciente (LRU) y aplica límites de velocidad por valor basados en el algoritmo de cubeta de tokens. Esto protege sus servicios sin afectar el tráfico proveniente de valores de parámetro normales.
Escenarios
Los datos activos son aquellos a los que se accede con mayor frecuencia. Es posible que necesite recopilar estadísticas sobre los datos más consultados y aplicar control de acceso en escenarios como los siguientes:
Prevención de fallos de caché: Restrinja el acceso a los ID de los productos más comprados en un periodo determinado para evitar que un gran volumen de solicitudes llegue a la base de datos debido a fallos en la caché.
Protección contra tráfico artificial: Limite el acceso desde los ID de usuarios que envían solicitudes de forma excesiva en un periodo determinado para prevenir actividades de tráfico artificial.
Funcionamiento de la limitación por parámetro activo
MSE utiliza una política LRU para recopilar estadísticas sobre los parámetros activos con mayor frecuencia de acceso y limita las llamadas a recursos que involucran dichos parámetros mediante el algoritmo de cubeta de tokens.
Paso 1: Abrir el cuadro de diálogo de creación de reglas
Inicie sesión en la consola de MSE y seleccione una región en la barra de navegación superior.
En el panel de navegación izquierdo, vaya a Microservices Governance > Application Governance.
En la página Application list, haga clic en la tarjeta de recurso de la aplicación objetivo.
-
Abra el cuadro de diálogo Add Hot Parameter Protection (RPC/Custom Interface) mediante uno de los siguientes métodos:
Desde la página API Details
En el panel de navegación izquierdo, haga clic en API Details.
Para una interfaz RPC: Haga clic en la pestaña RPC service, seleccione la interfaz, haga clic en la pestaña Hotspot Parameter Protection (RPC) del panel derecho y luego haga clic en Add Hotspot Parameter Protection (RPC) Rule.
Para una interfaz personalizada: Haga clic en la pestaña Custom Interface, seleccione la interfaz, haga clic en la pestaña Hotspot Parameter Protection del panel derecho y luego haga clic en Add Hot Parameter Protection (Custom Interface) Rule.
Desde la página Traffic management
En el panel de navegación izquierdo, haga clic en Traffic management. Haga clic en la pestaña Flow protection, seleccione la subpestaña Hot Parameter Protection (RPC/Custom Interface) y luego haga clic en Add Hot Parameter Protection (RPC/Custom Interface).
Paso 2: Configurar la regla
En el cuadro de diálogo Add Hot Parameter Protection (RPC/Custom Interface), configure los siguientes parámetros y luego haga clic en New.
|
Parámetro |
Descripción |
|
Interface name |
Nombre de la interfaz a la que desea aplicar la regla. Debe coincidir con el nombre del recurso especificado durante el seguimiento. |
|
Parameter position Index |
Índice basado en cero del parámetro que se va a rastrear. Corresponde a la lista de parámetros del método RPC o del método de seguimiento personalizado. Consulte Funcionamiento de la indexación de parámetros. |
|
Statistical dimension |
Métrica utilizada para la limitación. Consulte Elección de una dimensión estadística. |
|
Statistical cycle time |
Duración de la ventana de tiempo, en segundos. Por ejemplo, si se establece en 10 con un umbral de 5, cada valor de parámetro activo se accederá como máximo 5 veces dentro de cada ventana de 10 segundos. |
|
Single machine threshold |
Umbral de QPS para cada valor de parámetro activo. |
|
Flow control effect |
Manejo de las solicitudes excedentes. Disponible solo cuando Statistical dimension está configurado como Number of requests. Consulte Elección de un efecto de control de flujo. |
Funcionamiento de la indexación de parámetros
El índice comienza en cero y corresponde a la lista de parámetros de la firma de su método:
Método RPC: Para
com.aliyun.demo:methodA(param0, param1, ……), el índice0hace referencia aparam0.Método de seguimiento personalizado: Para
SphU.entry("demoResource", EntryType.IN, 1, param0, param1, ……), el índice0hace referencia aparam0.
Elección de una dimensión estadística
Utilice esta tabla para seleccionar la dimensión adecuada según su caso de uso:
|
Dimensión |
Comportamiento |
Recomendado para |
|
Number of requests |
Limita el número total de solicitudes dentro de una ventana de tiempo. Admite efectos de control de flujo configurables (fallo rápido o cola). |
Cargas de trabajo con muchas lecturas donde se busca suavizar los picos de tráfico, como consultas de productos durante ventas relámpago. |
|
Concurrent number |
Limita el número máximo de solicitudes procesadas simultáneamente. Las solicitudes excedentes se rechazan de inmediato (solo fallo rápido). El parámetro Flow control effect no es configurable en este modo. |
Operaciones con muchas escrituras o uso intensivo de recursos donde la formación de colas aumentaría la contención en la base de datos, como actualizaciones masivas de direcciones. |
Elección de un efecto de control de flujo
Cuando Statistical dimension está configurado como Number of requests, elija uno de los siguientes efectos:
|
Efecto |
Comportamiento |
Recomendado para |
|
Fast failure |
Rechaza inmediatamente las solicitudes que superan el umbral. Configure Number of buffered requests para permitir un pequeño pico por encima del umbral. |
Escenarios de baja latencia donde el cliente puede reintentar las solicitudes rechazadas. |
|
Waiting in line |
Pone en cola las solicitudes excedentes y las procesa a una velocidad constante. Especifique un valor de Timeout en milisegundos. Si la duración estimada en la cola supera el tiempo de espera especificado, la solicitud se rechaza directamente. |
Escenarios de desplazamiento de carga máxima, como el consumo de colas de mensajes (MQ), donde no conviene descartar solicitudes. |
Funcionamiento de la cola: Con un umbral de 5, el sistema procesa una solicitud cada 200 milisegundos. Si el tiempo de espera es de 1,000 milisegundos y hay más de 5 solicitudes en la cola, las solicitudes adicionales se rechazan.
Ejemplos de configuración
Ejemplo 1: Poner en cola solicitudes excedentes durante ventas relámpago
Durante una venta relámpago, un pequeño número de ID de producto genera un tráfico masivo. Para mantener la estabilidad del sistema, ponga en cola las solicitudes que superen el umbral en lugar de descartarlas de inmediato.
Objetivo: Procesar hasta 100 solicitudes por segundo por cada valor de parámetro activo. Poner en cola las solicitudes excedentes con un tiempo de espera de 30 milisegundos.
|
Parámetro |
Valor |
|
Interface name |
Nombre del recurso de su interfaz de venta relámpago |
|
Parameter position Index |
Índice del parámetro de ID de producto (por ejemplo, |
|
Statistical dimension |
Number of requests |
|
Statistical cycle time |
|
|
Single machine threshold |
|
|
Flow control effect |
Waiting in line |
|
Timeout |
|
Resultado: Cuando un valor de parámetro activo supera las 100 solicitudes en 1 segundo en una sola instancia, las solicitudes excedentes se ponen en cola. Cualquier solicitud cuyo tiempo de espera estimado supere los 30 milisegundos se rechaza de inmediato.
Ejemplo 2: Rechazar solicitudes excedentes en operaciones con uso intensivo de recursos
Durante las ventas relámpago, los usuarios pueden modificar direcciones de envío de forma masiva. Estas solicitudes con muchas escrituras consumen recursos significativos de la base de datos. Rechace las solicitudes excedentes de inmediato para proteger el sistema.
Objetivo: Permitir hasta 100 solicitudes simultáneas por cada valor de parámetro activo. Rechazar cualquier exceso de inmediato.
|
Parámetro |
Valor |
|
Interface name |
Nombre del recurso de su interfaz de actualización de direcciones |
|
Parameter position Index |
Índice del parámetro de ID de usuario o ID de pedido (por ejemplo, |
|
Statistical dimension |
Concurrent number |
|
Statistical cycle time |
|
|
Single machine threshold |
|
Cuando Statistical dimension está configurado como Concurrent number, las solicitudes excedentes se rechazan de inmediato (fallo rápido). El parámetro Flow control effect no está disponible en este modo.
Resultado: El sistema puede procesar hasta 100 solicitudes simultáneas por cada valor de parámetro activo. Las solicitudes excedentes fallan de inmediato.