(Bartha Bela Tibor) (19 de junho de 2020)

Intro
Se você já trabalhou com enfileiramento de mensagens ou plataformas de streaming, Kafka é um que você deve verificar. Seu melhor uso é para streaming de dados em tempo real.
Caso você esteja considerando o Kafka para seu aplicativo, o Kafka é melhor para os seguintes casos de uso:
- Pub / Submensagens
- Processamento de fluxo
- Armazenamento de dados
Em primeiro lugar, antes de tocar em Kafka, deve-se saber o seguinte: Kafka é extremamente rápido, você tem uma liberdade enorme e é fácil errar quando vem de outra plataforma de enfileiramento de mensagens.
Neste artigo, vamos nos concentrar em fazer as coisas certas com Kafka.
Chave Conceitos:
- mensagem : unidade de dados
- tópico : canal de dados
- partição : os tópicos podem ter mais partições
- deslocamento : posição de uma mensagem em uma partição
- produtor : permite que um aplicativo publique dados para um determinado tópico
- consumidor : o aplicativo pode consumir dados de um ou mais tópicos. Um tópico pode ter vários consumidores. Os consumidores podem se inscrever em qualquer número de partições de um tópico.
- grupos de consumidores : os consumidores podem ser organizados em grupos de consumidores, que estão lendo de um tópico, em paralelo ao ler de diferentes partições
- corretor : gerencia o armazenamento de tópicos
- cluster : vários corretores, contendo vários corretores
- líder / réplica : cada corretor contém um número de partições de um tópico, cada um deles pode ser um líder ou uma réplica. Todas as gravações e leituras em um tópico são realizadas no líder, que coordena a atualização das réplicas. Se um líder falhar, uma réplica assume o papel do líder
Mais sobre o básico do Kafka pode ser encontrado aqui .
Noções básicas de Node.js
Para esta introdução, usaremos Node.js e criaremos o produtor e o consumidor básicos.
Em primeiro lugar, você instalará o Kafka localmente conforme descrito aqui .
Este artigo assume que temos apenas um corretor.
Os tópicos serão criados antes que nosso aplicativo seja executado, veja abaixo.
No momento em que esta introdução foi escrita, existem 3 pacotes estáveis para usar com o NodeJS:
Todos esses funcionam de maneira semelhante, para introdução usaremos node-rdkafka ( npm install node-rdkafka )
Supondo que você instalou o Kafka localmente com as configurações padrão e iniciou um corretor, podemos criar um produtor e consumidor simples.
Crie o tópico manualmente:
Crie o produtor e produza um evento:
Criar o consumidor e consumir evento (s):
Este é um exemplo para um consumidor em movimento. Ele consome eventos à medida que aparecem no tópico. Outra possibilidade é usar um consumidor que não flui, especificando o número de eventos a consumir como parâmetro para consumidor.consumo (número). Nesse caso, obteremos as mensagens após ter um número de mensagens não consumidas no tópico.
Confirmações
Como o Kafka foi projetado para segurança contra falhas, os consumidores podem marcar as mensagens como consumidas – comprometido . Por padrão, node-rdkafka faz auto-commits , também, pode ser feito manualmente: consumer.commit () ou consumer.commitMessage (message) .
No caso do consumidor desconectado, outro consumidor pode continuar a partir da mensagem confirmada.
Bem-vindo ao Kafkaland! Aproveite!
Este é o primeiro de uma série de quatro artigos. Acompanhará casos específicos de uso do Kafka para: microsserviços, chatbots e projetos fintech. Yay!