Fala, galera! Tudo certo?

Um dos grandes desafios atuais é como integrar sistemas complexos e implementar uma arquitetura de microsserviços.

Por esse motivo, estou trazendo uma introdução ao Apache Kafka, que é uma das mais presentes ferramentas para a resolução desse problema.

Abordaremos nessa postagem:

  1. O que é o Apache Kafka
  2. Como instalar
  3. Algumas configurações
  4. Criando nosso primeiro tópico
  5. Mandando nossa primeira mensagem

Sem mais delongas, bora começar!

O que é o Apache Kafka

Antes de entrarmos no Kafka, vamos entender o que são eventos.

Os eventos, de forma resumida, são dados gerados em tempo real. Tais dados, podem vir de sensores, API’s ou outras aplicações.

Normalmente, existem partes de nossos sistemas que estão interessados no consumo desses eventos, por exemplo:

Para um sistema de banco que libera um empréstimo, podemos ter diversos serviços querendo consumir essa informação.

No diagrama abaixo, podemos ver um exemplo de alguns sistemas que poderiam estar interessados nessa informação de solicitação de empréstimo (getLoan).

O Apache Kafka tem como objetivo ser uma camada que cuida desses eventos ou mensagens. Provendo diversas ferramentas para implementar uma arquitetura eficiente de eventos.

Os principais recursos do Kafka são:

  1. Publish – publicar eventos.
  2. Subscribe – lê esses eventos.
  3. Storage – armazena os eventos pelo tempo que você quer.
  4. Process – processa os eventos no momento em que eles ocorrem.

Atualmente, o Apache Kafka é amplamente utilizado no mercado, principalmente em arquiteturas de microsserviços, funcionando como um hub de comunicação entre esses microsserviços.

E para o consumo em dados real-time, é um ferramenta importantíssima para ter-se em sua caixa de ferramentas.

Como instalar o Apache Kafka

Como o Kafka utiliza o Scala (que já vem junto com a aplicação), você precisa ter instalado ao Java.

No link abaixo, podemos encontrar os binários para realizar o setup do Kafka.

– Kafka 3.2.0 + Scala 2.13

Download: https://dlcdn.apache.org/kafka/3.2.0/kafka_2.13-3.2.0.tgz

Após baixarmos o arquivo, podemos descompactar com o comando abaixo:

tar -zxf kafka_2.12-3.2.0.tgz

Depois disso, entramos no diretório do Kafka e já podemos executar a aplicação, primeiro executando o Zookeeper e depois o Kafka.

bin/zookeeper-server-start.sh config/zookeeper.properties

bin/kafka-server-start.sh config/server.properties 

Particularmente, eu prefiro executa-los em terminais distintos, veja a saída do console:

Saída do Zookeeper
Saída do Kafka

Algumas configurações adicionais

Existem 2 configurações que eu gostaria de mostrar nesse primeiro momento.

A primeira, refere-se aos logs, nesse caso são as mensagens mesmo, não logs de aplicação.

O segundo, sobre o numero de partições dos tópicos.

Por padrão o Kafka e o Zookeeper armazenam os logs das mensagens no diretório /tmp, logo, eles são apagados e não conseguimos persistir os dados. Para podermos guardar as informações, precisamos ajustar os arquivos de configuração de ambos.

Antes de modificarmos os arquivos, dentro do diretório do Kafka, vamos criar algumas pastas.

data/kafka e data/zookeeper

mkdir data
mkdir data/kafka
mkdir data/zookeeper

Então, vamos editar o primeiro arquivo, dentro do diretório do Kafka, em “config/server.properties”

Dentro dele, localizaremos a propriedade “log.dirs”, e colocaremos o caminho completo dos logs.

Veja como ficou o meu:

Ainda no diretório do Kafka, vamos alterar o arquivo de configuração do Zookeeper, que fica em “config/zookeeper.properties”.

No arquivo, localizaremos a propriedade “dataDir”, e colocaremos o caminho completo.

Veja:

Terminamos o primeiro ponto, agora vamos ao segundo, as partições.

Essa propriedade é importante, pois define o nível de paralelismo de um tópico. Vamos alterá-la utilizando 3 como o tamanho das partições.

No mesmo arquivo em que alteramos o diretório de logs do Kafka (config/server.properties), vamos alterar a quantidade de partições na propriedade “num.partitions” .

Veja como ficou:

Criando nosso primeiro tópico

Agora que fizemos as configurações, vamos criar nosso primeiro tópico!

Por hora, utilizaremos o terminal e o Kafka, posteriormente faremos com uma linguagem de programação.

Dentro do diretório do Kafka, podemos criar um tópico utilizando o comando abaixo:

bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --topic NOSSO_PRIMEIRO_TOPICO 

Depois disso, com o comando abaixo, podemos verificar o tópico que acabamos de criar.

bin/kafka-topics.sh --describe --topic NOSSO_PRIMEIRO_TOPICO --bootstrap-server localhost:9092 

Veja como ficou:

Mandando nossa primeira mensagem

Agora que criamos nosso primeiro tópico, vamos mandar algumas mensagens!

O comando abaixo, habilita o console para o envio de mensagens.

bin/kafka-console-producer.sh --broker-list localhost:9092 --topic NOSSO_PRIMEIRO_TOPICO

Veja abaixo algumas mensagens que enviei no tópico.

Agora, com o comando abaixo, vamos consumir as mensagens enviadas ao tópico.

Nesse caso, vou consumir as mensagens desde o começo do envio. Para consumir apenas mensagens novas, remova a opção “–from-beginning”.

bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic NOSSO_PRIMEIRO_TOPICO --from-beginning

Vejam as mensagens consumidas:

Conclusão

E essa foi nossa introdução ao Apache Kafka! Espero que tenham gostado!

Para a próxima postagem deste tema, vou realizar o consumo e produção de mensagens já com alguma linguagem de programação, mas creio que alguns conceitos importantes puderam ser abordados neste post!

Muito obrigado e até a próxima! 🙂

Links úteis


Jefferson Soares

Olá! Sou Jefferson. Trabalho com: Dados, Dashboards, SQL, SAS, Python e muito mais! Criei esse cantinho para postar alguns conhecimentos. :)

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comentários
Inline Feedbacks
View all comments