O que é Kafka?

O que é Apache Kafka?

25 set 2020 | Apache Kafka, Conhecimento

Apache Kafka é uma plataforma de streaming distribuída, baseado nos princípios de um sistema de mensagens. A princípio, foi implementado como um sistema de mensagens para criar um pipeline de dados robusto. Mas, com o tempo, evoluiu para uma plataforma de streaming completa, que oferece todos os recursos básicos para implementações em tempo real. Enfim, sua última versão apresenta três opções:
  • Kafka Client APIs
  • Conectores Kafka
  • Kafka Streams

Primeiro, o Kafka Client APIs

Acima de tudo, como qualquer sistema de mensagens, Apache Kafka tem três componentes principais:
  1. Producer (Produtor)
  2. Broker (Intermediador)
  3. Consumer (Consumidor)
Em síntese, esses três componentes são a base do Kafka. Portanto, todo o resto é construído em cima dessa infraestrutura central. Seja como for, são capazes de criar uma infraestrutura de mensagens altamente escalonável e pipelines de dados de streaming em tempo real.
Além disso, Apache Kafka funciona em modo assíncrono. Só para exemplificar, o diagrama a seguir explica sua funcionalidade principal:
O que é Apache Kafka?

1. Kafka Producer

Envia dados para ao Kafka Broker durante o uso de APIs de clientes específicos. Então, você pode implementar várias instâncias dos Producers e todos podem transmiti-los simultaneamente aos Brokers. Portanto, a noção de várias aplicações que enviam dados para o Kafka Broker é o núcleo da escalabilidade no lado do produtor do pipeline. Além disso, também fornece a noção de tópicos, permitindo a várias aplicações agruparem dados e mantê-los separados.

2. Kafka Broker

É a infraestrutura central da Kafka. Desse modo, é um cluster de computadores que, em um caso típico, executa uma instância do Kafka Broker. Além de armazenar mensagens em disco local, conta também com a capacidade de replicação. Portanto, uma mensagem recebida por um serviço do Broker também é copiada e replicada para outros, fornecendo uma tolerância a falhas.

3. Kafka Consumer

Solicita e consome dados dos Kafka Broker, enquanto usa APIs especializadas de clientes. Por certo, o Apache Kafka fornece as APIs de Consumer, que facilitam a implementação de várias instâncias de aplicações. Portanto, permite que todos leiam dados ao mesmo tempo que o Kafka Broker.

Além disso, essas APIs também oferecem a noção de clusters de Consumers. Desse modo, você pode agrupá-los para compartilhar a carga de trabalho de leitura e processamento de dados. Então, cada Consumer no cluster recebe uma parte deles, enquanto o Kafka Broker garante que o mesmo registro não seja enviado a dois consumidores do mesmo grupo. Por fim, essa noção de clusters é o núcleo da escalabilidade do Kafka no lado do consumidor do pipeline.

Segundo, os Conectores Kafka

Antes de tudo, é baseado nos componentes principais do Apache Kafka. Assim, oferece um método confiável e escalonável para mover os dados entre o Kafka Broker e outras fontes. Aliás, apresenta duas formas diferentes para realizar essas movimentações:
  • Kafka Connectors
  • E Kafka Connect Framework

Prontos para uso: Kafka Connectors

Primeiramente, Kafka Connectors estão prontos para uso e disponíveis no mercado e move dados entre o Kafka Broker e outras aplicações. Sobretudo, você não escreve códigos ou faz alterações em suas aplicações, pois são puramente baseados em configurações. Além disso, há dois grupos diferentes de conectores:
  • Os de origem, que são construídos na base dos Kafka Producer. Como resultado, extrai dados de um sistema de origem (por exemplo, RDBMS) e envia ao Kafka Broker.
  • E os de sincronização, que são a parte complementar dos conectores de origem, construídos na base dos Kafka Consumers. Sem dúvida, extrai dados do Kafka Broker e envia ao sistema de destino (por exemplo, HDFS).
AdviseU Blog - O que é Kafka Connect?

Dica: a comunidade Kafka desenvolveu muitos conectores de origem e de sincronização prontos para uso para vários sistemas. Por fim, você os encontra no Kafka Connect Hub.

Robusta e fácil de usar: Kafka Connect Framework

Em seguida, a segunda parte do Kafka Connect é uma estrutura de desenvolvimento robusta e fácil de usar. Caso você não tenha um conector pronto para usar em seu sistema, pode aproveitar a estrutura de conexão Kafka para desenvolver os seus próprios. Já que é simplificado para que você escreva um conector personalizado de alta qualidade, alto desempenho, confiável e de forma rápida.

Por que precisamos conectar o Kafka?

Decerto, ao criar um pipeline de dados com Kafka, você pode implementar um Producer / Consumer ou usar um Connector já pronto. Ou, pode também desenvolver o seu conector customizado com a estrutura de conexão Kafka. Porém, a questão é quando usar o quê?
Producers e Consumers Kafka estão integrados em sua aplicação, já que se tornam parte integrante desta. Ao mesmo tempo, sua aplicação pode persistir dados em um sistema de armazenamento, como um banco de dados ou um arquivo de log.
No entanto, supondo você também quer enviar dados ao Kafka Broker para consumo posterior por outra aplicação. Então, modifica o código e implementa APIs do Kafka Producer para enviar os dados. Sem dúvida, isso funciona bem se você tiver acesso ao código da aplicação. Mas, se não tiver ou não deseja incorporar o Producer ou o Consumer, prefira um Kafka Connect.
Todavia, se sua aplicação persiste dados em um sistema ao qual você tem acesso, prefira o Kafka Connect para construir seu pipeline. Principalmente para economizar tempo de desenvolvimento, além de poder ser usado e gerenciado por não desenvolvedores.
Mas, se o conector não existe, prefira criá-lo. Sobretudo porque a estrutura fornece recursos prontos para uso, como gerenciamento de configuração, armazenamento de deslocamento, paralelização, tratamento de erros, suporte para diferentes tipos de dados e APIs REST de gerenciamento padrão.

Por fim, o Kafka Streams

Juntos, Kafka Client APIs, Conectores Kafka e Kafka Broker fornecem infraestrutura de backbone confiável e escalável, que entregam fluxos de dados entre aplicações. Acima de tudo, você pode usar o sistema que preferir para desenvolver uma aplicação de fluxo em tempo real.
Seja como for, a partir do Kafka 0.10, a poderosa biblioteca de processamento de stream, Kafka Streams, está incluída. Dessa forma, desenvolvedores podem estender suas aplicações padrão para consumir, processar e produzir novos fluxos de dados. Por certo, ao implementá-lo, em comparação a outros sistemas do mesmo tipo, você pode evitar o custo e a sobrecarga de manter um cluster adicional.
AdviseU Blog - O que é Kafka Streams?
Assim, os fluxos do Kafka permitem que você processe dados em tempo real por registro. Portanto, não precisa agrupar dados em pequenos lotes, nem trabalhar em micro lotes como outra estrutura para processar de fluxo. Afinal, a capacidade de trabalhar em cada registro é crítica para o tempo de resposta em milissegundos.
Finalmente, uma aplicação Kafka lê dados em tempo real, executa a ação necessária e os envia de volta ao Kafka Broker em um tópico diferente. Ainda assim, você pode usar o Producer, o Consumer e o Connect para lidar com o resto das demandas de integração de dados dentro do mesmo cluster. Enfim, uma implementação pode usar todas as três soluções para resolver um problema maior e criar uma aplicação robusta.

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