ApsaraMQ for RabbitMQ es un servicio de mensajería totalmente administrado basado en una arquitectura de almacenamiento distribuida y de alta disponibilidad. Implementa el protocolo AMQP 0-9-1 y es compatible con clientes de RabbitMQ de código abierto. En comparación con RabbitMQ de código abierto, ApsaraMQ for RabbitMQ resuelve problemas comunes de estabilidad, como la acumulación de mensajes y los conflictos de cerebro dividido. También ofrece las ventajas de un servicio de mensajería en la nube, como alta concurrencia, despliegue distribuido y escalado flexible.
Este tema compara ApsaraMQ for RabbitMQ con RabbitMQ de código abierto en cuanto a funciones, escalabilidad, confiabilidad, exchanges y colas.
Para consultar la lista completa de ventajas, consulte Benefits.
Funciones
|
Feature |
ApsaraMQ for RabbitMQ |
Open-source RabbitMQ |
|
Protocolo |
AMQP 0-9-1 |
AMQP 0-9-1, AMQP 1.0, STOMP, MQTT, HTTP(S) y WebSocket |
|
SDK del cliente |
Todos los SDK de cliente de RabbitMQ de código abierto (cualquier lenguaje, cualquier versión) |
SDK de código abierto |
|
Mensajes diferidos |
Precisión de segundos. Compatible tanto con el complemento x-delayed-message como con el método TTL. Consulte Delayed messages. |
Requiere un complemento o el método de caducidad y transferencia de TTL del mensaje |
|
Mensajes transaccionales |
No compatible |
Compatible |
|
Mensajes ordenados |
Compatible. Consulte Ordered consumption of messages. |
Compatible |
|
Prioridad de mensajes |
Solo instancias dedicadas |
Compatible |
|
Reintento de mensajes |
Redistribución automática cuando los mensajes no se confirman dentro de un periodo de tiempo de espera. Consulte Retry policy. |
Sin reintento integrado. Los mensajes no confirmados bloquean la cola, lo que puede provocar acumulación e interrupción del servicio. |
|
Autenticación |
Nombre de usuario y contraseña personalizados, o credenciales generadas a partir de un par de AccessKey en Resource Access Management (RAM). Consulte Static usernames and passwords y RAM credentials. |
Nombre de usuario y contraseña personalizados |
|
Control de acceso |
Modelo de permisos de código abierto y autorización basada en directivas de RAM. Consulte Permission management y RAM access control. |
Modelo de permisos de código abierto |
Observability
|
Capability |
ApsaraMQ for RabbitMQ |
Open-source RabbitMQ |
|
Panel |
Métricas integradas para vhost, exchange y cola. La integración con Prometheus y Grafana viene preconfigurada. Consulte Dashboard. |
Dos opciones: (1) Usar la interfaz de administración para las métricas, pero construir su propia capa de almacenamiento y visualización. (2) Configure Prometheus y Grafana manualmente. |
|
Rastreo de mensajes |
Vista de rastreo en la consola que muestra el ciclo de vida completo del mensaje. Permite consultar por cola, ID de mensaje o tiempo de procesamiento. Consulte Message traces. |
Los datos de rastreo se escriben en archivos de registro del servidor, lo que ralentiza las consultas y el análisis de causa raíz. |
Comandos AMQP
La siguiente tabla compara el comportamiento del comando AMQP BasicCancel entre ApsaraMQ for RabbitMQ y RabbitMQ de código abierto.
|
Elemento |
ApsaraMQ for RabbitMQ |
RabbitMQ de código abierto |
|
|
Cancela la suscripción del consumidor; los mensajes ya entregados se vuelven a poner en la cola. |
Cancela la suscripción del consumidor; los mensajes ya entregados permanecen en estado Unacked. |
Esta diferencia es importante al solucionar problemas de entrega de mensajes tras la cancelación de un consumidor. En ApsaraMQ for RabbitMQ, la reencolación posterior a BasicCancel implica que los mensajes no confirmados pueden redistribuirse a otros consumidores. En RabbitMQ de código abierto, dichos mensajes permanecen sin confirmar hasta que se cierra el canal o expira el tiempo de espera.
Escalabilidad y confiabilidad
|
Dimension |
ApsaraMQ for RabbitMQ |
Open-source RabbitMQ |
|
Throughput del clúster |
Sin límite superior fijo. Una arquitectura distribuida sin nodo maestro admite el escalado horizontal. |
Limitado por la capacidad de un solo nodo. El escalado vertical requiere actualizaciones de hardware. |
|
Throughput de una sola cola |
Sin límite superior fijo. Cada cola escala horizontalmente entre nodos. |
Limitado por el nodo que aloja la cola. |
|
Conexiones |
Escalan con el clúster. Agregar nodos aumenta la capacidad de conexión sin degradar el rendimiento. |
Limitado por los recursos de una sola máquina. |
|
Mensajes diferidos |
Precisión de segundos, alto throughput, listo para usar |
Requiere configuración de complemento |
|
Alta disponibilidad |
Despliegue multizona con separación de almacenamiento y cómputo. Los nodos de cómputo defectuosos se pueden eliminar y aislar rápidamente. Los datos se almacenan por triplicado. |
Depende de colas espejo o colas de quórum. Esta implementación es propensa a problemas de cerebro dividido. |
|
Acumulación de mensajes |
Mantiene un rendimiento estable incluso con grandes acumulaciones. El funcionamiento normal del clúster no se ve afectado. |
Las grandes acumulaciones consumen memoria del nodo y pueden provocar fallos por falta de memoria, lo que causa interrupciones en el servicio. |
|
Escalado elástico |
Escale horizontalmente agregando o eliminando nodos del clúster bajo demanda. Las instancias serverless facturan según el volumen de mensajes, lo que elimina la necesidad de planificar la capacidad por adelantado. |
La capacidad está restringida por la máquina más grande del clúster. El escalado requiere actualizaciones de hardware o reparticionamiento del clúster. |
|
Autorreparación |
Un sistema de inspección integrado detecta y resuelve automáticamente bloqueos y fallos de nodos. |
Sin autorreparación automatizada. Se requiere intervención manual. |
Exchanges
ApsaraMQ for RabbitMQ admite los mismos tipos y propiedades de exchange que RabbitMQ de código abierto.
|
Property |
ApsaraMQ for RabbitMQ |
Open-source RabbitMQ |
|
Tipos |
direct, fanout, headers, topic, x-delayed-message, x-consistent-hash |
direct, fanout, headers, topic, x-delayed-message, x-consistent-hash |
|
Persistencia |
Persistente y no persistente |
Persistente y no persistente |
|
Eliminación automática |
Compatible |
Compatible |
|
Interno |
Compatible |
Compatible |
|
Exchange alternativo |
Compatible |
Compatible |
|
Exchange de hash consistente |
Compatible |
Compatible |
Colas
ApsaraMQ for RabbitMQ abstrae las decisiones de infraestructura de las colas. Todas las colas se ejecutan en un clúster distribuido de alta disponibilidad, por lo que no es necesario elegir entre tipos de cola clásica y de quórum, ni configurar la replicación manualmente.
|
Property |
ApsaraMQ for RabbitMQ |
Open-source RabbitMQ |
|
Tipo de cola |
Clúster de alta disponibilidad distribuido (sin configuración obligatoria) |
Selección manual obligatoria: clásica (cola espejo) o cola de quórum |
|
Asignación de nodos |
Totalmente administrada, sin asignación manual |
Selección manual de nodos obligatoria |
|
Directiva de reintento |
Redistribución automática al agotar el tiempo de consumo. Consulte Retry policy. |
Sin redistribución basada en tiempo de espera |
|
Persistencia |
Persistente y no persistente |
Persistente y no persistente |
|
Longitud máxima / bytes de longitud máxima / longitud máxima en memoria / bytes máximos en memoria |
Sin configuración obligatoria. Admite acumulación masiva de mensajes sin presión sobre la memoria. |
Debe configurarse para evitar fallos por falta de memoria causados por acumulación ilimitada. |
|
Límite de entrega |
Valor predeterminado de 16 (estático). Consulte Retry policy. |
Configuración manual obligatoria |
|
Exchange de mensajes muertos |
Compatible |
Compatible |
|
Clave de enrutamiento de mensajes muertos |
Compatible |
Compatible |
|
Consumidor activo único |
Compatible. Consulte Ordered consumption of messages. |
Compatible |
Acción
La siguiente tabla compara el comportamiento del comando AMQP BasicCancel entre ApsaraMQ for RabbitMQ y RabbitMQ de código abierto.
|
Elemento |
ApsaraMQ for RabbitMQ |
RabbitMQ de código abierto |
|
BasicCancel |
Cancela la suscripción del consumidor; los mensajes ya entregados se vuelven a poner en la cola. |
Cancela la suscripción del consumidor; los mensajes ya entregados permanecen en estado Unacked. |