48 Views
Tempo de leitura: 5 MinutosTudo 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.

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.