O que é...

O que é… Kafka?

Por em

O que é...Kafka?

Bom pessoal, seguinte: Apache Kafka. O quê que é isso? Para que que ele serve? Quando eu vou utilizar e aonde eu vou utilizar?

Eu acredito que essas são as principais dúvidas da galera que nunca ouviu falar nessa tecnologia que de fato é fantástica.

O que é o Apache Kafka?

Vamos lá! Primeiramente a gente tem que entender que nós temos diversos problemas para a gente tratar no mundo moderno, aonde dados estão espalhados e sendo enviados de lá para cá entre sistemas fundamentalmente, vamos imaginar que eu tenho um sistema A e eu tenho um sistema B. Esse sistema A quer mandar uma mensagem para o sistema B, então o que normalmente a gente imagina é que esse cara vai falar direto com outro.

Porém, o que que acontece se o nosso sistema B estiver fora do ar? Essa mensagem provavelmente vai ser perdida e para gente garantir que essa mensagem não vai ser perdida a podemos colocar essa mensagem num camarada que  a gente chama de broker.

Portanto, o broker é um camarada que é o intermediário da comunicação entre esses dois camaradas. Legal! Ou seja, eu jogo essa mensagem para esse broker e quando o outro camarada que quer receber essa mensagem estiver no ar, ele pode consumir essa mensagem.

Então uma das principais utilidades do Apache Kafka é ser esse broker. OK!

O que são Tópicos?

O Apache kafka tem um conceito que ele chama de tópicos.

O quê que esse tópico faz? Basicamente eu tenho um camarada que é um produtor de conteúdo e eu tenho um camarada que é o consumidor desse conteúdo, o produtor joga essa mensagem em um tópico e essa mensagem ela fica guardadinha lá bonitinha até que um consumidor vai ler esse tópico e vai começar a consumir essas mensagens.

Peculiaridades

O conceito do Kafka ele é muito, mais muito parecido para quem olha, assim pela primeira vez, como sistema tradicional de filas como RabbitMQ, por exemplo. Porém ele tem algumas peculiaridades que fazem total diferença para você escolher esse camarada no dia a dia para trabalhar com seus sistemas.

Primeira coisa que você tem que entender é que quando um consumidor lê essa mensagem, lê esse tópico e ele consome essa mensagem.

Invés dela ser jogada fora, ela fica armazenada em um banco de dados ali do Apache kafka e se algum momento eu precisar reprocessar ou consumir novamente essa mensagem eu consigo também consumir.

Funcionamento Distribuído

Uma outra coisa muito interessante em relação ao Apache Kafka é que ele funciona de forma distribuída.

Ou seja, ele tem uma resiliência muito grande, porque cada vez que você praticamente cria um tópico você vai falar assim para o Apache Kafka:

“Olha meu amigo eu vou criar um tópico, que é o lugar onde a gente joga as nossas mensagens, e esse tópico ele vai ter três partições”

Ou seja, é como se ele dividisse esse tópico em três partes, em três gavetinhas para você colocar as mensagens, mas essas gavetinhas normalmente elas ficam espalhadas em outras máquinas.

Ou seja, se uma máquina, por exemplo, cair eu garanto que as outras gavetinhas estão no ar para que as mensagens ainda estejam lidas, mas daí você deve estar pensando:

“Wesley, mas e aquele camarada que caiu, eu vou perder aquelas mensagens?” Não, não, senhor!

Replication Factor

O Kafka ele tem um camarada que a gente chama de Replication Factor. O quê que isso significa? Significa que você fala o seguinte:

“Olha meu amigo eu tenho três partições eu vou falar que o meu Replication Factor é de três”.

Isso significa que apesar de eu ter as minhas partições que aonde as gavetinhas onde cada mensagem fica guardada,  eu vou sempre guardar uma cópia dessa partição em outras máquinas que estão distribuídas.

Então, se algum momento uma máquina cair, outra máquina que tem aquela mesma partição que aquela cópia vai assumir e nenhuma mensagem vai ser perdida.

Além disso o Kafka, ele tem recursos como kafka Connect, que ele utiliza conectores que simplesmente você pluga ali e ele começa consumir mensagens de fontes externas. Imagine que eu tenho twitter e eu quero pegar ali a #WesleyWillians.

Ou seja, eu configuro o meu kafka Connect e esse kafka Connect vai ficar lendo o twitter o tempo inteiro e toda vez que ele achar #WesleyWillians, ele vai jogar no Kafka no tópico que a gente escolher.

Apache Kafka – Considerações Finais

O Apache Kafka é realmente um sistema fantástico para você conseguir trabalhar com ferramentas de mensageria inclusive trabalhar com Pub/Sub, por exemplo.

Portanto, todo mundo fica lendo um canal e um produtor produz ali naquele canal, ou seja, nesse tópico e todo mundo consegue ler essas mensagens.

Se você está pensando em alguma solução para você fazer o seu sistema se comunicarem de forma segura e eficiente e que você ainda se precisar consiga reprocessar essas mensagens o Apache Kafka é uma ótima solução para você considerar.