Tempo de processamento: 0,363 segundos.

O que é e como funciona o Kafka

48 Views
Tempo de leitura: 5 Minutos 
Atualizado em:

Tudo no mundo da infraestrutura se resume a controles. Sem controles, um superproduto ou serviço, em algum momento, apresentará degradação ou indisponibilidade. Além disso, poderá utilizar recursos ou componentes além do necessário, o que resulta em custos elevados com tecnologia e operações.

Dentro desse contexto, existem serviços que podem proporcionar um maior nível de controle e, de quebra, gerar economia de tempo e dinheiro.

Esse é o caso do Kafka, um serviço de mensageria amplamente utilizado pela praticidade que oferece às equipes de Infraestrutura e Desenvolvimento das empresas.

Este material está dividido em quatro partes. Nesta primeira parte, fazemos uma introdução essencial, apresentando alguns conceitos fundamentais para a compreensão adequada do serviço. 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, pensemos em 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 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: O que é Mensagem?

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.

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: Producers e Consumers

Aquele que demanda 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 e para recebe-los/consumi-los.

Portanto:

  • Producers: Escrevem mensagens no Kafka (servidor web);
  • Consumers: Consomem mensagens do Kafka (monitoração e notificações).

Podemos determinar configuração para Producers e configuração para Consumers, deixando nosso Kafka mais ajustado ao nosso ambiente e aos tipos de demandas.

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.

O termo Broker se dá a um dos componentes do ecosistema do Kafka. Chamado de Kafka Broker, ele literalmente quebra o dado enviado ao Kafka pelos Producers, armazenando esses dados de forma distribuída em suas partições. Para garantir que os dados distribuídos sejam consumidos de forma íntegra, sem perdas, o Kafka faz o controle de distribuição do dado em partições através de um recurso chamado offsets. Desta forma, quando o dado é consultado pelos Consumers, a consulta retorna sem falhas ou perdas e de forma performática.

Veremos tudo isso a seguir.

Cada instância do Kafka é chamado de Broker ou de Kafka Broker. O Broker é um recurso do sistema Kafka que pode ser composto por mais de um Broker.

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

Os tópicos do Kafka são os índices que apontam para as partições utilizadas por cada Tópico, sendo as partições o local onde os dados são armazenados. Ao criarmos um tópico, definimos, além do seu nome, a quantidade de partições que esse tópico utilizará.

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

As Partições são divisões lógicas criadas pelo Kafka no disco existente do servidor onde o Kafka está instalado.

O Kafka as utiliza para performar leitura e gravação de dados, além de proporcionar segurança e flexibilidade à operação do serviço.

Arquitetura do Kafka: Tópicos e Partições

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 de 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 as posições corretas de cada trecho das mensagens e fornecê-la aos Consumers.

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.

0 - 0

Thank You For Your Vote!

Sorry You have Already Voted!