Utiliza Apache Kafka como una cola robusta y distribuida que puede manejar grandes volúmenes de datos y le permite pasar mensajes de un punto final a otro.
Storm no es una cola. Es un sistema que ha distribuido capacidades de procesamiento en tiempo real, lo que significa que puede ejecutar todo tipo de manipulaciones sobre datos en tiempo real en paralelo.
El flujo común de estas herramientas (como yo lo conozco) es el siguiente:
sistema en tiempo real -> Kafka -> Storm -> NoSql -> BI (opcional)
Entonces, su aplicación en tiempo real maneja datos de alto volumen y los envía a la cola de Kafka. Storm extrae los datos de kafka y aplica la manipulación necesaria. En este punto, por lo general, le gustaría obtener algunos beneficios de estos datos, por lo que los envía a alguna base de datos Nosql para cálculos de BI adicionales, o simplemente puede consultar este NoSql desde cualquier otro sistema.
Kafka y Storm tienen un propósito ligeramente diferente:
Kafka es un agente de mensajes distribuidos que puede manejar una gran cantidad de mensajes por segundo. Utiliza el paradigma de publicación-suscripción y se basa en temas y particiones. Kafka usa Zookeeper para compartir y guardar el estado entre corredores. Entonces, Kafka es básicamente responsable de transferir mensajes de una máquina a otra.
Storm es un sistema analítico escalable, tolerante a fallas y en tiempo real (piense como Hadoop en tiempo real). Consume datos de fuentes (Spouts) y los pasa a la tubería (Bolts). Puede combinarlos en la topología. Entonces Storm es básicamente una unidad de cálculo (agregación, aprendizaje automático).
Pero puede usarlos juntos: por ejemplo, su aplicación usa kafka para enviar datos a otros servidores que usan Storm para realizar algunos cálculos.
fuente
Sé que este es un hilo más antiguo y las comparaciones de Apache Kafka y Storm eran válidas y correctas cuando se escribieron, pero vale la pena señalar que Apache Kafka ha evolucionado mucho a lo largo de los años y desde la versión 0.10 (abril de 2016) Kafka ha incluido una API de Kafka Streams que proporciona capacidades de procesamiento de flujos sin la necesidad de ningún software adicional como Storm. Kafka también incluye la API Connect para conectarse a varias fuentes y receptores (destinos) de datos.
Blog de anuncios: https://www.confluent.io/blog/introducing-kafka-streams-stream-processing-made-simple/
Documentación actual de Apache: https://kafka.apache.org/documentation/streams/
En 0.11 Kafka, la funcionalidad de procesamiento de secuencias se amplió aún más para proporcionar transacciones y semánticas de una sola vez.
https://www.confluent.io/blog/exactly-once-semantics-are-possible-heres-how-apache-kafka-does-it/
fuente
Así es como funciona
Kafka : para proporcionar una transmisión en tiempo real
Tormenta : para realizar algunas operaciones en ese flujo
Puede echar un vistazo al proyecto de GitHub https://github.com/abhishekgoel137/kafka-nodejs-d3js .
(D3js es una biblioteca de representación de gráficos)
Caso ideal:
Este repositorio se basa en:
fuente
Como todos te explican que Apache Kafka: es una cola de mensajería continua
Apache Storm: es una herramienta de procesamiento continuo
aquí, en este aspecto, Kafka obtendrá los datos de cualquier sitio web como FB, Twitter usando API y esos datos se procesan usando Apache Storm y puede almacenar los datos procesados en cualquier base de datos que desee.
https://github.com/miguno/kafka-storm-starter
Solo síguelo tendrás una idea
fuente
Cuando tengo un caso de uso que me obliga a visualizar o alertar sobre patrones (piense en las tendencias de Twitter), mientras continúo procesando los eventos, tengo varios patrones.
NiFi me permitiría procesar un evento y actualizar un almacén de datos persistente con una agregación de lotes más baja (más) con muy, muy poca codificación personalizada.
Storm (mucha codificación personalizada) me permite acceder casi en tiempo real a los eventos de tendencias.
Si puedo esperar muchos segundos, puedo procesar por lotes de kafka, en hdfs (Parquet) y procesar.
Si necesito saberlo en segundos, necesito NiFi, y probablemente incluso Storm. (Piense en monitorear miles de estaciones terrestres, donde necesito ver las condiciones climáticas de una región pequeña para detectar advertencias de tornados).
fuente
Simplemente Kafka envía los mensajes de un nodo a otro y Storm procesa los mensajes. Consulte este ejemplo de cómo puede integrar Apache Kafka con Storm
fuente