O que é e como funciona o Kafka

Descubra o que é o Apache Kafka e como essa poderosa plataforma de mensageria funciona para processar grandes volumes de dados em tempo real. Abordarei seus principais conceitos, como tópicos, partições, produtores e consumidores, além de sua aplicação em ambientes distribuídos. Leia e entenda por que o Kafka é essencial para sistemas escaláveis e de alto desempenho!

1019 Views
Tempo de Leitura: 5.40 minutos

Tudo no mundo da infraestrutura se resume a controles e otimização. Sem controles, um super produto ou serviço, em algum momento, apresentará degradação de performance ou indisponibilidade. Além disso, poderá utilizar recursos ou componentes além do necessário (overengineer), o que resulta em custos elevados e complexidades desnecessária.

Dentro desse contexto, existem serviços que proporcionam maiores níveis de controles e, de quebra, podem gerar economia de tempo e dinheiro.

Esse é o caso do Kafka, um serviço de mensageria amplamente utilizado pela praticidade que oferece dadas as suas vantagens como ganhos de simplicidade e maturidade de ambientes.

Este material está dividido em quatro partes. Nesta primeira parte, veremos uma introdução essencial, apresentando alguns conceitos fundamentais para a compreensão adequada. Na segunda parte, exploraremos mais conceitos, mas em cenários de Kafka operando em cluster. Na terceira parte, vamos instalar e configurar o Kafka em três instâncias do VirtualBox e, por fim, na quarta e última parte, exploraremos via linha de comando cada item mencionado nas partes 1 e 2.

Conceitos Fundamentais: O que é Mensageria?

Mensageria é um termo atribuído à prática de tratar mensagens obtidas por sistemas e disponibilizá-las a outros sistemas ou à indivíduos por meio de um intercomunicador, que, nesse caso, é o serviço de mensagens, como o Kafka, por exemplo.

Para entendermos melhor, vamos imaginar uma infraestrutura composta por um servidor web, que executa uma aplicação, um sistema de monitoração que emite alertas em um dashboard a medida que alguma coisa falha na aplicação e, por fim, um sistema de notificação por e-mail e SMS. Porém, por segurança, nenhum deles se comunicam. Eles não possuem acesso direto uns aos outros. Como, então, a monitoração poderia gerar alertas ou o sistema de notificações poderia enviar e-mails e SMS reportando falhas?

Conceitos Fundamentais: Como funciona o serviço de mensagens?

Aqui incluímos um Kakfa na infraestrutura como intercomunicador entre o servidor web, a monitoração e o sistema de notificações. Quando algo de errado ocorrer na aplicação, o servidor web executará jobs que produzirão alertas que serão gravadas no Kafka. Ao notar a existência de mensagens no Kakfa, o sistema de monitoração e o sistema de notificações consumirão essas mensagens para gerar, respectivamente, alertas em dashboard e por e-mail/SMS.

O que é um serviço de mensageria

Ou seja, mensagens são eventos ocorridos em sistemas. Esses eventos são registrados, ou seja, produzidos no Kafka e consumidos por outros sistemas pertinentes.

Conceitos Fundamentais: O que é Kafka?

Agora ficou fácil. O Kafka é um sistema robusto de streaming de mensagens/eventos capaz de armazenar grandes volumes de dados mantendo uma altíssima performance.

O funcionamento dele se baseia em tópicos onde cada tópico conta com partições onde os dados são armazenados. Essas partições são distribuídas entre os “servidores” do Kafka, que se chamam Brokers.

Conceitos Fundamentais: O que é Kafka Broker?

O termo Kafka Broker se dá a um dos componentes do Kafka. Ele é o responsável por receber, armazenar e gerenciar mensagens enviadas aos Producers. Cada Broker mantém os dados organizados por tópicos que, por sua vez, são organizados em partições. Essas partições podem ser replicadas entre outros brokers que compõem o cluster Kafka. Isso proporciona escalabilidade e resiliência contra falhas.

Kafka Producer com Topico Consumers

Para preservar a ordem das mensagens dentro de cada partição e permitir que os Consumers leiam os dados de forma íntegra, o Kafka utiliza um mecanismo chamado offsets. Os offsets identificam a posição sequencial de cada mensagem na partição. Dessa forma, os Consumers podem consultar os dados de forma confiável, sem riscos de perdas de dados ou mesmo da ordem das mensagens.

Conceitos Fundamentais: Producers e Consumers do Kafka

Aquele que realiza demandas de escrita no Kafka é chamado de Producer, ao passo que demandas de leitura são feitas por Consumers. A medida que os dados são gerados pelos Producers e gravados no Kafka, os Consumers são notificados para receber/consumir esses dados.

Arquitetura do Kafka: O que são Tópicos do Kafka?

Os tópicos do Kafka são como índices que apontam para onde o dado está dentro da partição. Um seja, os tópicos são utilizados para organizar a inclusão e a consulta dos dados do Kafka. Esses dados, por sua vez, são armazenados em partições.

Arquitetura do Kafka: O que são as Partições

As Partições são regiões lógicas de armazenamento de dados utilizado pelo Kafka. Em ambientes que contam com mais de um Broker, as partições são replicadas nos brokers. Isso ocorre para prover maior disponibilidade do dado em caso de queda de algum broker.

O que são partições do Kafka

É importante salientar que o dado é gravado por completo dentro das partições, e depois a partição é replicada entre os brokers.

Arquitetura do Kafka: Interação com o Kafka

No que se refere a interação com o Kafka, não é necessário que os Producers e os Consumers se preocupem com partições. Toda interação com o Kafka é feita através dos nomes dos tópicos. O Kafka controla o armazenamento e a distribuição do dado nas partições através dos Offsets, de forma que ele, Kafka, determina o local onde o dado será gravado nos casos de escrita, e onde está gravado nos casos de consulta.

Se pensarmos em utilizar o Kafka com apenas 1 Broker, podemos escolher tranquilamente a quantidade de partições, mas se possuirmos um cluster Kafka com 2 ou mais Brokers, é importante levarmos em consideração o Fator de Replicação, pois um ambiente mal configurado pode gerar perda de dados. Veremos mais sobre Fator de Replicação mais adiante neste artigo.

Arquitetura do Kafka: Offsets

Os offsets são identificadores únicos e sequenciais que são atribuídos a cada mensagem alocada pelo Kafka nas partições dos tópicos. É através deles que o Kafka consegue localizar os dados mesmo que eles estejam fragmentados nos tópicos.

Kafka Tópicos, Partições e Offsets

Resumo

Como vimos, o Kafka é uma ferramenta muito poderosa de mensageria. Podemos utilizá-lo nos mais variados cenários. Desde um sistema de monitoração até sistemas cloud native distribuído podem fazer uso do Kafka para sincronizar fluxos de dados entre Producers e Consumers, gerando integrações importantes com excelente desempenho.

Entender os conceitos aqui apresentados é importante para acelerar o entendimento operacional do serviço.

Em breve parte 2.

4 - 0

Thank You For Your Vote!

Sorry You have Already Voted!

Rolar para cima