Apache Kafka

O que é Apache Kafka e como funciona?

O que é Apache Kafka e como funciona?

Nesta lição, veremos o que é Apache Kafka e como ele funciona junto com seus alguns casos de uso mais comuns.  O Apache Kafka foi originalmente desenvolvido no LinkedIn em 2010 e mudou para se tornar um projeto Apache de nível superior em 2012. Possui três componentes principais:

Vamos estudar muito mais os conceitos de Kafka nas próximas seções. Vamos em frente.

Conceitos Apache Kafka

Antes de nos aprofundarmos, precisamos ser minuciosos sobre alguns conceitos do Apache Kafka. Aqui estão os termos que devemos saber, muito brevemente:

Partições de tópico

O conceito de Tópico, Partições de Tópico e deslocamento também pode ser esclarecido com uma figura ilustrativa:

Divisão de tópico e compensação do consumidor no Apache Kafka

Apache Kafka como sistema de mensagens de assinatura e publicação

Com o Kafka, os aplicativos do Produtor publicam mensagens que chegam em um Nó Kafka e não diretamente para um Consumidor. A partir deste Nó Kafka, as mensagens são consumidas pelos aplicativos do Consumidor.

Produtor e consumidor Kafka

Como um único tópico pode obter muitos dados de uma só vez, para manter o Kafka horizontalmente escalonável, cada tópico é dividido em partições e cada partição pode residir em qualquer máquina de nó de um cluster.

Novamente, o Kafka Broker não mantém registros de qual consumidor consumiu quantos pacotes de dados. É o responsabilidade dos consumidores de manter o controle dos dados consumidos. Devido ao motivo de o Kafka não rastrear as confirmações e mensagens de cada aplicativo do consumidor, ele pode gerenciar muito mais consumidores com impacto insignificante no rendimento. Na produção, muitos aplicativos seguem até mesmo um padrão de consumidores em lote, o que significa que um consumidor consome todas as mensagens em uma fila em um intervalo regular de tempo.

Instalação

Para começar a usar o Apache Kafka, ele deve estar instalado na máquina. Para fazer isso, leia Instalar Apache Kafka no Ubuntu.

Caso de uso: rastreamento de uso do site

Kafka é uma excelente ferramenta para ser usada quando precisamos rastrear atividades em um site. Os dados de rastreamento incluem, sem limitação, visualizações de página, pesquisas, uploads ou outras ações que os usuários possam realizar. Quando um usuário está em um site, ele pode realizar uma série de ações ao navegar pelo site.

Por exemplo, quando um novo usuário se registra em um site, a atividade pode ser rastreada em que ordem um novo usuário explora os recursos de um site, se o usuário definir seu perfil conforme necessário ou preferir ir diretamente para os recursos do local na rede Internet. Sempre que o usuário clica em um botão, os metadados desse botão são coletados em um pacote de dados e enviados ao cluster Kafka, de onde o serviço de análise do aplicativo pode coletar esses dados e produzir insights úteis sobre os dados relacionados. Se olharmos para dividir as tarefas em etapas, aqui está como o processo será semelhante:

  1. Um usuário se registra em um site e entra no painel. O usuário tenta acessar um recurso imediatamente, interagindo com um botão.
  2. O aplicativo da web constrói uma mensagem com esses metadados para uma partição de tópico do tópico “clique”.
  3. A mensagem é anexada ao log de confirmação e o deslocamento é incrementado
  4. O consumidor agora pode puxar a mensagem do Kafka Broker e mostrar o uso do site em tempo real e mostrar dados anteriores se ele redefinir seu deslocamento para um possível valor anterior

Caso de uso: fila de mensagens

Apache Kafka é uma excelente ferramenta que pode atuar como um substituto para ferramentas de corretor de mensagens como RabbitMQ. A mensagem assíncrona ajuda a separar os aplicativos e cria um sistema altamente escalonável.

Assim como o conceito de microsserviços, em vez de construir um grande aplicativo, podemos dividir o aplicativo em várias partes e cada parte tem uma responsabilidade muito específica. Desta forma, as diferentes partes também podem ser escritas em linguagens de programação completamente independentes! O Kafka tem um sistema integrado de particionamento, replicação e tolerância a falhas que o torna bom como um sistema corretor de mensagens em grande escala.

Recentemente, o Kafka também é visto como uma solução de coleta de log muito boa, que pode gerenciar o broker do servidor de coleta de arquivo de log e fornecer esses arquivos para um sistema central. Com o Kafka, é possível gerar qualquer evento que você queira que qualquer outra parte de sua aplicação saiba.

Usando Kafka no LinkedIn

É interessante notar que o Apache Kafka foi visto e usado anteriormente como uma maneira através da qual os pipelines de dados poderiam se tornar consistentes e através dos quais os dados eram ingeridos no Hadoop. Kafka funcionou de forma excelente quando várias fontes de dados e destinos estavam presentes e não foi possível fornecer um processo de pipeline separado para cada combinação de origem e destino. O arquiteto Kafka do LinkedIn, Jay Kreps descreve bem esse problema familiar em uma postagem de blog:

Meu próprio envolvimento nisso começou por volta de 2008, depois de enviarmos nossa loja de valor-chave. Meu próximo projeto foi tentar colocar em funcionamento uma configuração do Hadoop e mover alguns de nossos processos de recomendação para lá. Tendo pouca experiência nesta área, naturalmente reservamos algumas semanas para a entrada e saída de dados, e o resto do nosso tempo para a implementação de algoritmos de previsão sofisticados. Então começou um longo trabalho árduo.

Apache Kafka e Flume

Se você tentar comparar esses dois com base em suas funções, encontrará muitos recursos comuns. Aqui estão alguns deles:

Conclusão

Nesta lição, vimos muitos conceitos sobre o Apache Kafka. Leia mais postagens baseadas em Kafka aqui.

Melhores emuladores de console de jogo para Linux
Este artigo irá listar software de emulação de console de jogo popular disponível para Linux. A emulação é uma camada de compatibilidade de software q...
Melhores distros Linux para jogos em 2021
O sistema operacional Linux percorreu um longo caminho desde sua aparência original, simples e baseada em servidor. Este sistema operacional melhorou ...
Como capturar e transmitir sua sessão de jogo no Linux
No passado, jogar era considerado apenas um hobby, mas com o tempo a indústria de jogos viu um grande crescimento em termos de tecnologia e número de ...