View a markdown version of this page

Colas justas de Amazon SQS - Amazon Simple Queue Service

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

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.

Una cola de varios inquilinos que contiene mensajes de cuatro inquilinos distintos (a los que se hace referencia con las letras A, B, C y D). La cola se encuentra en un estado estacionario y los mensajes en tránsito se distribuyen de manera uniforme entre los inquilinos, sin tareas pendientes y con un tiempo de permanencia reducido para todos ellos.

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.

El resultado es que el inquilino A aumenta el tráfico y crea una tarea pendiente en la cola. Los mensajes del inquilino A están sobrerrepresentados en el estado “en tránsito” y los mensajes de los demás inquilinos se quedan bloqueados en la lista de tareas pendientes, lo que provoca un mayor tiempo de permanencia.

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.

Una ilustración de cómo las colas justas resuelven el problema del vecino ruidoso mediante la supervisión del estado “en tránsito”. Cuando el inquilino A se vuelve ruidoso, SQS intenta devolver los mensajes de los demás inquilinos (B, C, D) para que los mensajes en tránsito se distribuyan uniformemente entre los inquilinos. El tiempo de permanencia de los inquilinos (B, C, D) seguirá siendo bajo, mientras que el tiempo de permanencia de los mensajes del inquilino A se elevará hasta que se agote la cola de tareas pendientes.
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.

Para obtener más información sobre cómo Amazon SQS detecta vecinos ruidosos y gestiona los pedidos de entrega de mensajes, consulte Cómo funcionan las colas de espera de Amazon SQS.

Cómo utilizar las colas justas

Para permitir colas justas, los productores de mensajes deberían añadir un identificador de inquilino configurando una MessageGroupId en los mensajes salientes:

// Send message with tenant identifier SendMessageRequest request = new SendMessageRequest() .withQueueUrl(queueUrl) .withMessageBody(messageBody) .withMessageGroupId("tenant-123"); // Tenant identifier sqs.sendMessage(request);

La función de imparcialidad se aplicará automáticamente en todas las colas estándar de Amazon SQS para 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.

nota

MessageGroupIden las colas estándar con colas justas no se comporta igual MessageGroupId que en las colas FIFO. En las colas estándar, MessageGroupId se usa solo como identificador de inquilinos para las colas justas y no exige el orden de los mensajes. Para obtener más información MessageGroupId sobre las colas FIFO, consulte Uso del ID de grupo de mensajes con las colas FIFO de Amazon SQS.

Cuándo utilizar colas justas

Considere la posibilidad de utilizar colas justas cuando se aplique todo lo siguiente a su cola:

  • La cola es multiusuario. La cola contiene mensajes que pertenecen a varias entidades lógicas, como clientes, aplicaciones cliente o tipos de solicitudes, y puede identificar cada entidad con un. MessageGroupId

  • La cola es de alto rendimiento. Con un rendimiento bajo, la pérdida de ingresos de un inquilino rara vez genera una acumulación de pedidos que afecte a otros inquilinos. Con un alto rendimiento, no es práctico sobreescalar la flota de consumidores para absorber cada ráfaga, e incluso con el autoscalamiento, el retraso antes de que los nuevos consumidores entren en línea puede provocar que se acumulen atrasos.

  • El tiempo de espera forma parte de la calidad de servicio de su aplicación. Las colas justas protegen a los inquilinos silenciosos del tiempo de espera prolongado provocado por un vecino ruidoso. Si su solicitud no depende del tiempo de permanencia, es posible que no necesite la protección de vecinos ruidosos que ofrecen las colas en las ferias.

Métricas de colas justas CloudWatch

Amazon SQS proporciona CloudWatch métricas adicionales para ayudarle a supervisar la mitigación del impacto en 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, encontrará un ejemplo en el que la métrica estándar de acumulación de colas (ApproximateNumberOfMessagesVisible) aumenta debido a un inquilino ruidoso, mientras que la de los inquilinos no ruidosos () sigue siendo baja. ApproximateNumberOfMessagesVisibleInQuietGroups

El gráfico muestra el aumento de la acumulación de colas en el caso de los grupos ruidosos, mientras que los grupos silenciosos siguen siendo bajas.

Para obtener una lista completa de las CloudWatch métricas de Amazon SQS y sus descripciones, consulte las CloudWatch métricas de Amazon SQS.