Apache Kafka é um framework para processamento de streaming de eventos em tempo real de código aberto (open-source) que é escalável, rápido e tolerante a falhas. Foi desenvolvido pela equipe do LinkedIn e posteriormente se transformou em um projeto da Apache Software Foundation.

O Kafka funciona como uma plataforma de mensagens que utiliza o modelo de publicação/assinatura e é frequentemente usado para casos de uso de streaming de dados em tempo real e processamento de eventos. Ele é capaz de lidar com tráfego de dados de alto volume de várias fontes e direcioná-lo para vários consumidores rapidamente e de forma confiável.

Além disso, o Kafka armazena fluxos de registros em categorias chamadas tópicos e também permite que os aplicativos processem fluxos de registros à medida que ocorrem.

O Kafka é geralmente usado em situações de análise em tempo real, processamento de fluxo, sincronização de dados entre sistemas diferentes e para a construção de arquiteturas orientadas a eventos. Aqui na Data Science Academy o Apache Kafka é usado em diferentes projetos na Formação Apache Spark 4.0

Características do Apache Kafka

O Kafka foi projetado para permitir um alto throughput para a publicação e subscrição de mensagens e armazenamento de dados. Ele suporta a partição de dados em vários servidores para escalabilidade horizontal.

Além disso, o Kafka é capaz de lidar com milhares de mensagens por segundo, tornando-o ideal para aplicativos que requerem transmissão de dados em tempo real ou quase real.

As mensagens no Kafka são escritas em disco e replicadas para tolerância a falhas. Ele usa o sistema de arquivos do servidor de forma eficiente para garantir a persistência dos dados. O Kafka também tem recursos para resistir à falha de alguns de seus nós. Ele faz isso por meio de replicação de dados entre os nós. Normalmente criamos um cluster Kafka com dois ou mais nós (máquinas).

O Kafka é frequentemente usado em casos de uso de streaming de dados em tempo real, como monitoramento e análise em tempo real. O diagrama abaixo ilustra a arquitetura geral de um cluster Kafka com producers (que produzem os eventos) e os consumers (que consomem os eventos).

kafka

Vantagens do Apache Kafka

Baixa latência: O Kafka foi projetado para operar com baixa latência (atraso de tempo) para fornecer mensagens em tempo real.

Durabilidade: O Kafka armazena os dados por um período de tempo definido. Mesmo que um dos consumidores falhe, ele pode voltar ao sistema e recuperar os dados perdidos.

Multifuncional: O Kafka pode ser usado em uma variedade de aplicações, desde rastreamento de website até análise de dados, passando por log de eventos, etc.

Interoperabilidade: O Kafka pode ser integrado com várias fontes de dados e também pode ser usado com várias linguagens de programação.

Desvantagens do Apache Kafka

Complexidade: O Kafka pode ser complexo de configurar, monitorar e manter com grandes volumes de dados. A configuração e otimização adequadas do Kafka podem exigir um conhecimento profundo do sistema.

Não é ideal para pequenas aplicações: O overhead de manter um cluster Kafka pode não ser ideal para pequenas aplicações ou para casos onde o volume de mensagens é baixo.

Sem suporte para transações distribuídas: Embora o Kafka suporte transações dentro de um único tópico, ele não suporta transações distribuídas entre diferentes tópicos.

Limitações na retenção de dados: O Kafka mantém as mensagens por um período de tempo definido e não é ideal para ser usado como armazenamento a longo prazo de mensagens.


O Apache Kafka é ideal se você precisa processar dados em tempo real. Acesse o site oficial do Apache Kafka.

Equipe DSA