Apache Kafka
Conheça o Apache Kafka, a tecnologia baseada em software livre por trás de algumas das mais populares experiências de usuário em tempo real e orientadas por eventos na web, incluindo AirBnB, Netflix e Pinterest.
imagem abstrata nas cores preto e azul
O que é Apache Kafka?

O Apache Kafka (Kafka) é uma plataforma de streaming distribuída de software livre que permite (entre outras coisas) o desenvolvimento de aplicativos em tempo real orientados a eventos. Então, o que isso significa?

Atualmente, bilhões de origens de dados geram continuamente fluxos de registros de dados, incluindo fluxos eventos. Um evento é um registro digital de uma ação que aconteceu e o horário em que aconteceu. Normalmente, um evento é uma ação que promove 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 todos exemplos de eventos. Um evento não precisa envolver uma pessoa, por exemplo, um relatório da temperatura de um termostato conectado em um determinado horário também é um evento.

Esses fluxos oferecem oportunidades para aplicativos que respondem a dados ou eventos em tempo real. Uma plataforma de fluxo permite que os desenvolvedores construam aplicativos que consumem e processam continuamente esses fluxos em velocidades extremamente altas, com alto nível de fidelidade e precisão com base na ordem correta de sua ocorrência.

O LinkedIn desenvolveu o Kafka em 2011 como um broker de mensagens de alto rendimento para seu próprio uso e, em seguida, o transformou em um software livre e doou para a Apache Software Foundation  (link externo à ibm.com). Atualmente, o Kafka evoluiu para a plataforma de fluxo mais utilizada, capaz de ingerir e processar trilhões de registros por dia sem qualquer atraso de desempenho perceptível à medida que os volumes aumentam. Organizações da Fortune 500, como Target, Microsoft, AirBnB e Netflix, contam com a Kafka para oferecer experiências em tempo real e acionadas por dados a seus clientes.

O vídeo a seguir fornece informações adicionais sobre o Kafka (9:10):

Como a Kafka funciona

A Kafka tem três recursos principais:

  1. Ele permite que os aplicativos publiquem ou assinem fluxos de dados ou de eventos.
  2. Armazena os registros com precisão (ou seja, na ordem em que ocorreram) de forma resistente a falhas e durável.
  3. Processa registros em tempo real (à medida que eles ocorrem).

Os desenvolvedores podem utilizar esses recursos do Kafka por meio de quatro APIs:

  • API do produtor: permite que um aplicativo publique um fluxo em um tópico do Kafka. Um tópico é um log nomeado que armazena os registros na ordem em que ocorreram em relação um ao outro. Após um registro ser escrito em um tópico, não é possível alterá-lo ou excluí-lo; em vez disso, ele permanece no tópico por um período pré-configurado, por exemplo, por dois dias, ou até que o espaço de armazenamento se esgote.
  • API do consumidor: permite que um aplicativo assine um ou mais tópicos e ingira e processe o fluxo armazenado no tópico. Ele pode trabalhar com registros no tópico em tempo real ou pode ingerir e processar registros anteriores.
  • API de fluxos: se baseia nas APIs do produtor e do consumidor e inclui recursos de processamento complexos que permitem que um aplicativo execute um processamento de fluxo contínuo de frente para trás, especificamente, para consumir registros de um ou mais tópicos, para analisá-los ou transformá-los conforme necessário e para publicar os fluxos resultantes nos mesmos tópicos ou em outros tópicos. Embora as API do produtor e do consumidor possam ser usadas para um processamento de fluxo simples, é a API de fluxos que permite o desenvolvimento de aplicativos mais sofisticados de streaming de eventos e de dados.
  • API do conector: permite que os desenvolvedores construam conectores, os quais são produtores ou consumidores reutilizáveis que simplificam e automatizam a integração de uma origem de dados a um cluster Kafka. Confira alguns conectores prontos para uso populares para armazenamentos de dados  (link externo à ibm.com).
Desempenho do Kafka

O Kafka é uma plataforma distribuída que é executada como um cluster altamente disponível e tolerante a falhas que pode abranger vários servidores e até mesmo vários data centers. Os tópicos do Kafka são particionados e replicados de tal forma que eles podem aumentar a escala para atender altos volumes de consumidores simultâneos sem impactar o desempenho. Como resultado, de acordo com Apache.org, "o Kafka terá o mesmo desempenho quer você tenha 50 KB ou 50 TB de armazenamento persistente no servidor."

Casos de uso do Kafka

O Kafka é usado principalmente para criar dois tipos de aplicativos:

  • Pipelines de dados de fluxo em tempo real: aplicativos projetados especificamente para migrar milhões e milhões de registros de dados ou de eventos entre sistemas corporativos, em escala e em tempo real, e movê-los de forma confiável, sem risco de distorção, duplicação de dados e outros problemas que normalmente ocorrem ao mover volumes tão grandes de dados em altas velocidades.
  • Aplicativos de fluxo em tempo real: aplicativos que são acionados por fluxos de registros ou de eventos e que geram fluxos próprios. Se você passa qualquer quantidade de tempo on-line, você encontra dezenas desses aplicativos todos os dias, do site de varejo que atualiza de forma contínua a quantidade de um produto em sua loja local, aos sites que exibem recomendações personalizadas ou publicidade baseada em análise de sequência de cliques.
Kafka vs. RabbitMQ

RabbitMQ é um broker de mensagens de software livre muito popular, um tipo de middleware que permite que aplicativos, sistemas e serviços se comuniquem uns com os outros ao converter protocolos de mensagens entre eles.

Como Kafka começou como uma espécie de broker de mensagens (e pode, em teoria, ainda ser usado como um) e como o RabbitMQ suporta um modelo de publicação/assinatura de mensagens (entre outros), Kafka e RabbitMQ são frequentemente comparados como alternativas. Mas as comparações não são realmente práticas e muitas vezes entram em detalhes técnicos que não vêm ao caso ao escolher entre os dois. Por exemplo, que os tópicos Kafka podem ter múltiplos assinantes, enquanto cada mensagem RabbitMQ pode ter apenas um; ou que os tópicos Kafka são duráveis, enquanto as mensagens RabbitMQ são apagadas uma vez consumidas.

O resultado é:

  • O Kafka é uma plataforma de processamento de fluxo que permite que aplicativos publiquem, consumam e processem altos volumes de fluxos de registros de maneira rápida e durável; e
  • O RabbitMQ é um broker de mensagens que permite que aplicativos que usam diferentes protocolos de mensagens enviem e recebam mensagens uns dos outros.
Tecnologias Apache frequentemente usadas com o Kafka

O Kafka é usado frequentemente com várias outras tecnologias Apache como parte de um processamento de fluxos maiores, arquitetura acionada por eventos  ou solução de análise de Big Data.

Apache Spark

O Apache Spark é um mecanismo de análise para processamento de dados em grande escala. É possível usar o Spark para executar análise em fluxos fornecidos pelo Apache Kafka e produzir aplicativos de processamento de fluxo em tempo real, como a análise de sequência de cliques supramencionada.

Apache NiFi

O Apache NiFi é um sistema de gerenciamento de fluxo de dados com uma interface visual de arrastar e soltar. Como o NiFi pode ser executado como um produtor do Kafka e um consumidor do Kafta, ele é uma ferramenta ideal para gerenciar os desafios de fluxo de dados que o Kafka não pode enfrentar.

Apache Flink

O Apache Flink é um mecanismo para executar cálculos em fluxos de eventos em escala, com velocidade consistentemente alta e baixa latência. O Flink pode ingerir fluxos como um consumidor do Kafka, executar operações baseadas nesses fluxos em tempo real e publicar os resultados no Kafka ou em outro aplicativo.

Apache Hadoop

O Apache Hadoop é um framework de software distribuído que permite armazenar significativas quantidades de dados em um cluster de computadores para uso em análise de Big Data, machine learning, mineração de dados e outros aplicativos acionados por dados que processam dados estruturados e não estruturados. O Kafka é frequentemente usado para criar um pipeline de dados de fluxo em tempo real para um cluster Hadoop.

Soluções relacionadas
Serviços de modernização de aplicativos

Desenvolva, modernize e gerencie aplicativos de maneira segura em qualquer cloud com confiança.

Conheça os serviços de consultoria de modernização de aplicativos
Automação impulsionada por IA

A automação impulsionada por IA pode ajudar sua empresa, dos fluxos de trabalho de negócios às operações de TI.

Conheça a transformação baseada em IA
IBM Cloud Pak for Integration

Conecte aplicativos, serviços e dados com IBM Cloud Pak for Integration, a plataforma de integração mais abrangente do mercado.

Conheça o IBM Cloud Pak for Integration
Dê o próximo passo

O Kafka continuará sendo parte da modernização de aplicativos uma vez que a demanda por melhores experiências do cliente e mais aplicativos impacta os negócios e as operações de TI. Quando se trata de atender a essas demandas, um movimento em direção a uma maior automação é também útil. Trabalhando com a IBM, você terá acesso a recursos de automação impulsionados por IA, incluindo fluxos de trabalho pré-construídos, para ajudar a acelerar a inovação tornando cada processo mais inteligente. Saiba mais sobre o IBM Event Streams for IBM Cloud, uma plataforma de fluxo de eventos de Kafta como Serviço totalmente gerenciada que permite desenvolver aplicativos orientados a eventos na IBM Cloud.

Saiba mais sobre o IBM Event Streams