Apache Kafka vs Apache Storm
Apache Kafka: sistema de mensagens distribuído
Tempestade Apache: Processamento De Mensagens Em Tempo Real
6 answers
Você usa o Apache Kafka como uma fila distribuída e robusta que pode lidar com dados de alto volume e lhe permite passar mensagens de um ponto final para outro.
A tempestade não é uma fila. É um sistema que tem distribuído habilidades de processamento em tempo real, o que significa que você pode executar todo o tipo de manipulações em dados em tempo real em paralelo.O fluxo comum destas ferramentas (como eu o conheço) é o seguinte:
Sistema em tempo Real -- > Kafka -- > Storm -- > NoSql --> BI (facultativo)
Para que tenha a sua aplicação em tempo real a lidar com dados de volume elevado, envia-a para a fila do Kafka. Storm puxa os dados de kafka e aplica alguma manipulação necessária. Neste ponto você geralmente gosta de obter alguns benefícios a partir destes dados, então você pode enviá-lo para algum NoSQL db para cálculos BI adicionais, ou você pode simplesmente consultar este NoSql de qualquer outro sistema.
Kafka é um corretor de mensagens distribuído que pode lidar com uma grande quantidade de mensagens por segundo. Ele usa o paradigma de publicar-subscrever e se baseia em tópicos e partições. Kafka usa Zookeeper para compartilhar e salvar o estado entre corretores. Então Kafka é basicamente responsável por transferir mensagens de uma máquina para outra.
Storm é um sistema analítico escalável, tolerante a falhas, em tempo real (pense como Hadoop in realtime). Consome dados de fontes (Spouts) e passa-os para pipeline (parafusos). Você pode combiná-los na topologia. Então Storm é basicamente uma unidade de computação (agregação, aprendizado de máquina).
Mas você pode usá-los em conjunto: por exemplo, a sua aplicação usa o kafka para enviar dados para outros servidores que usam o storm para fazer alguma computação nele.
Eu sei que este é um velho thread e comparações do Apache Kafka e a Tempestade foram válidos e corretos, quando eles foram escritos, mas vale a pena notar que o Apache Kafka tem evoluído muito ao longo dos anos e, desde a versão 0.10 (abril de 2016) Kafka tem incluído um Kafka Fluxos de API que fornece fluxo de recursos de processamento, sem a necessidade de qualquer software adicional, tais como a Tempestade. Kafka também inclui a API de ligação para a ligação em várias fontes e sumidouros (destinos) de dado.
Blog de anúnciohttps://www.confluent.io/blog/introducing-kafka-streams-stream-processing-made-simple/Documentação Apache actual - https://kafka.apache.org/documentation/streams/
Em 0.11 Kafka a funcionalidade de processamento de fluxo foi expandida para fornecer exatamente uma vez semântica e transações.
Https://www.confluent.io/blog/exactly-once-semantics-are-possible-heres-how-apache-kafka-does-it/
Kafka - para fornecer um fluxo em tempo real
Tempestade - para realizar algumas operações naquele fluxo
Pode dar uma vista de olhos ao projecto GitHub. https://github.com/abhishekgoel137/kafka-nodejs-d3js.(D3js é uma biblioteca de representação gráfica)
Caso Ideal:
Realtime application -> Kafka -> Storm -> NoSQL -> d3js
Este repositório é baseado em:
Realtime application -> Kafka -> <plain Node.js> -> NoSQL -> d3js
Apache Storm: is continuous processing tool
Aqui, neste aspecto, o Kafka irá obter os dados de qualquer site como o Fb, o Twitter, usando o API's e que os dados são processados usando o Apache Storm e você pode armazenar os dados processados em qualquer banco de dados que quiser.
Segue-o e terás uma ideia.NiFi me permitiria processar um evento e atualizar uma loja de dados persistente com baixa agregação de lote(er) com muito, muito pouca codificação personalizada.
Storm (lotes de codificação personalizada) permite-me quase acesso em tempo real aos eventos de tendência.
Se eu puder esperar por muitos segundos, então eu posso sair de kafka, em hdfs (Parquet) e processo.
Se precisar de saber em segundos, preciso de NiFi, e provavelmente até de Storm. (Pense em monitorar milhares de estações terrestres, onde eu preciso ver pequenas condições climáticas da região para avisos de tornados).