¿Cuál es la diferencia entre RabbitMQ y Redis OSS?

RabbitMQ es un agente de mensajes, mientras que el servidor de diccionario remoto (Redis OSS) es un almacén de datos clave-valor en memoria. Sin embargo, es posible comparar las dos tecnologías, ya que se pueden usar ambas para crear un sistema de mensajería de publicación-suscripción (pub/sub). En la arquitectura de la nube moderna, las aplicaciones se desacoplan en bloques pequeños e independientes llamados servicios. La mensajería de publicación y suscripción brinda notificaciones de eventos instantánea para dichos sistemas distribuidos. RabbitMQ es un agente de mensajes distribuido que recopila datos de streaming de múltiples orígenes y los reenvía a diferentes destinos para su procesamiento. Redis OSS admite un sistema basado en notificaciones push en el que el publicador distribuye los mensajes a todos los suscriptores cuando se produce un evento.

Cómo funcionan: comparación entre RabbitMQ y Redis OSS

Tanto RabbitMQ como Redis OSS permiten que las aplicaciones, los microservicios y los componentes de software intercambien mensajes de diferentes maneras. 

Flujo de trabajo de RabbitMQ

RabbitMQ utiliza el Protocolo avanzado de cola de mensajes (AMQP) para enviar mensajes de forma segura a través de agentes de mensajes. Un agente de mensajes se compone de intercambios y colas. El proceso funciona de la siguiente manera:

  1. El productor de datos envía mensajes a RabbitMQ.
  2. Un intercambio recibe datos y los envía a la cola respectiva de acuerdo con un conjunto de reglas llamadas enlaces.
  3. El mensaje permanece en la cola hasta que un consumidor de RabbitMQ lo tome.

Cuando la cola alcanza su capacidad máxima, RabbitMQ impide que los productores publiquen mensajes hasta que los consumidores gestionen los mensajes no leídos. RabbitMQ también puede restaurar los mensajes si el intercambio falla antes de que los consumidores los lean.

Flujo de trabajo de Redis OSS

Redis OSS está diseñado como un servidor de estructura de datos que admite varias estructuras de datos, como listas, conjuntos, hashes y mapas de bits. Permite a las aplicaciones de los clientes almacenar, recuperar y procesar casi cualquier tipo de datos. Redis OSS organiza los datos almacenados en pares clave-valor, lo que proporciona una disposición estructurada para suscribir las aplicaciones de los clientes.

Por ejemplo, puede separar los datos de comercio electrónico en el nombre del cliente, el correo electrónico, los artículos comprados y las claves de comentarios. Después de esto, publica los datos relevantes para cada clave. 

Redis OSS permite el intercambio en tiempo real de mensajes de retención cortos. Funciona de la siguiente manera:

  1. El productor de datos envía mensajes a Redis OSS.
  2. El nodo de Redis OSS comprueba la clave del mensaje para identificar a los suscriptores interesados.
  3. Redis OSS entrega el mensaje a todos los suscriptores conectados.

 

Gestión de mensajes: comparación entre RabbitMQ y Pub/sub de Redis OSS

Tanto Redis OSS como RabbitMQ proporcionan mecanismos de publicación-suscripción (pub/sub) para que las aplicaciones distribuyan mensajes en el entorno de la nube. Sin embargo, la gestión de los mensajes difiere significativamente.

Obtenga más información sobre la mensajería pub/sub »

Entrega de mensajes 

RabbitMQ utiliza el Protocolo avanzado de cola de mensajes (AMQP) para admitir una lógica de enrutamiento compleja. Puede enviar mensajes punto a punto o de un productor a muchos consumidores. Independientemente de los métodos, todos los consumidores envían mensajes de confirmación al productor para confirmar que la lectura se ha realizado correctamente. Si el productor no recibe una confirmación, hace varios reintentos a intervalos diferentes. 

Mientras tanto, Redis OSS simplemente envía mensajes a todos los suscriptores conectados, pero no garantiza la entrega de mensajes. El suscriptor debe estar conectado al servidor Redis OSS para recibir los mensajes entrantes. Si Redis OSS se desconecta, es posible que no pueda recuperar todos los mensajes. 

Tamaño del mensaje

RabbitMQ puede entregar mensajes más grandes sin experimentar una caída sustancial en el rendimiento. Inicialmente se diseñó para gestionar mensajes de hasta 2 GB de tamaño, pero más tarde el límite se redujo a 128 MB.

Por el contrario, Redis OSS no define un límite para los mensajes almacenados, pero experimenta una latencia notable para los mensajes de más de 1 MB. Por eso, los desarrolladores suelen utilizar Redis como caché para procesar conjuntos de datos como cadenas, hashes, listas y conjuntos.

Persistencia de mensajes

RabbitMQ admite mensajes persistentes y mensajes transitorios. Cuando envía mensajes a la cola persistente, escribe los datos en el almacenamiento permanente tan pronto como llegan. RabbitMQ también escribe mensajes transitorios en el disco, pero solo si superan la capacidad de la memoria. 

Por otro lado, Redis OSS no admite mensajes persistentes de forma predeterminada. Los desarrolladores deben habilitar una característica llamada Redis OSS Database (RDB) para tomar instantáneas periódicas de la RAM y almacenarlas en el disco. Habilitar la persistencia de datos en Redis OSS agrega sobrecarga a las operaciones de datos, lo que ralentiza la entrega de mensajes. Otra alternativa es utilizar técnicas de recuperación como la replicación asincrónica.

Cifrado de mensajes

RabbitMQ utiliza SSL para cifrar los datos en tránsito entre productores, agentes y consumidores. El cifrado de los mensajes ayuda a las organizaciones a proteger la información confidencial y a reducir los riesgos relacionados con los datos.

Mientras tanto, Redis OSS no admite SSL de forma nativa. Solo las versiones 6.0 y posteriores de Redis OSS ofrecen compatibilidad con SSL. Para habilitar SSL, los desarrolladores deben obtener certificados SSL del clúster de Redis OSS y crear un certificado de cliente para su base de datos.

Rendimiento: comparación entre RabbitMQ y Pub/sub de Redis OSS

Las diferencias en la gestión de mensajes afectan al rendimiento de RabbitMQ y Redis OSS en diferentes escenarios.

Velocidad

Redis OSS es mucho más rápido que RabbitMQ, ya que procesa los mensajes principalmente en la memoria. Sin embargo, existe el riesgo de perder los mensajes no leídos si el servidor Redis OSS falla. 

Por el contrario, cuando funciona en modo persistente, RabbitMQ espera las confirmaciones de cada consumidor antes de enviar el siguiente mensaje. RabbitMQ también tarda más tiempo en almacenar los mensajes en el disco, lo que ralentiza la velocidad media de intercambio de mensajes. 

A modo de comparación, Redis OSS puede enviar hasta decenas de millones de mensajes por segundo, mientras que RabbitMQ gestiona hasta decenas de miles de mensajes por segundo. 

Disponibilidad

La agrupación en clústeres, que permite a los sistemas de agente de mensajes replicar nodos, se gestiona de forma diferente en RabbitMQ y Redis OSS.

Con RabbitMQ, varios nodos que contienen datos y funciones relevantes se replican en un clúster. Sin embargo, las colas de mensajes no se replican en estos nodos, que comparten una relación entre pares. Para ello, los desarrolladores utilizan una cola de mensajes especial que admite la replicación. 

Mientras tanto, Redis OSS Cluster es una característica que se introdujo en versiones posteriores de Redis OSS. Copia los datos de cada nodo principal a uno o varios seguidores. Cuando un nodo principal falla, el seguidor asume el control para proporcionar una entrega de mensajes de alta disponibilidad. 

Cuándo usar: comparación entre RabbitMQ y Redis pub/sub

RabbitMQ supera a Redis en muchas áreas, pero esto no significa que RabbitMQ sea el mejor sistema de distribución de mensajes para todas las aplicaciones. 

Redis funciona mejor en aplicaciones empresariales que requieren procesamiento de datos en tiempo real y almacenamiento en caché de baja latencia. Debido a su almacén de datos en memoria y su compatibilidad con diversas estructuras de datos, Redis es adecuado para realizar el procesamiento informático de datos de bajo nivel. Por ejemplo, las instituciones financieras usan Redis para almacenar en caché los datos transaccionales y permitir la detección de fraudes en tiempo real. 

Mientras tanto, si necesita un agente de mensajes de microservicios dedicado con mecanismos de comunicación asincrónica para admitir la creación de sistemas y códigos, elija RabbitMQ. RabbitMQ también es más adecuado que Redis para transferir archivos de gran tamaño entre aplicaciones. Por ejemplo, un sistema que necesita enviar datos de forma fiable entre muchos microservicios podría elegir RabbitMQ. El sistema se beneficiará de la tolerancia a errores de RabbitMQ, la mayor capacidad de gestión de archivos y los mecanismos de entrega de mensajes garantizados.

Resumen de diferencias: comparación entre RabbitMQ y Redis pub/sub

 

RabbitMQ

Redis OSS

Entrega de mensajes

Entrega de mensajes garantizada. Admite lógicas complejas.

No garantiza la entrega de mensajes. Requiere una conexión activa de los suscriptores.

Tamaño del mensaje

El tamaño del mensaje se limita a los 128 MB. Puede administrar mensajes de gran tamaño. 

No hay límite de mensajes, pero el rendimiento disminuye con mensajes de gran tamaño (de más de 1 MB).

Persistencia de mensajes

Admite mensajes persistentes y transitorios. Escribe mensajes persistentes en el disco.

No admite mensajes persistentes de forma predeterminada.

Cifrado de mensajes

Admite cifrado SSL.

El cifrado SSL está disponible en las versiones 6.0 y superiores de Redis OSS. 

Velocidad

Envía decenas de miles de mensajes por segundo.

Envía hasta millones de mensajes por segundo.

Disponibilidad

Crea varios nodos punto a punto en un clúster.

Utiliza el modelo principal-seguidor en la agrupación en clústeres. 

¿Cómo puede ayudar AWS con los requisitos de RabbitMQ y Redis OSS?

Amazon Web Services (AWS) ofrece servicios administrados para ejecutar los sistemas de agentes de mensajes de código abierto a escala. Puede configurar fácilmente los servicios de publicación y suscripción (pub/sub) e integrarlos con otros servicios de AWS.

A continuación, se mencionan las ofertas de AWS que puede utilizar con Redis OSS y RabbitMQ:

  • Con Amazon MemoryDB, puede agregar durabilidad cuando entrega mensajes en Redis OSS. Puede ejecutar fuentes de datos de transmisión de alta simultaneidad para ingerir la actividad de los usuarios y admitir millones de solicitudes al día para aplicaciones de contenido multimedia y de entretenimiento.
  • Con Amazon MQ, puede aprovisionar los agentes de RabbitMQ sin perder tiempo en configuraciones. Cifra los mensajes de RabbitMQ en tránsito y en reposo, lo que ayuda a garantizar canalizaciones de datos de alta disponibilidad en las zonas de disponibilidad de AWS.

En lugar de Redis OSS o RabbitMQ, también puede utilizar Amazon Simple Notification Service (SNS) para crear un sistema de mensajería pub/sub. Puede enviar mensajes directamente desde las aplicaciones a clientes u otras aplicaciones de forma escalable y rentable.

Amazon SNS ofrece varias características:

  • Mensajería de varios a varios de alto rendimiento basada en push entre sistemas distribuidos, microservicios y aplicaciones sin servidor basadas en eventos
  • Cifrado de mensajes y privacidad del tráfico
  • Capacidades de distribución ramificada en las categorías de AWS, como análisis, computación, contenedores, bases de datos, Internet de las cosas (IoT), machine learning, seguridad y almacenamiento

Para comenzar a utilizar pub/sub, Redis OSS y RabbitMQ en AWS, cree una cuenta hoy mismo.

Siguientes pasos con AWS