Colas justas de Amazon SQS
Las colas justas de Amazon SQS mitigan de manera automática el impacto en las colas de varios inquilinos que contienen mensajes de varias entidades lógicas, como clientes, aplicaciones cliente o tipos de mensajes. En estos entornos de colas compartidas, una métrica de rendimiento fundamental es el tiempo de permanencia, que mide el tiempo total que los mensajes pasan en una cola desde su llegada hasta su procesamiento. Cuando un inquilino crea una tarea pendiente en la cola al publicar más mensajes de los que el sistema puede gestionar, las colas justas minimizan el impacto en el tiempo de permanencia de los demás inquilinos.
Estado estacionario
En el siguiente diagrama se ilustra una cola de varios inquilinos que contiene mensajes de cuatro inquilinos distintos (denominados A, B, C y D). La cola funciona en un estado estacionario y no hay tareas pendientes de mensajes, ya que los consumidores reciben los mensajes en cuanto aparecen en la cola. Todos los inquilinos experimentan tiempos de permanencia bajos. La capacidad de los consumidores no se utiliza por completo en este estado estacionario.
Impacto del vecino ruidoso
El impacto del vecino ruidoso se produce cuando un inquilino de una cola de varios inquilinos crea una tarea pendiente, lo que aumenta el tiempo de permanencia de los mensajes de todos los demás inquilinos. Un inquilino puede convertirse en un vecino ruidoso si envía un volumen de mensajes mayor que los demás inquilinos, o cuando los consumidores tardan más en procesar los mensajes de ese inquilino en particular.
En este diagrama se ilustra cómo el aumento del tráfico del inquilino A crea una tarea pendiente en la cola. Los consumidores están ocupados procesando los mensajes del inquilino A, mientras que los mensajes de los demás inquilinos permanecen como tareas pendientes, lo que provoca un aumento del tiempo de permanencia de todos los inquilinos.
Mitigación con colas justas
Amazon SQS detecta vecinos ruidosos mediante la supervisión de la distribución de mensajes entre los inquilinos durante el procesamiento (estado “en tránsito”). Cuando un inquilino tiene un número desproporcionadamente grande de mensajes en tránsito en comparación con los demás, Amazon SQS lo identifica como un vecino ruidoso y prioriza la entrega de mensajes a los demás inquilinos. Este enfoque reduce el impacto del tiempo de permanencia en los demás inquilinos.
En este diagrama se ilustra cómo las colas justas de Amazon SQS resuelven el problema del vecino ruidoso. Cuando un inquilino (inquilino A) se vuelve ruidoso, Amazon SQS prioriza la devolución de los mensajes de los demás inquilinos (B, C y D). Esta priorización ayuda a mantener bajos los tiempos de permanencia de los inquilinos silenciosos, los inquilinos B, C y D, mientras que el tiempo de permanencia de los mensajes del inquilino A se eleva hasta que se agota la cola de tareas pendientes sin afectar a los demás inquilinos.
nota
Amazon SQS no limita la velocidad de consumo por inquilino. Permite a los consumidores recibir mensajes de inquilinos vecinos ruidosos cuando hay capacidad de consumo y la cola no tiene más mensajes que devolver. Al igual que las colas estándar de Amazon SQS, las colas justas permiten un rendimiento prácticamente ilimitado y no hay límites en el número de inquilinos que puede tener en la cola.
Diferencia con las colas FIFO
Las colas FIFO mantienen un orden estricto al limitar la cantidad de mensajes en tránsito de cada inquilino. Si bien esto evita los vecinos ruidosos, limita el rendimiento de cada inquilino. Las colas justas están diseñadas para escenarios de varios inquilinos en los que se prioriza un alto rendimiento, un tiempo de permanencia bajo y una asignación justa de recursos. Las colas justas permiten que varios consumidores procesen mensajes del mismo inquilino simultáneamente, al tiempo que ayudan a todos los inquilinos a mantener tiempos de permanencia coherentes.
Uso de colas justas
Los productores de mensajes pueden agregar un identificador de inquilino configurando un MessageGroupId en un mensaje saliente:
// Send message with tenant identifier SendMessageRequest request = new SendMessageRequest() .withQueueUrl(queueUrl) .withMessageBody(messageBody) .withMessageGroupId("tenant-123"); // Tenant identifier sqs.sendMessage(request);
La capacidad de equidad se aplicará automáticamente en todas las colas estándar de Amazon SQS a los mensajes con la propiedad MessageGroupId. Esto no requiere ningún cambio en el código de consumidor, no afecta a la latencia de la API y no implica ninguna limitación de rendimiento.
Métricas de CloudWatch de colas justas
Amazon SQS proporciona métricas adicionales de CloudWatch para ayudarle a supervisar la mitigación del impacto de los vecinos ruidosos. Por ejemplo, puede comparar las métricas Approximate..InQuietGroups con las métricas estándar de las colas. Durante los picos de tráfico de un inquilino específico, las métricas generales de las colas pueden revelar un aumento de las tareas pendientes o una mayor antigüedad de los mensajes. Sin embargo, al observar los grupos silenciosos de forma aislada, se puede identificar que la mayoría de los grupos de mensajes o inquilinos no ruidosos no se ven afectados.
A continuación, se muestra un ejemplo en el que la métrica estándar de la cola de tareas pendientes (ApproximateNumberOfMessagesVisible) aumenta debido a un inquilino ruidoso, mientras que las tareas pendientes de los inquilinos no ruidosos (ApproximateNumberOfMessagesVisibleInQuietGroups) siguen siendo bajas.
Para obtener una lista completa de las métricas de CloudWatch de Amazon SQS y sus descripciones, consulte Métricas de CloudWatch para Amazon SQS.