Bem-vindo a Kafkaland!

(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:

  1. Node-rdkafka
  2. KafkaJS
  3. Kafka-node

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!

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *