Comparación de la arquitectura de ciencia popular de Rabbitmq, Rocketmq y Kafka

Comparación Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí
de arquitectura
Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí

Insertar descripción de la imagen aquí
Se puede ver en la arquitectura que los tres son algo similares, pero hay muchas diferencias en los detalles. A continuación los presentaremos desde sus distintos componentes:

RabbitMQ es un middleware de cola de mensajes de código abierto. Los siguientes son varios conceptos relacionados en RabbitMQ:

1. Productor: el productor es el remitente de mensajes y envía mensajes a la cola de mensajes de RabbitMQ.

2. Consumidor: el consumidor es el receptor del mensaje, lo obtiene de la cola de mensajes de RabbitMQ y lo procesa.

3. Message Queue: Message Queue es el componente principal de RabbitMQ y se utiliza para almacenar mensajes que se procesarán. Los productores envían mensajes a la cola y los consumidores obtienen mensajes de la cola para procesarlos.

4. Intercambio: el intercambio es responsable de recibir mensajes enviados por los productores y enrutarlos a una o más colas de mensajes de acuerdo con ciertas reglas. Los tipos de conmutadores comunes incluyen intercambio directo, intercambio de temas, intercambio en abanico, etc.

5. Enlace: El enlace se refiere a asociar un conmutador con una cola de mensajes y define a qué colas el conmutador enruta los mensajes. Los enlaces suelen utilizar reglas (claves de enrutamiento) para hacer coincidir mensajes y colas.

6. Clave de enrutamiento: la clave de enrutamiento es una palabra clave adjunta por el productor al enviar el mensaje al conmutador, que se utiliza para especificar las reglas de enrutamiento del mensaje.

RocketMQ es el middleware de mensajería distribuida de código abierto de Alibaba. Los siguientes son algunos conceptos relacionados con RocketMQ:

1. Productor: El productor es responsable de generar y enviar mensajes a RocketMQ.

2. Consumidor: los consumidores se suscriben y consumen mensajes de RocketMQ.

3. Tema: El tema es una clasificación lógica de mensajes y cada mensaje pertenece a un tema específico. Los productores envían mensajes sobre temas específicos y los consumidores reciben mensajes relacionados suscribiéndose a temas.

4. Cola de mensajes: el tema se divide en varias colas de mensajes y cada cola de mensajes almacena los mensajes en orden. Los consumidores extraen mensajes de la cola de mensajes para su consumo.

5. Grupo de consumidores: un grupo de consumidores es un grupo de instancias de consumidores con el mismo ID de grupo. Cada mensaje solo será consumido por una instancia de consumidor en el grupo de consumidores para lograr equilibrio de carga y alta disponibilidad.

6.Broker: Broker es el componente central de RocketMQ, que es responsable de recibir, almacenar y reenviar mensajes. Un sistema RocketMQ generalmente consta de varios Brokers, y cada Broker es responsable de gestionar varias colas de mensajes. Cada cola de mensajes pertenece a un solo Broker, pero un Broker puede administrar varias colas de mensajes.

7. Servidor de nombres: el servidor de nombres es el componente del servicio de nombres de RocketMQ y se utiliza para administrar la información de metadatos de todo el sistema RocketMQ. Los productores y consumidores localizan el servidor Broker correspondiente a través del Servidor de Nombres. Name Server también es responsable de administrar temas, grupos de consumidores, información de enrutamiento, etc.

Kafka es una plataforma de procesamiento de flujo distribuido de código abierto de Apache Software Foundation. Sus componentes principales incluyen los siguientes:

1.Broker: Uno de los componentes centrales de Kafka, responsable de almacenar y procesar datos. Un sistema Kafka generalmente consta de varios corredores y cada corredor es responsable de administrar una parte de la copia de datos.

2.Tema: Tema se refiere a la categoría o tema de datos, y cada mensaje pertenece a un tema específico. Los productores envían mensajes sobre temas específicos y los consumidores reciben mensajes relacionados suscribiéndose a temas.

3. Partición: La partición consiste en dividir un tema en varias unidades de datos ordenadas y más pequeñas. Cada Partición almacena parte de los datos del mensaje correspondiente al Tema. El beneficio de la partición es que puede mejorar la escalabilidad y las capacidades de procesamiento simultáneo.

4. Productor: El productor es responsable de generar y enviar mensajes al Broker de Kafka. El productor puede optar por enviar mensajes a un tema y una partición específicos.

5. Consumidor: el consumidor se suscribe y consume mensajes del Broker de Kafka. Los mensajes se pueden agrupar en grupos de consumidores y los consumidores de cada grupo de consumidores consumen un tema juntos.

6. Grupo de consumidores: un grupo de consumidores es un grupo de instancias de consumidores con el mismo ID de grupo. Cada mensaje solo será consumido por una instancia de consumidor en el grupo de consumidores para lograr equilibrio de carga y alta disponibilidad.

7. ZooKeeper: Kafka utiliza ZooKeeper para operaciones como la gestión de clústeres, el almacenamiento de metadatos y la elección de líderes. ZooKeeper es responsable de coordinar la comunicación entre Broker y otros componentes.

Diferencias:
existen algunas diferencias entre Kafka, RocketMQ y RabbitMQ cuando se trata de enviar y extraer mensajes.

1.RabbitMQ:
Enviar un mensaje: el productor (Productor) en RabbitMQ envía el mensaje al Exchange especificado. El productor puede especificar la clave de enrutamiento del mensaje al enviar un mensaje, y Exchange enrutará el mensaje a la cola correspondiente según la clave de enrutamiento.
Extracción de mensajes: los consumidores de RabbitMQ extraen mensajes suscribiéndose a colas. Los consumidores pueden consumir mensajes de la cola en el orden predeterminado o en un orden personalizado. Los consumidores pueden optar por extraer mensajes en modo de sondeo o pueden utilizar el método Basic.Consume RPC para extraer mensajes de forma activa.

2. RocketMQ:
Envío de un mensaje: el productor RocketMQ (Productor) envía el mensaje al Tema especificado y no puede seleccionar directamente la cola a la que se enviará, sino que el Broker es responsable de distribuir el mensaje a la cola correspondiente. Puede optar por enviar mensajes de forma sincrónica o asincrónica.
Extracción de mensajes: los consumidores de RocketMQ extraen mensajes suscribiéndose a un tema y especificando un grupo de consumidores. RocketMQ proporciona dos modos de consumo: modo de clúster (consumo con carga equilibrada) y modo de transmisión (cada consumidor recibirá todos los mensajes). Los consumidores pueden extraer mensajes en un orden predeterminado o en un orden específico.

3.Kafka:
Enviar un mensaje: El productor (Productor) en Kafka envía el mensaje al Tema especificado y selecciona la Partición a la que se enviará. Los productores pueden enviar mensajes de forma asincrónica sin esperar a que se escriban en el disco.
Extracción de mensajes: los consumidores de Kafka extraen mensajes suscribiéndose a Temas. Los consumidores pueden controlar de forma independiente desde qué compensación (compensación) comenzar a extraer mensajes y pueden consumir mensajes a su propio ritmo. Kafka proporciona un mecanismo de extracción por lotes de alto rendimiento que puede extraer varios mensajes a la vez.

Los dos primeros pueden implementar colas de retrasos y colas de mensajes fallidos, pero Kafka no.

Supongo que te gusta

Origin blog.csdn.net/qq_56533553/article/details/131696035
Recomendado
Clasificación