fbpx
Kafka vs RabbitMQ
Publicado em: sexta-feira, 9 de jul de 2021

Vamos direto ao ponto: São coisas diferentes, se você está comparando ambos ou está querendo decidir entre eles, você não entendeu algum deles ou não entendeu nenhum dos dois.

Comparação descabida

A origem da comparação RabbitMQ e Kafka se dá da pura e completa ignorância sobre alguma das duas soluções ou mesmo da falta de compreensão sobre ambas.

Qual é a diferença entre Kafka e RabbitMQ?1

Kafka é uma plataforma de streaming de eventos distribuída que facilita o throughput bruto, focada em um log append-only distribuído que pode ser clusterizado para um maior grau de disponibilidade. Isso difere do RabbitMQ, um message broker distribuído de código aberto que facilita a entrega de mensagens em cenários de roteamento complexos de maneira eficiente. Os recursos do RabbitMQ podem ser expandidos por meio do uso de plug-ins ativados no servidor. Eles também podem ser distribuídos e configurados para serem confiáveis ​​no caso de falha do servidor ou da rede.

Quando você deve usar Kafka vs RabbitMQ?1

O log append-only do Kafka permite que os desenvolvedores acessem stream history e façam processamento direto da stream, enquanto o design do message broker do RabbitMQ se destaca em casos de uso que têm necessidades de roteamento específicas e garantias por mensagem. No entanto, o RabbitMQ está desenvolvendo um novo modelo de estrutura de dados para append-only que fechará a lacuna nos casos de uso de streaming.

Quais são os diferentes casos de uso para Kafka e RabbitMQ?1

Kafka é ideal para casos de uso de big data que exigem o melhor rendimento, enquanto RabbitMQ é ideal para entrega de mensagens de baixa latência, garantias por mensagem e roteamento complexo.

Como eles se comparam cara a cara?2

  • RabbitMQ não pode ser usado como data store; Kafka pode.
  • No RabbitMQ, o ordenação não é garantida, uma vez que temos vários consumidores. Kafka garante a ordem para uma partição em um tópico.
  • As mensagens não podem ser reprocessadas no RabbitMQ – elas precisam ser reenviadas. Fazemos isso com o padrão Message Outbox. O Kafka armazena os dados na ordem em que são recebidos e oferece suporte à reprodução de mensagens com a ajuda de offsets. No entanto, ele apresenta outras vantagens e desvantagens em torno da compactação de dados, por quanto tempo manter os dados na stream, o que fazer se os dados necessários já tiverem sido expurgados da stream, etc.
  • O RabbitMQ não oferece suporte a transações nativamente, ele usa acknowledgments. Kafka oferece suporte a transações.
  • O RabbitMQ tem um ótimo suporte para .NET – ele supera completamente Kafka nesse aspecto. Kafka trata o suporte .NET como uma prioridade secundária.
  • O RabbitMQ possui boas ferramentas para gerenciamento no Windows. Kafka não.
  • O RabbitMQ implementa o AMQP. Essas grades de proteção o ajudam a cair em um poço de sucesso. Com Kafka, você terá que implementar muitos desses padrões e disciplinas sozinho.
  • O RabbitMQ não precisa de um processo externo em execução. O Kafka requer a instância em execução do Zookeeper para o gerenciamento. Zookeeper é responsável por designar uma instância para o tópico.
  • Fora da caixa, RabbitMQ está atrás no suporte a multithreading em comparação com Kafka – mas não muito. Uma vez que NServiceBus funciona com RabbitMQ e tem um bom suporte para multithreading, é um problema menor para RabbitMQ. Em ambos os mundos, o ordenação não é garantido se os consumidores forem dimensionados ou tiverem registros de busca usando várias threads.
  • O RabbitMQ possui vários plug-ins para atender às suas necessidades. Kafka não é tão maduro e, portanto, não tem tantas opções de plugins.

Ainda não ficou claro? Calma!

Apache Kafka® is an event streaming platform. What does that mean?
Kafka combines three key capabilities so you can implement your use cases for event streaming end-to-end with a single battle-tested solution:
To publish (write) and subscribe to (read) streams of events, including continuous import/export of your data from other systems.
To store streams of events durably and reliably for as long as you want.
To process streams of events as they occur or retrospectively.
And all this functionality is provided in a distributed, highly scalable, elastic, fault-tolerant, and secure manner. Kafka can be deployed on bare-metal hardware, virtual machines, and containers, and on-premises as well as in the cloud. You can choose between self-managing your Kafka environments and using fully managed services offered by a variety of vendors.

Uma plataforma de eventos, processa eventos em escala.

Um message broker media comunicação entre partes.

Você consegue fazer quase tudo com todos eles, mas vamos a algumas diferenças importantes:

  • Roteamento avançado não é uma habilidade do Kafka. No Kafka, quem publica, o faz em um tópico. Quem consome, consome um tópico.
  • No RabbitMQ esse conceito é diferente. Quem publica, publica em uma exchange, e quem consome, consome de uma fila. Essa separação é usada de forma às exchanges serem uma abstração de roteamento para ou multiplicar a mensagem e copiá-la para diversas filas de interessados, ou para simplesmente descartar a mensagem porque ninguém tem interesse nela.
  • O RabbitMQ usa AMQP um standard interoperável, Kafka não.
  • A durabilidade da mensagem no Kafka demanda muito planejamento e discussão sobre os modelos dos eventos que estarão nele. Quanto mais tempo os eventos permanecerem na stream, maior é sua demanda por retrocompatibilidade. Se a mensagem está na stream e não pode ser reprocessada, você criou um elefante branco.
  • Já ao final do processamento de uma mensagem com RabbitMQ nós deletamos essa mensagem do Message Broker, então nosso nível de retrocompatibilidade só precisa durar enquanto houverem mensagens da versão antiga na fila. E isso tende a levar no máximo segundos, horas e no máximo dias (em casos muito esquisitos).
  • O foco em latência e mediação de mensagens entre serviços, permite com que filas anônimas sejam criadas, possibilita o uso de RPC em escala, sem necessidade de lidar com partitions , viabiliza o uso de RPC. São diversos benefícios interessantes e comportamentos diferentes do Kafka.

Existe algum cenário em que faz sentido os 2 juntos?

Sim, um exemplo que me vêm à cabeça é o exemplo de agregadores de preços de passagens aéreas.

Há demandas do sistema financeiro que também fazem sentido para cada caso uma solução.

Fonte:

  1. Understanding the Differences Between RabbitMQ vs Kafka | BRIAN MCCLAIN NOVEMBER 16, 2020
  2. Is Kafka or RabbitMQ the right messaging tool for you? |  Yogi Aradhye | Jul 9, 2019

A MasterClass virou Curso

Todo o conteúdo da MasterClass virou Bonus!

Além de mais 3 outros bonus incríveis para ajudar todos que precisam de um up na carreira.

RabbitMQ Newsletter

Novidades e ofertas de conteúdo exclusivo e único no Brasil.

Em 2021 fizemos uma MasterClass em Janeiro, agora em Junho está rolando um treinamento.

RabbitMQ é um assunto que me agrada muito, pois sua capacidade de entregar resultado em projetos de todos os tamanhos é um divisor de águas. Não é tudo que conseguimos usar e tirar proveito em ambientes menores.

A primeira vez que usei RabbitMQ foi em 2013. Desde então nunca mais deixei de usar.

Luiz Carlos Faria

Mensagem do Autor

Espero que goste desse post. Não deixe de comentar e falar o que achou. 

Se acha que esse post pode ajudar alguém que você conheça, compartilhe!

 

Gostou do post?

Esse post é uma fração do que eu posso te ajudar em relação a RabbitMQ.

Venha conhecer o que RabbitMQ pode fazer por você e seus projetos.

Se você quer entregar mais Disponibilidade, Eficiência, Resiliência, Confiabilidade e/ou Escalabilidade, com aplicações .NET, esse curso vai te ajudar a conquistar o sucesso da sua implantação.

0 comentários

Enviar um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.

Lives

Fique de olho nas lives

Fique de olho nas lives no meu canal do Youtube, no Canal .NET e nos Grupos do Facebook e Instagram.

Aceleradores

Existem diversas formas de viabilizar o suporte ao teu projeto. Seja com os treinamentos, consultoria, mentorias em grupo.

Share This