Garantía de rendimiento efectivo de Amazon MQ - Amazon MQ

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.

Garantía de rendimiento efectivo de Amazon MQ

Los siguientes patrones de diseño pueden mejorar la eficacia y el rendimiento de su agente de Amazon MQ.

Desactivar el almacenamiento y el envío simultáneos en colas con consumidores lentos

De forma predeterminada, Amazon MQ optimiza las colas para los consumidores rápidos:

  • Se considera que los consumidores son rápidos si pueden mantener el ritmo de los mensajes generados por los productores.

  • Se considera que los consumidores son lentos si una cola crea un atasco de mensajes sin confirmar, lo que puede provocar una reducción en el rendimiento del productor.

Para indicar a Amazon MQ que optimice las colas para los consumidores lentos, establezca el atributo concurrentStoreAndDispatchQueues en false. Para ver una configuración de ejemplo, consulte concurrentStoreAndDispatchQueues.

Elegir el tipo de instancia de agente correcto para obtener el mejor desempeño

La velocidad de los mensajes de un tipo de instancia de agente depende del caso de uso de su aplicación y de los siguientes factores:

  • Uso de ActiveMQ en modo persistente

  • Tamaño del mensaje

  • El número de productores y consumidores

  • El número de destinos

Descripción de la relación entre el tamaño del mensaje, la latencia y el rendimiento

Dependiendo de su caso de uso, es posible que un tipo de instancia de agente más grande no mejore necesariamente el desempeño del sistema. Cuando ActiveMQ escribe mensajes en un almacenamiento duradero, el tamaño de sus mensajes determina el factor limitante de su sistema:

  • Si sus mensajes son más pequeños que 100 KB, la latencia de almacenamiento persistente es el factor limitante.

  • Si sus mensajes son más grandes que 100 KB, el desempeño de almacenamiento persistente es el factor limitante.

Cuando se utiliza ActiveMQ en modo persistente, la escritura en el almacenamiento se produce normalmente cuando hay pocos consumidores o cuando los consumidores son lentos. En el modo no persistente, la escritura en el almacenamiento también se produce con consumidores lentos si la memoria del montón de la instancia del agente está llena.

Para determinar el mejor tipo de instancia de agente para su aplicación, recomendamos probar diferentes tipos de instancia de agente. Para obtener más información, consulte Broker instance types y también Medición del rendimiento para Amazon MQ mediante el punto de referencia de JMS.

Casos de uso para tipos de instancias de agentes más grandes

Hay tres casos de uso comunes cuando los tipos de instancia de agente más grandes mejoran el desempeño:

  • Non-persistent mode (Modo no persistente): cuando la aplicación sea menos sensible a la pérdida de mensajes durante la conmutación por error de la instancia del agente (por ejemplo, cuando se emiten resultados deportivos), a menudo es posible utilizar el modo no persistente de ActiveMQ. En este modo, ActiveMQ escribe mensajes en el almacenamiento persistente solo si la memoria acumulada de la instancia del agente está llena. Los sistemas que utilizan el modo no persistente pueden beneficiarse de una mayor cantidad de memoria, una CPU más rápida y una red más rápida disponibles en tipos de instancia de agente más grandes.

  • Fast consumers (Consumidores rápidos): cuando hay consumidores activos disponibles y el indicador concurrentStoreAndDispatchQueues está habilitado, ActiveMQ permite que los mensajes fluyan directamente del productor al consumidor sin enviar mensajes al almacenamiento (incluso en modo persistente). Si su aplicación puede consumir mensajes rápidamente (o si puede diseñar sus consumidores para que lo hagan), puede beneficiarse de un tipo de instancia de agente más grande. Para permitir que la aplicación consuma mensajes más rápidamente, añada subprocesos de consumo a las instancias de aplicación o escálelas vertical u horizontalmente.

  • Batched transactions (Transacciones por lote): cuando se utiliza el modo persistente y se envían múltiples mensajes por transacción, se puede obtener un mayor rendimiento general de los mensajes utilizando tipos de instancia de agente más grandes. Para obtener más información, consulte la sección sobre la necesidad de usar transacciones en la documentación de ActiveMQ.

Elegir el tipo de almacenamiento de agente correcto para obtener el mejor rendimiento

Para aprovechar el alto nivel de durabilidad y la replicación en varias zonas de disponibilidad, utilice Amazon EFS. Para aprovechar la baja latencia y el alto rendimiento, utilice Amazon EBS. Para obtener más información, consulte Storage.

Configurar la red de agentes correctamente

Al crear una red de agentes, configúrela correctamente para su aplicación:

  • Enable persistent mode (Habilitar modo persistente): dado que cada instancia de agente (en relación con sus pares) actúa como un productor o un consumidor, las redes de agentes no proporcionan replicación distribuida de mensajes. El primer agente que actúa como consumidor recibe un mensaje y lo mantiene en almacenamiento. Este agente envía una confirmación al productor y reenvía el mensaje al siguiente agente. Cuando el segundo agente confirma la persistencia del mensaje, el primer agente elimina el mensaje.

    Si se deshabilita el modo persistente, el primer agente confirma al productor sin mantener el mensaje en almacenamiento. Para obtener más información, consulte Replicated Message Store y What is the difference between persistent and non-persistent delivery? en la documentación de Apache ActiveMQ.

  • Don't disable advisory messages for broker instances (No desactivar mensajes de aviso para instancias del agente): para obtener más información, consulte Mensaje de aviso en la documentación de Apache ActiveMQ.

  • Don't use multicast broker discovery (No utilice detección del agentes mediante multidifusión): Amazon MQ no admite la detección de agentes mediante multidifusión. Para obtener más información, consulte What is the difference between discovery, multicast, and zeroconf? en la documentación de Apache ActiveMQ.