Apache Kafka - Introdução

Em Big Data, um enorme volume de dados é usado. Em relação aos dados, temos dois desafios principais. O primeiro desafio é como coletar um grande volume de dados e o segundo desafio é analisar os dados coletados. Para superar esses desafios, você precisa de um sistema de mensagens.

O Kafka é projetado para sistemas distribuídos de alto rendimento. O Kafka tende a funcionar muito bem como um substituto para um corretor de mensagens mais tradicional. Em comparação com outros sistemas de mensagens, o Kafka tem melhor rendimento, particionamento integrado, replicação e tolerância a falhas inerente, o que o torna uma boa opção para aplicativos de processamento de mensagens em grande escala.

O que é um sistema de mensagens?

Um Sistema de Mensagens é responsável por transferir dados de um aplicativo para outro, para que os aplicativos possam se concentrar nos dados, mas não se preocupem em como compartilhá-los. O sistema de mensagens distribuído é baseado no conceito de enfileiramento de mensagens confiável. As mensagens são enfileiradas de forma assíncrona entre os aplicativos clientes e o sistema de mensagens. Dois tipos de padrões de mensagens estão disponíveis - um é ponto a ponto e o outro é o sistema de mensagens publicar-assinar (pub-sub). A maioria dos padrões de mensagens seguepub-sub.

Sistema de mensagens ponto a ponto

Em um sistema ponto a ponto, as mensagens são mantidas em uma fila. Um ou mais consumidores podem consumir as mensagens na fila, mas uma determinada mensagem pode ser consumida por no máximo um consumidor apenas. Depois que um consumidor lê uma mensagem na fila, ela desaparece dessa fila. O exemplo típico desse sistema é um sistema de processamento de pedidos, em que cada pedido será processado por um processador de pedidos, mas vários processadores de pedidos também podem funcionar ao mesmo tempo. O diagrama a seguir descreve a estrutura.

Sistema de Mensagens Publicar-Assinar

No sistema publicar-assinar, as mensagens são mantidas em um tópico. Ao contrário do sistema ponto a ponto, os consumidores podem se inscrever em um ou mais tópicos e consumir todas as mensagens naquele tópico. No sistema Publicar-Assinar, os produtores de mensagens são chamados de publicadores e os consumidores de mensagens são chamados de assinantes. Um exemplo da vida real é a Dish TV, que publica diferentes canais como esportes, filmes, música, etc., e qualquer pessoa pode assinar seu próprio conjunto de canais e obtê-los sempre que seus canais assinados estiverem disponíveis.

O que é Kafka?

Apache Kafka é um sistema de mensagens de publicação-assinatura distribuído e uma fila robusta que pode lidar com um alto volume de dados e permite que você passe mensagens de um terminal para outro. O Kafka é adequado para consumo de mensagens offline e online. As mensagens Kafka são mantidas no disco e replicadas dentro do cluster para evitar perda de dados. O Kafka foi desenvolvido com base no serviço de sincronização ZooKeeper. Ele se integra muito bem com Apache Storm e Spark para análise de dados de streaming em tempo real.

Benefícios

A seguir estão alguns benefícios do Kafka -

  • Reliability - Kafka é distribuído, particionado, replicado e com tolerância a falhas.

  • Scalability - O sistema de mensagens Kafka pode ser escalado facilmente, sem tempo de inatividade.

  • Durability- O Kafka usa o log de commit distribuído, o que significa que as mensagens persistem no disco o mais rápido possível, portanto, é durável.

  • Performance- Kafka tem alto rendimento para publicação e assinatura de mensagens. Ele mantém o desempenho estável, mesmo que muitos TB de mensagens sejam armazenados.

O Kafka é muito rápido e garante tempo de inatividade zero e perda de dados zero.

Casos de Uso

O Kafka pode ser usado em muitos casos de uso. Alguns deles estão listados abaixo -

  • Metrics- Kafka é freqüentemente usado para dados de monitoramento operacional. Isso envolve a agregação de estatísticas de aplicativos distribuídos para produzir feeds centralizados de dados operacionais.

  • Log Aggregation Solution - O Kafka pode ser usado em uma organização para coletar logs de vários serviços e disponibilizá-los em um formato padrão para vários consumidores.

  • Stream Processing- Estruturas populares como Storm e Spark Streaming leem dados de um tópico, os processam e gravam dados processados ​​em um novo tópico, onde se tornam disponíveis para usuários e aplicativos. A forte durabilidade do Kafka também é muito útil no contexto de processamento de fluxo.

Necessidade de Kafka

Kafka é uma plataforma unificada para lidar com todos os feeds de dados em tempo real. O Kafka oferece suporte para entrega de mensagens de baixa latência e oferece garantia de tolerância a falhas na presença de falhas na máquina. Ele tem a capacidade de atender a um grande número de consumidores diversos. Kafka é muito rápido, realiza 2 milhões de gravações / s. O Kafka mantém todos os dados no disco, o que essencialmente significa que todas as gravações vão para o cache de página do SO (RAM). Isso torna muito eficiente a transferência de dados do cache de página para um soquete de rede.