Começando com Apache Kafka

(13 de junho de 2019)

O que é Apache Kafka?

O Apache Kafka é uma plataforma de mensagens somente anexada baseada em publicação-assinatura distribuída originalmente desenvolvido por LinkedIn e posteriormente doado para Fundação Apache .

(* A imagem é para embelezamento)

Casos de uso

  • Mensagens
  • Agregação de log
  • Processamento de fluxo
  • Log de confirmação
  • Sourcing de eventos, etc.

Como funciona?

Kafka funciona no modelo pub-sub. Portanto, haverá um consumidor / grupo de consumidores e editor.

O produtor publicará dados em um tópico específico e o consumidor inscrito no tópico consumirá dados. Vários produtores podem publicar no mesmo tópico, mas apenas um consumidor é capaz de consumir dados de um tópico por vez.

Agora você pode perguntar se apenas um o consumidor pode consumir de um tópico por vez e, se houver milhares de eventos chegando, como podemos escaloná-los?

Ok. Nesse caso, podemos dividir o tópico em partições para obter escalabilidade.

Quando fazemos a partição do tópico, cada mensagem na partição tem um offset\_id / message\_id. Na foto à esquerda fizemos 3 partições e cada produtor enviará um evento para uma partição específica. E o consumidor lerá de uma partição específica. Agora, se temos 300 eventos / s sendo enviados, ele será dividido em 3, portanto, cada partição terá 100 mensagens / s. Desta forma, podemos alcançar o balanceamento de carga. Quando fazemos a partição, o Kafka apenas garante a ordem das mensagens no nível da partição . Para obter a ordem com o particionamento, temos que usar a chave .

Se aumentarmos os eventos, teremos que fazer mais partições e adicionar mais consumidores para dimensionar e alcançar o balanceamento de carga .

Assim que recebermos o evento, temos que enviar o log para Kafka, então Kafka entenderá que o evento foi processado e Kafka não o enviará novamente. Se no meio do processamento nosso aplicativo esmagar, Kafka enviará esse evento novamente para processar.

Fator de replicação:

O fator de replicação é como os dados no Kafka serão replicados com diferentes corretores Kafka. Digamos que escolhemos o fator de replicação N = 3, os dados serão replicados para mais 2 corretores. Portanto, o Kafka ainda funcionará se o corretor N-1 cair, porque há pelo menos um corretor ativo com os dados para mantê-lo funcionando.

O que é Apache Zookeeper?

Apache Zookeeper é um serviço centralizado para sistemas distribuídos para um armazenamento de valor-chave hierárquico, que é usado para fornecer um serviço de configuração distribuída, sincronização serviço e registro de nomenclatura para grandes sistemas distribuídos. O Apache Kafka não funciona sem o Zookeeper. Gerenciamento de cluster Kafka, se um corretor for ativado ou desativado, se um novo tópico for criado … este tipo de dados sendo sincronizado com um corretor Kafka diferente por meio do Zookeeper.

Spinup Kafka>

docker-compose up

Consumidor (Golang)>

Produtor (Kotlin)>

Resultado>

Waiting for messages...Topic : users.notification
Partition : 0
Offset : 1
Value : hello

Recursos:

1. github.com/confluentinc/confluent-kafka-go
2. compile group: "io.opentracing.contrib", name: "opentracing-kafka-client", version: "0.1.2"

Deixe uma resposta

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