O que é Apache Kafka?

25 set 2020 | Apache Kafka, API, Kafka, Kafka Resources

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. Entretanto, com o tempo, evoluiu para uma plataforma de streaming completa, que oferece todos os recursos básicos para implementar aplicações de processamento em tempo real. Enfim, sua última versão apresenta três opções:
  1. Kafka Client APIs
  2. Kafka Connect
  3. Kafka Streams

Kafka Client APIs

Assim 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 Apache Kafka. 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.
Bem como qualquer outro sistema de mensagens, Apache Kafka funciona em modo assíncrono. O diagrama a seguir explica sua funcionalidade principal:
AdviseU Blog - O que é Kafka?

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 transmitir dados 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 de dados. Além disso, também fornece a noção de tópicos, permitindo a várias aplicações agruparem dados e mantê-los separados de outros dados.

Kafka Broker

É a infraestrutura central da Kafka. Assim sendo, é um cluster de computadores que, em um caso típico, executa uma instância do Kafka Broker. Então, 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.

Kafka Consumer

Solicita e consome dados dos Kafka Broker, enquanto usa APIs especializadas de clientes. Por certo, o Apache Kafka fornece um conjunto de APIs de Consumer. Por sua vez, estes facilitam a implementação de várias instâncias de aplicações, o que permite que todos leiam dados simultaneamente ao 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 dos dados, enquanto o Kafka Broker garante que o mesmo registro não seja enviado a dois consumidores do mesmo grupo. Portanto, essa noção de clusters é o núcleo da escalabilidade do Kafka no lado do consumidor do pipeline de dados.

Kafka Connect

Antes de tudo, é baseado nos componentes principais do Kafka. Assim, oferece um método confiável e escalonável para mover dados entre o Kafka Broker e outras fontes de dados. Aliás, apresenta duas formas diferentes para realizar a movimentação de dados:
  1. Kafka Connectors, prontos para uso
  2. Kafka Connect Framework

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:
  1. Conectores de origem: são construídos na base dos Kafka Producer. Como resultado, você pode usá-los para extrair dados de um sistema de origem (por exemplo, RDBMS) e enviar ao Kafka Broker.
  2. Conectores de sincronização: são a parte complementar dos conectores de origem, construídos na base dos Kafka Consumers. Sem dúvida, você pode usá-los para extrair dados do Kafka Broker e enviar 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.

Kafka Connect Framework

Por conseguinte, 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. Uma vez 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. Ademais, também pode considerar a opção de desenvolver seu conector customizado com a estrutura de conexão Kafka. Entretanto, 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, supomos que você também quer enviar dados a um Kafka Broker para consumo posterior por outra aplicação. Então, modifica o código e implementa APIs do Kafka Producer para enviar dados a um Kafka Broker. Essa abordagem funciona muito bem quando você tem acesso ao código da aplicação. Assim, se não tiver ou não deseja incorporar o Producer ou Consumer Kafka em sua aplicação, prefira um Kafka Connect.
Da mesma forma, se sua aplicação persiste dados em algum sistema de armazenamento ao qual você tem acesso, prefira o Kafka Connect para construir seu pipeline de dados. Principalmente para economizar tempo de desenvolvimento, além de poder ser usado e gerenciado por não desenvolvedores.
Se acaso o conector não existe para seu sistema e você tem a opção de incorporar seu conector ou desenvolver um novo, prefira criá-lo. Já que 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.

Kafka Streams

Kafka Client APIs, Kafka Connect e Kafka Broker juntos fornecem uma infraestrutura de backbone confiável e altamente escalável, que entregam fluxos de dados entre aplicações. Acima de tudo, você pode usar o sistema de processamento de fluxo 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. Ao implementá-lo para processar stream em tempo real, em comparação a outros sistemas do mesmo tipo baseados em cluster, 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 microlotes como outra estrutura de processamento de fluxo. Afinal, a capacidade de trabalhar em cada registro conforme chega é crítica para o tempo de resposta em milissegundos.
Por fim, 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 Kafka Producer, Kafka Consumer e Kafka Connect para lidar com o resto de suas demandas de integração de dados dentro do mesmo cluster. Enfim, uma implementação típica 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