Comparação de arquitetura científica popular de RabbitMQ, RocketMQ e Kafka

Comparação Comparação Insira a descrição da imagem aqui
Insira a descrição da imagem aqui
de Arquitetura
Insira a descrição da imagem aqui
Insira a descrição da imagem aqui

Insira a descrição da imagem aqui
Pode-se perceber pela arquitetura que os três são um tanto semelhantes, mas há muitas diferenças nos detalhes. Abaixo iremos apresentá-los a partir de seus vários componentes:

RabbitMQ é um middleware de fila de mensagens de código aberto. A seguir estão vários conceitos relacionados no RabbitMQ:

1. Produtor: O produtor é o remetente das mensagens e as envia para a fila de mensagens do RabbitMQ.

2. Consumidor: O consumidor é o receptor da mensagem, ele obtém a mensagem da fila de mensagens do RabbitMQ e a processa.

3. Message Queue: Message Queue é o componente principal do RabbitMQ e é usado para armazenar mensagens a serem processadas. Os produtores enviam mensagens para a fila e os consumidores recebem mensagens da fila para processamento.

4. Exchange: A exchange é responsável por receber mensagens enviadas pelos produtores e encaminhar as mensagens para uma ou mais filas de mensagens de acordo com determinadas regras. Os tipos de troca comuns incluem troca direta, troca de tópicos, troca de fanout, etc.

5. Vinculação: Vinculação refere-se à associação de um switch a uma fila de mensagens e define para quais filas o switch roteia as mensagens. As ligações normalmente usam regras (chaves de roteamento) para corresponder mensagens e filas.

6. Chave de roteamento: A chave de roteamento é uma palavra-chave anexada pelo produtor ao enviar a mensagem ao switch, que é usada para especificar as regras de roteamento da mensagem.

RocketMQ é o middleware de mensagens distribuídas de código aberto do Alibaba. A seguir estão alguns conceitos relacionados ao RocketMQ:

1. Produtor: O produtor é responsável por gerar e enviar mensagens ao RocketMQ.

2. Consumidor: Os consumidores assinam e consomem mensagens do RocketMQ.

3. Tópico: Tópico é uma classificação lógica de mensagens, e cada mensagem pertence a um tópico específico. Os produtores enviam mensagens para tópicos específicos e os consumidores recebem mensagens relacionadas assinando tópicos.

4. Fila de mensagens: o tópico é dividido em várias filas de mensagens e cada fila de mensagens armazena mensagens em ordem. Os consumidores extraem mensagens da fila de mensagens para consumo.

5. Grupo de consumidores: um grupo de consumidores é um grupo de instâncias de consumidores com o mesmo ID de grupo. Cada mensagem será consumida apenas por uma instância de consumidor no grupo de consumidores para obter balanceamento de carga e alta disponibilidade.

6.Broker: Broker é o componente principal do RocketMQ, responsável por receber, armazenar e encaminhar mensagens. Um sistema RocketMQ geralmente consiste em vários Brokers, e cada Broker é responsável por gerenciar várias filas de mensagens. Cada fila de mensagens pertence a apenas um Broker, mas um Broker pode gerenciar várias filas de mensagens.

7. Servidor de nomes: Servidor de nomes é o componente de serviço de nomenclatura do RocketMQ e é usado para gerenciar informações de metadados de todo o sistema RocketMQ. Produtores e consumidores localizam o servidor Broker correspondente através do Servidor de Nomes. O Name Server também é responsável por gerenciar tópicos, grupos de consumidores, informações de roteamento, etc.

Kafka é uma plataforma de processamento de fluxo distribuído de código aberto da Apache Software Foundation. Seus componentes principais incluem o seguinte:

1.Broker: Um dos principais componentes do Kafka, responsável pelo armazenamento e processamento de dados. Um sistema Kafka geralmente consiste em vários Brokers, e cada Broker é responsável por gerenciar uma parte da cópia dos dados.

2.Tópico: Tópico refere-se à categoria ou tópico de dados, e cada mensagem pertence a um tópico específico. Os produtores enviam mensagens para tópicos específicos e os consumidores recebem mensagens relacionadas assinando tópicos.

3. Partição: A partição serve para dividir um tópico em várias unidades de dados menores e ordenadas. Cada Partição armazena parte dos dados da mensagem correspondente ao Tópico. A vantagem do particionamento é que ele pode melhorar os recursos de processamento simultâneo e a escalabilidade.

4. Produtor: O produtor é responsável por gerar e enviar mensagens ao Broker do Kafka. O produtor pode optar por enviar mensagens para o tópico e a partição especificados.

5. Consumidor: O consumidor assina e consome mensagens do Broker Kafka. As mensagens podem ser agrupadas em grupos de consumidores, e os consumidores de cada grupo de consumidores consomem um Tópico juntos.

6. Grupo de Consumidores: Um grupo de consumidores é um grupo de instâncias de consumidores com o mesmo ID de grupo. Cada mensagem será consumida apenas por uma instância de consumidor no grupo de consumidores para obter balanceamento de carga e alta disponibilidade.

7. ZooKeeper: Kafka usa ZooKeeper para operações como gerenciamento de cluster, armazenamento de metadados e eleição de líder. ZooKeeper é responsável por coordenar a comunicação entre o Broker e outros componentes.

Diferenças:
Existem algumas diferenças entre Kafka, RocketMQ e RabbitMQ quando se trata de enviar e receber mensagens.

1.RabbitMQ:
Envie uma mensagem: O produtor (Produtor) no RabbitMQ envia a mensagem para o Exchange especificado. O produtor pode especificar a chave de roteamento da mensagem ao enviar uma mensagem, e o Exchange encaminhará a mensagem para a fila correspondente com base na chave de roteamento.
Extraindo mensagens: os consumidores no RabbitMQ extraem mensagens inscrevendo-se em filas. Os consumidores podem consumir mensagens da fila na ordem padrão ou personalizada. Os consumidores podem optar por extrair mensagens no modo de pesquisa ou podem usar o método RPC Basic.Consume para extrair mensagens ativamente.

2. RocketMQ:
Envio de mensagem: O produtor RocketMQ (Produtor) envia a mensagem para o Tópico especificado e não pode selecionar diretamente a fila a ser enviada, em vez disso, o Broker é responsável por distribuir a mensagem para a fila correspondente. Você pode optar por enviar mensagens de forma síncrona ou assíncrona.
Extraindo mensagens: os consumidores do RocketMQ extraem mensagens inscrevendo-se em um tópico e especificando um grupo de consumidores. RocketMQ oferece dois modos de consumo: modo cluster (consumo com balanceamento de carga) e modo broadcast (cada consumidor receberá todas as mensagens). Os consumidores podem extrair mensagens em uma ordem padrão ou em uma ordem especificada.

3.Kafka:
Enviar uma mensagem: O produtor (Produtor) no Kafka envia a mensagem para o Tópico especificado e seleciona a Partição para a qual será enviada. Os produtores podem enviar mensagens de forma assíncrona, sem esperar que as mensagens sejam gravadas no disco.
Extraindo mensagens: os consumidores no Kafka extraem mensagens inscrevendo-se em Tópicos. Os consumidores podem controlar de forma independente de qual deslocamento (deslocamento) começar a extrair mensagens e podem consumir mensagens em sua própria velocidade. Kafka fornece um mecanismo de extração em lote de alto desempenho que pode extrair várias mensagens ao mesmo tempo.

Os dois primeiros podem implementar fila de atraso e fila de mensagens não entregues, mas kafka não.

おすすめ

転載: blog.csdn.net/qq_56533553/article/details/131696035