Skip to content

Kafka

O que é Apache Kafka?

Apache Kafka é uma plataforma popular de streaming de eventos usada para coletar, processar e armazenar dados de eventos de streaming ou dados que não têm início ou fim distintos. O Kafka torna possível uma nova geração de aplicativos distribuídos com capacidade de escalonamento para lidar com bilhões de eventos transmitidos por minuto.

Visão geral do Apache Kafka

O Kafka coleta dados de streaming e registra exatamente o que aconteceu e quando. Esse registro é chamado de registro de confirmação imutável. É imutável porque pode ser anexado, mas não alterado. A partir daí, é possível se inscrever no registro (acessar os dados) e também publicar nele (adicionar mais dados) a partir de qualquer número de aplicativos de streaming em tempo real, bem como de outros sistemas.

Apache Kafka é uma plataforma de streaming de eventos usada para coletar, armazenar e processar fluxos de dados em tempo real, em escala. Tim Berglund

Principais benefícios de uso do Kafka

O Kafka tem código aberto - Isso significa que o código-fonte dele está disponível gratuitamente para qualquer pessoa pegar, modificar e distribuir como sua própria versão, com qualquer propósito. Não há taxas de licenciamento ou outras restrições. O Kafka também se beneficia por ter uma comunidade global de desenvolvedores trabalhando e contribuindo com ele. Como resultado, o Kafka oferece uma ampla gama de conectores, plug-ins, ferramentas de monitoramento e ferramentas de configuração como parte de um ecossistema em crescimento.

Escalonamento e velocidade - O Kafka não apenas escalona com volumes cada vez maiores de dados, mas também fornece esses dados para toda a empresa em tempo real. Ser uma plataforma distribuída também é um grande benefício do Kafka. Isso significa que o processamento é dividido entre várias máquinas, físicas ou virtuais. Isso tem duas vantagens: com algum trabalho, ele consegue escalonar horizontalmente, para adicionar máquinas quando precisar de mais capacidade de processamento ou armazenamento, e é confiável, porque a plataforma ainda funciona mesmo se as máquinas individuais falharem. No entanto, esse recurso do Kafka pode ser muito difícil de gerenciar em grande escala.

O que é Data streaming

  • Um fluxo de dados constante e sem controle é chamada de data streaming.
  • Sua principal característica é que os dados não tem limites definidos, assim, não é possível dizer quando começa ou acaba o fluxo (stream).
  • Os dados são processados à medida em que chegam no destino. Alguns autores chamam de processamento em tempo real, ou on-line.
  • Uma abordagem diferente é o processamento em bloco, batch, ou off-line, na qual blocos de dados são processados em janelas de tempo de horas ou dias.
  • Muitas vezes o batch é um processo que roda a noite, consolidando os dados daquele dia. Há casos de janelas de tempo de uma semana ou mesmo de um mês, gerando relatórios desatualizados.

Arquitetura do Kafka

A arquitetura do Apache Kafka tem como principais características:

  • Escalabilidade: o cluster pode ser facilmente redimensionado para atender ao aumento ou diminuição das cargas de trabalho;
  • Distribuído: o cluster Kafka opera com vários nós, dividindo o processamento;
  • Replicado, particionado e ordenado: as mensagens são replicadas em partições nos nós do cluster na ordem em que chegam para garantir segurança e velocidade de entrega;
  • Alta disponibilidade: o cluster tem diversos nós (brokers) e várias cópias dos dados, assim, .

O Kafka é adequado para soluções com grande volume de dados (big data) porque uma das suas características é a alta taxa de transferência e baixa latência.

O Apache Kafka tem 3 funcionalidades:

  • Sistema de mensagem do tipo publish/subscribe;
  • Sistema de armazenamento: as mensagens ficam armazenadas por um período de tempo pré-definido. Por padrão, as mensagens duram 7 dias, mas podem até mesmo ficar indefinidamente;
  • Processamento de stream: é possível transformar a mensagem imediatamente após o seu recebimento.

Um uso mais recente do Kafka é o processo de ETL (Extract, Transform and Load), que copia os registros de um banco de dados para outro, geralmente de uma base transacional (OLTP) para uma base analítica (OLAP).

O ponto central do sistema de mensagem é, naturalmente, a mensagem, que pode ser chamada também de registro ou evento, e é composta por:

  • Nome do tópico: fila na qual a mensagem será gravada. Pode ser comparado a uma tabela do banco de dados;
  • Partição: subdivisão do tópico, a partição é um recurso para ajudar a balancear a carga;
  • Timestamp: os registros são ordenados pela hora de gravação;
  • Chave: opcional, pode ser usada em cenários avançados;
  • Valor: a informação que se pretende transferir. O ideal é que os dados usem um formato conhecido, como JSON ou XML.

Ferramentas Similares ao Kafka

  • Google Cloud Pub/Sub.
  • MuleSoft Anypoint Platform.
  • Confluent.
  • IBM MQ.
  • RabbitMQ.
  • Amazon Kinesis Data Streams.
  • Amazon MQ.
  • Azure Event Hubs.

Referências e Fontes

Google Cloud

Projects Kafka Python