Mensageria com Apache Kafka
Published: 2021-02-25 12:42:18

Nos dias atuais, com tanto recurso tecnológico disponível, cada vez mais sistemas computacionais geram dados e trocam esses dados entre si, ou seja, os usuários dos sistemas são os próprios sistemas.

Um exemplo seria um sistema de monitoramento de frotas de caminhão.

Vamos imaginar um caminhão que tem instalado em seu painel um Sistema A que fica enviando/publicando sua posição de latitude e longitude a cada 5 segundos para um Sistema B. O Sistema B, por sua vez, fica recebendo essas mensagens e marcando no mapa onde o caminhão está.

Agora, se o Sistema B parar de funcionar por alguns minutos ou horas? Fatalmente, quando ele voltar a funcionar não vai conseguir saber por onde o caminhão passou e pode, provavelmente, ter causado algum problema no Sistema A que, por não conseguir falar com o Sistema B, também deu erro e parou.

Uma das maneiras de resolver essa questão é ter um Broker, ou seja, um intermediador entre esses 2 sistemas, que vai receber essas mensagens do Sistema A e mantê-las guardadas até que o Sistema B as consuma. E é aí que entra o Apache Kafka.

## Apache Kafka, um Message Broker de Respeito!
Com esse Broker, agora, o Sistema A envia seus dados de localização através de mensagens para o Kafka e o Sistema B as consome. E se ele cair novamente, as mensagens permanecerão no Kafka até que ele volte e as consuma, podendo assim marcar no mapa todo o trajeto feito pelo Caminhão.

Então, uma das principais atividades do **Apache Kafka** é ser esse **Broker**.

Basicamente, o Kafka trabalha com streaming de dados, com o conceito de Tópicos, onde existe o **Produtor** e o **Consumidor**. O Produtor envia suas mensagens para o Tópico e elas ficam lá guardadas até o Consumidor ler esse tópico e pegá-las.

Mas o Kafka vai muito além disso. Na verdade existe todo um ecossistema funcionando, com vários recursos disponíveis.

###Alguns Recursos
####- Armazena Mensagens já Consumidas
O Kafka não elimina as mensagens que já foram consumidas, armazenando-as no banco de dados. Se por alguma razão o Consumidor precisar reprocessar as mensagens que já foram lidas, isso é totalmente possível.

####- Atua de Forma Distribuída
Não foi fornecido texto alternativo para esta imagem
Quando cria um Tópico é possível criar partições para ele, onde cada partição vai guardar as mensagens do tópico. Além disso, cada partição pode ficar em uma máquina diferente, onde que, se uma máquina cair, as outras estão no ar permitindo que as mensagens continuem sendo lidas.
![Partições Distribuídas](https://media-exp1.licdn.com/dms/image/C4E12AQGpQNO779c3LQ/article-inline_image-shrink_1000_1488/0/1614254977292?e=1619654400&v=beta&t=_ztRmFtWun-G2Kra3KzWuuponX4hw-jO-zv_a7ipb1s)

Fonte imagem: https://whimsical.com/kafka-EbWjeGL3gDg9apxewMyGhB



####- Zookeeper
Com ele é possível gerenciar erros e fazer recuperação, como por exemplo, se o Broker A cair, ele pode redirecionar para o Broker B. Se precisar subir um novo Broker, o Zookeeper atua e faz a comunicação entre todos, ou seja, ele atua para manter tudo em perfeita ordem.

####- Kafka Connect
Com este recurso, através de conectores é possível se plugar em fontes externas e consumir as mensagens, como por exemplo, se conectar ao Twitter, ficar lendo as mensagens e quando encontrar alguma de seu interesse, enviar para o Tópico correspondente.

Com certeza ainda tem muitos outros recursos como as Keys, Compacted Log, Replication Factor, Partition Leadership, Data Compatibility, REST Proxy, Confluent ksqlDB, pois o ecossistema do Kafka é bem grande, mas este artigo traz uma visão geral dessa ótima ferramenta.

###Quem usa?
Não foi fornecido texto alternativo para esta imagem
   E se você está pensando em alguma solução para fazer seu sistema se comunicar com outros de forma segura e eficiente, com a possibilidade de reprocessar as mensagens, ou se está pensando em alguma solução para trabalhar com Microserviços, o Apache Kafka é uma solução para você considerar.



###Referências
- Apache Kafka Documentation - Acesso em: fevereiro de 2021. Disponível em: https://kafka.apache.org/documentation/ 

- Apache Kafka - FullCycle - Wesley Willians - Acesso em: fevereiro de 2021. Disponível em: https://youtube.com/playlist?list=PL5aY_NrL1rjt_AZxj11kQjiTNLGg4ZaZA 

- Infográfico Apache Kafka - FullCycle - Wesley Willians - Acesso em: fevereiro de 2021. Disponível em: https://whimsical.com/kafka-EbWjeGL3gDg9apxewMyGhB 

- Apache Kafka Crash Course - Hussein Nasser - Acesso em: fevereiro de 2021. Disponível em: https://www.youtube.com/watch?v=R873BlNVUB4&list=WL&index=22 

Há braços e até o próximo artigo.

Thiago Luna - [Linkedin](https://www.linkedin.com/in/thiago-luna/)