Apache Kafka - fluxos de dados por streams de mensagens

Tenho visto que muitas empresas têm usado streams de mensagens para implementar os seus fluxos de dados. Nesse ramo são bastante conhecidos o ActiveMQ e o RabbitMQ, mas ouvi no Hipsters on the Road um pessoal falar sobre aplicações interessantes do Apache Kafka.

Diferente do que normalmente se faz em filas de mensagem, em que a mensagem consumida desaparece, a ideia é manter persistente todas as filas de mensagens (chamadas “tópicos”), de modo que tudo pode ser reprocessado, se necessário. Diferentes consumidores de dados podem consumir pipelines diferentes dos mesmos dados. Da documentação:

Many users of Kafka process data in processing pipelines consisting of multiple stages, where raw input data is consumed from Kafka topics and then aggregated, enriched, or otherwise transformed into new topics for further consumption or follow-up processing. For example, a processing pipeline for recommending news articles might crawl article content from RSS feeds and publish it to an “articles” topic; further processing might normalize or deduplicate this content and publish the cleansed article content to a new topic; a final processing stage might attempt to recommend this content to users. Such processing pipelines create graphs of real-time data flows based on the individual topics.

Como o Kafka tem sido bastante falado e usado nesse contexto, achei que valeria a pena compartilhar para quem quiser conhecer mais.

3 Curtidas

Eu já fiz uns laboratórios consumindo os dados de um Kafka com o Apache Nifi. Acho que é sempre válido estudar bem o contexto da aplicação para não incorrer em algum tipo de overengineering. No último PyData uma galera do banco do brasil apresentou uma stack que tinha o Kafka incluso. Assim que tivermos condição de publicar a gravação eu compartilho por aqui.

4 Curtidas

Concordo.

No vídeo que você compartilhou, a apresentação do Gilson Filho e do Diogo Postai do Banco do Brasil está aqui. Valeu!

1 Curtida