O que é o Apache Kafka?

30 de abril de 2025

8 minutos

Autores

Ian Smalley

Senior Editorial Strategist

O que é o Apache Kafka?

O Apache Kafka é uma plataforma de fluxo de eventos de código aberto, distribuída e que processa dados em tempo real. O Kafka se destaca na compatibilidade com aplicações orientadas a eventos e na criação de pipelines de dados confiáveis, oferecendo baixa latência e entrega de dados de alto rendimento.

Atualmente, bilhões de fontes de dados produzem continuamente fluxos de informações, muitas vezes na forma de eventos, estruturas de dados fundamentais que registram qualquer ocorrência no sistema ou no ambiente. 

Normalmente, um evento é uma ação que impulsiona outra ação como parte de um processo. Um cliente fazendo um pedido, escolhendo um assento em um voo ou enviando um formulário de inscrição são exemplos de eventos. Um evento não precisa envolver uma pessoa; por exemplo, o relatório de temperatura de um termostato conectado em um determinado momento também é um evento.

O fluxo de eventos oferece oportunidades para que as aplicações respondam instantaneamente a novas informações. As plataformas de dados de streaming, como o Apache Kafka, permitem que os desenvolvedores criem sistemas que consomem, processam e agem sobre os dados à medida que eles chegam, mantendo a ordem e a confiabilidade de cada evento.

O Kafka evoluiu para a plataforma de fluxo de eventos mais usada, capaz de realizar ingestão e processar trilhões de registros diariamente sem nenhum atraso perceptível no desempenho, para proporcionar compatibilidade com volumes escaláveis. Mais de 80% das organizações da Fortune 500 usam o Kafka, incluindo a Target, Microsoft, AirBnB e Netflix, para oferecer experiências dos clientes em tempo real e baseadas em dados.

A origem do Apache Kafka

Em 2011, o LinkedIn desenvolveu o Apache Kafka para atender à crescente necessidade da empresa por um sistema de alto rendimento e baixa latência, capaz de lidar com enormes volumes de dados de eventos em tempo real. Construído usando Java e Scala, o Kafka foi posteriormente disponibilizado como código aberto e doado à Apache Software Foundation.

Embora as organizações já tinham compatibilidade ou usavam sistemas tradicionais de filas de mensagens (por exemplo, o Amazon SQS da AWS), o Kafka introduziu uma arquitetura de sistema de mensagens fundamentalmente diferente.

Ao contrário das filas de mensagens convencionais, que excluem as mensagens após o consumo, o Kafka retém as mensagens por um período configurável, permitindo que vários consumidores leiam os mesmos dados de forma independente. Esse recurso torna o Kafka ideal para o fornecimento de mensagens e eventos, processamento de fluxos e criação de pipelines de dados em tempo real.

Atualmente, o Kafka se tornou o padrão de fato para fluxo de eventos em tempo real. Os setores que usam o Kafka incluem finanças, comércio eletrônico, telecomunicações e transporte, onde a capacidade de lidar com grandes volumes de dados de forma rápida e confiável é essencial.

Como o Apache Kafka funciona

O Kafka é uma plataforma distribuída; ele é executado como um cluster tolerante a falhas e altamente disponível que pode abranger vários servidores e até mesmo vários data centers.

O Kafka tem três recursos principais:

  1. Ele permite que as aplicações publiquem ou inscrevam-se em fluxos de dados ou event streams.
  2. Ele armazena registros com precisão na ordem em que ocorreram, com armazenamento durável e tolerante a falhas.
  3. Ele processa registros em tempo real à medida que ocorrem.

Os produtores (aplicações ou tópicos) gravam registros em tópicos denominados logs, que armazenam os registros na ordem em que ocorreram em relação uns aos outros. Em seguida, os tópicos são divididos em partições e distribuídos em um cluster de brokers (servidores) do Kafka.

Dentro de cada partição, o Kafka mantém a ordem dos registros e os armazena de forma duradoura em disco por um período de retenção configurável. Embora a ordem seja garantida dentro de uma partição, ela não é entre partições. Com base nas necessidades da aplicação, os consumidores podem ler de forma independente essas partições em tempo real ou a partir de um deslocamento específico.

O Kafka garante a confiabilidade por meio da replicação de partições. Cada partição tem um líder (em um broker) e um ou mais seguidores (réplicas) em outros brokers. Essa replicação ajuda a tolerar falhas de nó sem perda de dados.

Historicamente, o Kafka dependia do Apache ZooKeeper, um serviço de coordenação centralizado para brokers distribuídos. O ZooKeeper garantia que os brokers do Kafka permanecessem sincronizados, mesmo se alguns brokers falhassem. Em 2011, o Kafka lançou o modo KRaft (Kafka Raft Protocol), eliminando a necessidade do ZooKeeper ao consolidar essas tarefas nos próprios brokers do Kafka. Essa mudança reduz dependências externas, simplifica a arquitetura e torna os clusters do Kafka mais tolerantes a falhas e mais fáceis de gerenciar e escalar.

Vista aérea de rodovias

Fique por dentro da nuvem 


Receba o boletim informativo semanal do Think para ver orientações especializadas sobre a otimização das configurações multinuvem na era da IA.

APIs do Apache Kafka

Os desenvolvedores podem aproveitar os recursos do Kafka por meio de quatro interfaces de programação de aplicativos (APIs) primárias:

  1. API Producer
  2. API do consumidor
  3. API Streams
  4. API Connector
API Producer

A API Producer permite que uma aplicação publique um fluxo em um tópico do Kafka. Depois que um registro é gravado em um tópico, ele não pode ser alterado ou excluído. Em vez disso, ele permanece no tópico por um período de tempo pré-configurado, por dois dias ou até que o espaço de armazenamento se esgote.

API do consumidor

A API Consumer permite que uma aplicação inscreva-se em um ou mais tópicos e ingira e processe o fluxo armazenado no tópico. Pode trabalhar com registros no tópico em tempo real ou ingerir e processar registros passados.

API Streams

Essa API se baseia nas APIs Producer e Consumer e adiciona recursos de processamento complexos que permitem que uma aplicação realize processamento front-to-backstream contínuo. Especificamente, a API Streams envolve o consumo de registros de um ou mais tópicos, sua análise, agregação ou transformação conforme a necessidade e a publicação dos fluxos resultantes nos mesmos tópicos ou outros tópicos.

Embora as APIs Producer e Consumer possam ser usadas para processamento simples de fluxos, a API Streams permite o desenvolvimento de aplicações de fluxos de dados e eventos mais sofisticadas.

API Connector

Essa API permite que os desenvolvedores criem conectores, que são produtores ou consumidores reutilizáveis que simplificam e automatizam a integração de uma fonte de dados em um cluster do Kafka.

Casos de uso do Apache Kafka

Os desenvolvedores usam o Kafka principalmente para criar dois tipos de aplicações:

  • Pipelines de dados de streaming em tempo real
  • Aplicações de streaming em tempo real

Pipelines de dados de streaming em tempo real

Aplicações projetadas especificamente para migrar milhões e milhões de dados ou registros de eventos entre sistemas empresariais, em escala e em tempo real. Os aplicativos devem migrá-los de forma confiável, sem risco de corrupção, duplicação de dados ou outros problemas que normalmente ocorrem ao migrar volumes tão grandes de dados em alta velocidade.

Por exemplo, instituições financeiras usam o Kafka para transmitir milhares de transações por segundo em gateways de pagamentos, serviços de detecção de fraude e sistemas contábeis, garantindo fluxo de dados preciso e em tempo real, sem duplicação ou perda.

Aplicações de streaming em tempo real

Aplicações orientadas por fluxos de registros ou event streams e que geram fluxos próprios. No mundo impulsionado digitalmente, encontramos esses aplicativos todos os dias.

Os exemplos incluem sites de comércio eletrônico que atualizam a disponibilidade dos produtos em tempo real ou plataformas que oferecem conteúdo personalizado e anúncios com base na atividade do usuário em tempo real. O Kafka impulsiona essas experiências ao transmitir as interações do usuário diretamente em mecanismos de análise de dados e recomendação.

Outros casos de uso do Apache Kafka

  • Microsserviços: o Kafka facilita a comunicação entre microsserviços, ao permitir mensagens assíncronas e orientadas por eventos. Essa funcionalidade permite que os serviços acionem ações em outros serviços sem estarem fortemente acoplados, sendo compatível com arquiteturas de sistemas escaláveis e desacopladas.
  • Ambientes nativos de nuvem conteinerizados: o Kafka se integra sem dificuldades com plataformas nativas da nuvem usando o Docker para conteinerização e o Kubernetes para orquestração de contêineres . Essa configuração é compatível com comunicação escalável, tolerante a falhas e orientada por eventos, ao mesmo tempo que minimiza a necessidade de gerenciamento manual da infraestrutura. O Kafka pode escalar e se recuperar automaticamente de falhas dentro do Kubernetes, o que o torna ideal para ambientes dinâmicos de computação em nuvem que executam cargas de trabalho de aplicações diversificadas.
  • Data lakes e data warehousing: o Kafka atua como um pipeline de dados em tempo real entre fontes de dados e plataformas de armazenamento, como data lakes ou data warehouses. Essa funcionalidade permite o streaming de grandes volumes de dados para ingestão e análise em tempo hábil, o que é essencial para fluxos de trabalho modernos de análise de dados e business intelligence .
  • Manipulação de dados de IoT (Internet das coisas): o Kafka é adequado para processar fluxos contínuos de dados de dispositivos de IoT , permitindo roteamento em tempo real de dados de alto rendimento e baixa latência para destinos como bancos de dados, analytics engines ou ferramentas de monitoramento. Esse recurso é compatível com aplicações urgentes em setores como fabricação e saúde.
AI Academy

Preparando-se para a IA com a nuvem híbrida

Guiado pelos principais líderes da IBM, o conteúdo foi desenvolvido para ajudar líderes empresariais a terem o conhecimento necessário para priorizar os investimentos em IA que podem estimular o crescimento.

O ecossistema Apache Kafka

O Kafka integra-se a várias outras tecnologias, muitas das quais fazem parte da Apache Software Foundation (ASF). As organizações normalmente usam essas tecnologias em arquiteturas orientadas a eventos maiores, processamento de fluxos ou soluções de análise de dados de big data.

Algumas dessas tecnologias são de código aberto, enquanto o Confluent, uma plataforma criada em torno do Kafka, oferece funcionalidades de nível empresarial e serviços gerenciados para processamento de dados em tempo real em escala. Empresas como a IBM, Amazon Web Services e outras oferecem soluções baseadas no Kafka (por exemplo, IBM Event Streams, Amazon Kinesis) que se integram ao Kafka para fluxo de eventos escalável.

O ecossistema Apache Kafka inclui:

  • Apache Spark
  • Apache NiFi
  • Apache Flink
  • Apache Hadoop
  • Apache Camel
  • Apache Cassandra

Apache Spark

O Apache Spark é um analytics engine para processamento de dados em grande escala. Você pode usar o Spark para realizar análises em fluxos entregues pelo Apache Kafka e para produzir aplicações de processamento de fluxos em tempo real, como análise de fluxos de cliques.

Apache NiFi

O Apache NiFi é um sistema de gerenciamento de fluxos de dados com uma interface visual de arrastar e soltar. Como o NiFi pode funcionar como produtor e consumidor do Kafka, é uma ferramenta ideal para gerenciar desafios de fluxos de dados com os quais o Kafka não consegue lidar.

Apache Flink

O Apache Flink é um mecanismo para realizar cálculos em grande escala em event streams com alta velocidade e baixa latência consistentemente. O Flink pode ingerir fluxos como consumidor do Kafka, realizar operações em tempo real com base nesses fluxos e publicar os resultados para o Kafka ou outra aplicação.

Apache Hadoop

O Apache Hadoop é um framework de software distribuído que permite armazenar enormes quantidades de dados em um cluster de computadores para uso em análise de dados de big data, aprendizado de máquina, mineração de dados e outras aplicações baseadas em dados que processam dados estruturados e dados não estruturados. O Kafka geralmente é usado para criar um pipeline de dados de streaming em tempo real para um cluster do Hadoop.

Apache Camel

O Apache Camel é um framework de integração com um mecanismo de roteamento e mediação baseado em regras. Ele é compatível com o Kafka como componente, permitindo a fácil integração de dados com outros sistemas (por exemplo, bancos de dados, filas de mensagens), permitindo que o Kafka se torne parte de uma arquitetura orientada por eventos maior.

Apache Cassandra

O Apache Cassandra é um banco de dados NoSQL altamente escalável, projetado para manipular grandes quantidades de dados em vários servidores comuns sem nenhum ponto único de falha.

Kafka normalmente é usado para transmitir dados para o Cassandra para ingestão de dados em tempo real e para criar aplicações escaláveis e tolerantes a falhas.

Kafka versus RabbitMQ

O RabbitMQ é um broker de mensagens popular de código aberto que permite que aplicações, sistemas e serviços se comuniquem por meio da tradução de protocolos de mensagens. Como o Kafka começou como um broker de mensagens (e ainda pode ser usado como um) e o RabbitMQ é compatível com um modelo de mensagens de publicação/inscrição (entre outros), o Kafka e o RabbitMQ são frequentemente comparados como alternativas. No entanto, eles servem a finalidades diferentes e são projetados para lidar com vários tipos de casos de uso.  Por exemplo, os tópicos do Kafka podem ter vários inscritos, enquanto cada mensagem do RabbitMQ pode ter apenas um. Além disso, os tópicos do Kafka são duráveis, enquanto as mensagens do RabbitMQ são excluídas depois de consumidas.

Ao escolher entre eles, é essencial considerar as necessidades específicas de sua aplicação, como rendimento, durabilidade das mensagens e latência. O Kafka é adequado para fluxo de eventos em grande escala, enquanto o RabbitMQ se destaca em cenários que exigem roteamento flexível de mensagens e processamento de baixa latência.

Apache Kafka e IA de código aberto

A integração do Apache Kafka e da IA de código aberto transforma a maneira como as organizações lidam com dados em tempo real e inteligência artificial. Quando combinado com ferramentas de IA de código aberto, o Kafka permite que a aplicação de modelos de IA pré-treinados crie dados, apoiando a tomada de decisão em tempo real e a automação.

A IA de código aberto tornou a inteligência artificial mais acessível, e o Kafka fornece a infraestrutura necessária para processar dados em tempo real. Essa configuração elimina a necessidade de processamento em lote, permitindo que as empresas atuem com base nos dados imediatamente após sua produção.

Por exemplo, uma empresa de comércio eletrônico pode usar o Kafka para transmitir interações com clientes, como cliques ou visualizações de produtos, à medida que elas acontecem. Modelos de IA pré-treinados processam esses dados em tempo real, fornecendo recomendações personalizadas ou ofertas direcionadas. O Kafka gerencia o fluxo de dados, enquanto os modelos de IA se adaptam com base nos dados recebidos, melhorando o engajamento do cliente.

Ao combinar o processamento de dados em tempo real com modelos de IA, as organizações podem tomar decisões mais rápidas em detecção de fraude, manutenção preditiva ou preços dinâmicos, permitindo sistemas mais responsivos e eficientes.

Benefícios do Apache Kafka

  • Processamento de dados em tempo real: o Kafka permite pipelines de dados em tempo real e aplicações de streaming. Ele permite que os sistemas publiquem, inscrevam-se e processem fluxos de registros à medida que eles acontecem, sendo compatível com casos de uso como monitoramento, geração de alertas e análise de dados.
  • Alto desempenho e escalabilidade: os tópicos do Kafka são particionados e replicados de tal forma que podem ser escalados para atender a grandes volumes de consumidores simultâneos sem afetar o desempenho.
  •  Segurança e conformidade: o Apache Kafka é compatível com criptografia de dados em trânsito e em repouso, juntamente com controles de acesso configuráveis. Essas funcionalidades ajudam as organizações a proteger seus dados confidenciais e a se alinhar com as normas de conformidade do setor.
  • Alta disponibilidade: o Kafka garante alta disponibilidade por meio da data replication em vários brokers. As mensagens permanecem disponíveis mesmo se um nó falhar, e o sistema continua em execução sem perda de dados ou downtime.
  •  Gerenciamento simplificado: o Kafka inclui ferramentas de monitoramento, configuração e automação, que ajudam a reduzir a carga operacional. Ele se integra bem às plataformas de orquestração e gerenciamento, tornando a implementação e o escalonamento mais gerenciáveis. O Kafka também expõe métricas detalhadas de desempenho e integridade via JMX (Java Management Extensions), permitindo que as equipes rastreiem o rendimento, a latência, a integridade dos brokers e o atraso do consumidor, que são críticos para o monitoramento eficaz e o planejamento de capacidade.
  • Integração ampla: com uma ampla variedade de conectores e APIs de clientes, o Kafka se integra facilmente a bancos de dados, sistemas de arquivos e serviços de nuvem. Por exemplo, o Kafka Connect facilita a movimentação sem dificuldades de dados entre sistemas, enquanto o Kafka Streams permite o processamento de fluxos em tempo real, aprimorando ainda mais os recursos de integração.