Cenários de aplicação
O Kafka é um middleware popular orientado a mensagens que apresenta entrega de mensagens altamente confiável e assíncrona. É amplamente utilizado para transmitir dados entre diferentes sistemas nas muitas indústrias, incluindo aplicativos corporativos, pagamento, telecomunicações, comércio eletrônico, redes sociais, mensagens instantâneas, vídeo, Internet das Coisas e Internet das Indústrias de Veículos.
Comunicação assíncrona
Mensagens não centrais ou menos importantes são enviadas de forma assíncrona para os sistemas receptores, de modo que o processo principal do serviço não seja mantido à espera dos resultados de outros sistemas, permitindo respostas mais rápidas.
Por exemplo, o Kafka pode ser usado para enviar um e-mail de notificação e uma mensagem SMS depois que um usuário se registrou em um site, fornecendo respostas rápidas durante todo o processo de registro.
Controle de tráfego
Em sistemas de comércio eletrônico ou sites de grande escala, há uma lacuna de capacidade de processamento entre os sistemas upstream e downstream. Picos de tráfego de sistemas upstream com altas capacidades de processamento podem ter um grande impacto em sistemas downstream com menores capacidades de processamento. Por exemplo, as promoções de vendas on-line envolvem uma enorme quantidade de tráfego inundando os sistemas de comércio eletrônico. O Kafka fornece um buffer de três dias por padrão para centenas de milhões de mensagens, como pedidos e outras informações. Desta forma, os sistemas de consumo de mensagens podem processar as mensagens durante os períodos fora de pico.
Além disso, as rajadas de tráfego de venda flash originadas de sistemas front-end podem ser tratadas com o Kafka, impedindo que os sistemas back-end falhem.
Sincronização de log
Em sistemas de serviços de larga escala, os logs de diferentes aplicativos são coletados para solução rápida de problemas, rastreamento de link completo e monitoramento em tempo real.
Kafka foi originalmente projetado para esse cenário. Os aplicativos enviam de forma assíncrona mensagens de log para filas de mensagens por canais de transmissão confiáveis. Outros componentes podem ler as mensagens de log das filas de mensagens para análise posterior, em tempo real ou off-line. Além disso, o Kafka pode coletar informações de registro de chaves para monitorar aplicativos.
A sincronização de log envolve três componentes principais: clientes de coleta de log, Kafka e aplicativos de processamento de log de back-end.
- Os clientes de coleta de log coletam dados de log de um serviço de aplicativo de usuário e enviam os dados de log de forma assíncrona em lotes para clientes do Kafka.
Os clientes do Kafka recebem e compactam mensagens em lotes. Isso tem apenas um pequeno impacto no desempenho do serviço.
- Kafka persiste logs.
- Aplicativos de processamento de log, como o Logstash, assinam mensagens no Kafka e recuperam mensagens de log do Kafka. Em seguida, as mensagens são pesquisadas por serviços de pesquisa de arquivos ou entregues a aplicativos de big data, como o Hadoop, para armazenamento e análise.
O Logstash é para análise de log, o ElasticSearch é para pesquisa de log e o Hadoop é para análise de big data. São todas ferramentas de código aberto.