Alto rendimiento de las colas FIFO en 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.

Alto rendimiento de las colas FIFO en Amazon SQS

Las colas FIFO de alto rendimiento de Amazon SQS gestionan de forma eficiente el alto rendimiento de los mensajes y, al mismo tiempo, mantienen un orden estricto de los mensajes, lo que garantiza la fiabilidad y la escalabilidad de las aplicaciones que procesan numerosos mensajes. Esta solución es ideal para situaciones que exigen tanto un alto rendimiento como una entrega de mensajes ordenada.

Las colas FIFO de alto rendimiento de Amazon SQS no son necesarias en situaciones en las que el orden estricto de los mensajes no es crucial y en las que el volumen de mensajes entrantes es relativamente bajo o esporádico. Por ejemplo, si tiene una aplicación a pequeña escala que procesa mensajes poco frecuentes o no secuenciales, es posible que la complejidad y el costo adicionales asociados a las colas FIFO de alto rendimiento no estén justificados. Además, si su aplicación no requiere las capacidades de rendimiento mejoradas que ofrecen las colas FIFO de alto rendimiento, optar por una cola Amazon SQS estándar podría resultar más rentable y sencillo de gestionar.

Para mejorar la capacidad de solicitudes en las colas FIFO de alto rendimiento, se recomienda aumentar el número de grupos de mensajes. Para obtener más información sobre las cuotas de mensajes de alto rendimiento, consulte Service Quotas de Amazon SQS en la Referencia general de Amazon Web Services.

Para obtener información sobre las cuotas por cola y las estrategias de distribución de datos, consulte y. Cuotas de mensajes de Amazon SQS Particiones y distribución de datos para obtener alto rendimiento en las colas FIFO de SQS

Casos de uso de alto rendimiento para colas FIFO de Amazon SQS

Los siguientes casos de uso destacan las diversas aplicaciones de las colas FIFO de alto rendimiento y muestran su eficacia en todos los sectores y escenarios:

  1. Procesamiento de datos en tiempo real: las aplicaciones que se ocupan de flujos de datos en tiempo real, como el procesamiento de eventos o la ingesta de datos telemétricos, pueden beneficiarse de las colas FIFO de alto rendimiento para gestionar la afluencia continua de mensajes y, al mismo tiempo, conservar su orden para un análisis preciso.

  2. Procesamiento de pedidos de comercio electrónico: en las plataformas de comercio electrónico en las que es fundamental mantener el orden de las transacciones de los clientes, las colas FIFO de alto rendimiento garantizan que los pedidos se procesen de forma secuencial y sin demoras, incluso durante las temporadas altas de compras.

  3. Servicios financieros: las instituciones financieras que gestionan datos comerciales o transaccionales de alta frecuencia utilizan colas FIFO de alto rendimiento para procesar los datos de mercado y las transacciones con una latencia mínima y, al mismo tiempo, cumplen con los estrictos requisitos reglamentarios para la gestión de mensajes.

  4. Transmisión multimedia: las plataformas de transmisión y los servicios de distribución multimedia utilizan colas FIFO de alto rendimiento para gestionar la entrega de archivos multimedia y contenido en streaming, lo que garantiza una experiencia de reproducción fluida para los usuarios y, al mismo tiempo, mantiene el orden correcto de entrega del contenido.

Particiones y distribución de datos para obtener alto rendimiento en las colas FIFO de SQS

Amazon SQS almacena los datos de la cola FIFO en particiones. Una partición es una asignación de almacenamiento para una cola que se replica automáticamente en varias zonas de disponibilidad de una región. AWS Usted no administra las particiones. En su lugar, Amazon SQS se encarga de la administración de particiones.

Para las colas FIFO, Amazon SQS modifica el número de particiones de una cola en las siguientes situaciones:

  • Si la tasa de solicitudes actual se aproxima o supera lo que pueden admitir las particiones existentes, se asignan particiones adicionales hasta que la cola alcanza la cuota regional. Para obtener información sobre las cuotas, consulte Cuotas de mensajes de Amazon SQS.

  • Si las particiones actuales se utilizan poco, es posible que se reduzca el número de particiones.

La administración de las particiones tiene lugar automáticamente en segundo plano y es transparente para las aplicaciones. Su cola y sus mensajes están disponibles en todo momento.

Distribución de los datos por ID de grupo de mensajes

Para agregar un mensaje a una cola FIFO, Amazon SQS utiliza el valor del ID de grupo de mensajes de cada mensaje como entrada a una función hash interna. El valor del resultado de la función hash determina la partición que almacena el mensaje.

En el siguiente diagrama se muestra una tabla denominada que abarca varias particiones. El ID de grupo de mensajes de la cola se basa en el número de elemento. Amazon SQS utiliza la función hash para determinar dónde se almacenará un nuevo elemento; en este caso, se basa en el valor hash de la cadena item0. Tenga en cuenta que los elementos se almacenan en el mismo orden en el que se agregan a la cola. La ubicación de cada elemento viene determinada por el valor hash de su ID de grupo de mensajes.

Una cola abarca varias particiones.
nota

Amazon SQS está optimizado para una distribución uniforme de los elementos en las particiones de una cola FIFO, independientemente del número de particiones. AWS recomienda utilizar identificadores de grupos de mensajes que puedan tener un gran número de valores distintos.

Optimización de la utilización de particiones

Cada partición admite hasta 3000 mensajes por segundo con procesamiento por lotes o hasta 300 mensajes por segundo para operaciones de envío, recepción y eliminación en las regiones compatibles. Para obtener más información sobre las cuotas de mensajes de alto rendimiento, consulte Service Quotas de Amazon SQS en la Referencia general de Amazon Web Services.

Cuando se utilizan las API por lotes, cada mensaje se enruta según el proceso descrito en Distribución de los datos por ID de grupo de mensajes. Los mensajes que se enrutan a la misma partición se agrupan y procesan en una única transacción.

Para optimizar el uso de las particiones de la SendMessageBatch API, AWS recomienda agrupar los mensajes por lotes con los mismos ID de grupo de mensajes siempre que sea posible.

Para optimizar el uso de las particiones en ChangeMessageVisibilityBatch las API DeleteMessageBatch y en las API, se AWS recomienda utilizar ReceiveMessage las solicitudes con el MaxNumberOfMessages parámetro establecido en 10 y agrupar en lotes los identificadores de recepción devueltos por una sola solicitud. ReceiveMessage

En el siguiente ejemplo, se envía un lote de mensajes con varios ID de grupo de mensajes. El lote se divide en tres grupos, cada uno de los cuales cuenta para la cuota de la partición.

Un lote de mensajes con diferentes ID de grupo de mensajes se almacena en particiones.
nota

Amazon SQS solo garantiza que los mensajes con la misma función hash interna de ID de grupo de mensajes se agrupen en una solicitud por lotes. En función del resultado de la función hash interna y del número de particiones, se podrían agrupar los mensajes con ID de grupo de mensajes diferentes. Dado que la función hash o el número de particiones pueden cambiar en cualquier momento, los mensajes agrupados en un momento dado pueden no estarlo más adelante.