Conceitos básicos do Apache Kafka

1 out 2020 | Apache Kafka, Conhecimento

Neste artigo, vamos entender alguns conceitos básicos do Apache Kafka, que já foi introduzido em o que é Apache Kafka.
A princípio, o Kafka foi desenvolvido no LinkedIn e, posteriormente, aberto em 2011. Como resultado, seguiu evoluindo até se estabelecer como ferramenta padrão para construir pipelines de dados em tempo real.
De acordo com a documentação oficial, Kafka é semelhante a um sistema de mensagens corporativas. Portanto, em um típico sistema de mensagens, existem três componentes:
  1. Producer (Produtor)
  2. Broker (Intermediador)
  3. Consumer (Consumidor)
Em síntese, Producers são aplicações clientes e enviam as mensagens. Então, Brokers recebem estas mensagens e as armazenam. Por fim, os Consumers leem estas mensagens.

O Apache Kafka

Kafka é um sistema de mensagens corporativas altamente escalonável e tolerante a falhas:
Ecossistema Apache Kafka imagem

O ecossistema Apache Kafka

Em primeiro lugar, o Producer envia mensagens para o Cluster, que é um intermediador em execução em um grupo de computadores. Em seguida, os Clusters armazenam esses dados no registro de mensagens do Kafka.
Mais abaixo na figura, estão as aplicações para o Consumer. Então, este lê e processa as mensagens do Cluster e as para Hadoop, Cassandra ou HBase. Ou envia novamente ao Kafka, para que outra pessoa leia esses registros modificados ou transformados.
Sem dúvida, com rendimento e escalabilidade fantásticos, o Kafka permite que você lide facilmente com um fluxo contínuo de mensagens. Portanto, se puder conectar alguma estrutura de processamento de fluxo ao Kafka, este pode ser sua infraestrutura de backbone em tempo real. Além disso, também fornece APIs de processamento de fluxo.
Em seguida, está o Kafka Connector, pronto para importar ou exportar dados do Kafka. Não só são conectores prontos para uso, como também são estruturas para construir conectores especializados para qualquer aplicação.
Finalmente, por ser uma plataforma de streaming distribuída, pode ser usado tanto como um sistema de mensagens corporativo, como também para simplificar pipelines com um grande número de Consumers e Producers. Além disso, pode também ser usado como plataforma de processamento de fluxo. E não para aí: também fornece conectores para exportar e importar dados em massa de bancos de dados e outros sistemas.

Os conceitos básicos do Apache Kafka

Antes de tudo, para implementar o Kafka, você precisa entender alguns parâmetros de configuração. Por exemplo, precisa ajustar ou personalizar seu comportamento de acordo com os requisitos e casos de uso. A seguir, conheça alguns conceitos básicos do Apache Kafka:
  1. Producer
  2. Broker
  3. Consumer
  4. Cluster
  5. Tópico
  6. Partição
  7. Deslocamento
  8. Grupos de Consumers

1. Producer

É a aplicação que envia mensagens. Por analogia, podem ser uma string simples até um dado complexo. Seja como for, para o Kafka, é só uma simples matriz de bytes.
Se acaso você quiser enviar um arquivo ou todos os registros de uma tabela para o Kafka, deve criar uma aplicação Producer. Dessa forma, dispara uma consulta no seu banco de dados, coleta o resultado e envia cada linha como uma mensagem.

2. Broker

É o servidor Kafka. Em outras palavras, o Broker atua como um intermediador de mensagens entre o Producer e o Consumer. Como não interagem diretamente, usam o Broker para intermediar essa troca de mensagens.

3. Consumer

É a aplicação que recebe dados. Por isso, Consumers são os destinatários. Mas, lembre-se: Producers só enviam dados ao servidor. E qualquer interessado nesses dados pode ser um Consumer, que pode enviá-los por qualquer Producer, desde que tenha permissão para lê-os.
Enfim, para ler o arquivo enviado por um Producer, você deve criar uma aplicação de Consumer e solicitar os dados. Então, o Broker enviará algumas mensagens. Assim, a aplicação cliente receberá algumas linhas, irá processá-las e novamente solicitará mais mensagens. Ou seja, esse processo de solicitação e fornecimento de mensagens continuará enquanto elas chegarem do Producer.

4. Cluster

Antes de mais nada, um cluster é um grupo de computadores que atuam juntos para um propósito comum. Já que o Kafka é um sistema distribuído, o Cluster tem esse mesmo significado. Ou seja, é um grupo de computadores executando uma instância do Broker.

5. Tópico

Enquanto o Producer envia dados ao Broker, o Consumer solicita esses dados. Contudo, é necessário haver algum mecanismo de identificação para solicitar os dados de um Broker. Então, vem a noção de tópico, que é um conjunto de fluxo dados.
Por exemplo, você cria um tópico chamado Pedidos Globais e todo ponto de venda pode ter um Producer. Logo depois, este envia os detalhes do pedido como uma mensagem ao tópico chamado Pedidos Globais. Ao mesmo tempo, um assinante interessado nesse tópico também pode se inscrever.

6. Partição

De fato, o Broker armazena dados para um tópico, mas que podem ser enormes. Maiores até que a capacidade de armazenamento de um computador. Portanto, nesse caso, uma das soluções mais importantes é dividir esses dados em duas ou mais partes e distribuí-lo para vários computadores.
Ou seja, como o Kafka é um sistema distribuído e executado em várias máquinas, é evidente que possa dividir um tópico em partições e armazenar em um computador. Por isso, o Kafka pode criar dez ou cem partições, que devem ser suficientes.
No entanto, quem toma essa decisão é você. Ao criar um tópico, você decide que o Broker criará essa quantidade de partições. Mas, lembre-se: cada partição fica em uma única máquina. Por consequência, você não pode refazê-las. Então, é importante fazer algumas estimativas e cálculos para definir o número dessas partições.

7. Deslocamento

É um número de sequência de uma mensagem em uma partição, atribuído conforme chegam e se tornam imutáveis.
Assim sendo, o Kafka armazena todas na ordem de chegada em uma partição. Dessa forma, a primeira mensagem obtém o deslocamento “0”. A próxima recebe o “1” e segue aumentando para as seguintes. Porém, não há deslocamento global entre as partições, o que a torna local. Portanto, se você deseja localizar uma mensagem, deve saber três coisas: o nome do tópico, o número da partição e o do deslocamento. Assim, poderá localizar diretamente uma mensagem.

8. Grupo de Consumers

Muitos Consumers formam grupos para compartilhar o trabalho. Por exemplo, é como se você tivesse uma grande tarefa e quer dividi-la entre várias pessoas. Então, cria um grupo e compartilha o trabalho entre seus membros.
Ou, como em uma rede de varejo, em que cada loja tem seus faturamentos. Só que você deseja trazer todas as faturas de cada uma para o seu data center. Sem dúvida, como o Kafka é uma excelente solução para transportar dados como esses, você decide implementá-lo.
Antes de tudo, você cria um Producer para cada faturamento. Então, esse envia as contas como uma mensagem para um tópico Kafka. Por fim, o próximo passo é criar um Consumer, que lerá os dados do tópico e os gravará em seu data center.
Mas há centenas de Producers enviando rapidamente muitos dados para um único tópico. Portanto, você decide criar um grande Kafka Cluster, particionar seu tópico e distribuir pelo cluster. Agora, vários Brokers estão compartilhando a carga de trabalho para receber e armazenar dados. Dessa maneira, você tem muitos Producers e vários Brokers para compartilhar a carga de trabalho.
Em conclusão, o particionamento e o grupo de Consumers são uma ferramenta para escalabilidade. Já que o número máximo de Consumers em um grupo é igual ao total de partições que há em um tópico. Enquanto isso, o Kafka Broker não permite que mais de um Consumer leia a mesma partição simultaneamente. Por fim, essa restrição é necessária para evitar a duplicidade na leitura dos registros.

Extra: caso de uso do Apache Kafka

Em princípio, um sistema de mensagens típico parece muito simples. Agora, vamos examinar o problema de integração de dados em uma grande organização:
Solução típica de Integração de Dados imagem

Caso de uso: solução típica de Integração de Dados

Conforme a figura mostra, este é o requisito de integração de dados em uma grande empresa. Ao mesmo tempo, existem muitos sistemas de origem e vários de destino. Então, você recebe a tarefa de criar pipelines de dados para movê-los entre esses sistemas. Por outro lado, a empresa que está crescendo e o número desses sistemas fica cada vez maior. Por fim, seu pipeline de dados vira uma bagunça. E alguma parte dele continuará interrompendo todos os dias.
No entanto, ao usar um sistema de mensagens para resolver esse tipo de problema de integração, a solução pode ser mais simples e limpa, como mostrado abaixo:
Integração com um Sistema de Mensagens imagem

Caso de uso: integração com um sistema de mensagens

Desse modo, essa é a ideia descoberta pela equipe do LinkedIn, que começou a avaliar os sistemas de mensagens existentes. Mas nenhum deles atendeu aos critérios para oferecer suporte ao rendimento e a escala desejados. Assim, surgiu o Kafka.

0 comentários

Enviar um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Share This