Vous utilisez Apache Kafka comme une file d'attente distribuée et robuste qui peut gérer des données à volume élevé et vous permet de transmettre des messages d'un point de terminaison à un autre.
Storm n'est pas une file d'attente. C'est un système qui a distribué des capacités de traitement en temps réel, ce qui signifie que vous pouvez exécuter toutes sortes de manipulations sur des données en temps réel en parallèle.
Le flux commun de ces outils (tel que je le connais) est le suivant:
système en temps réel -> Kafka -> Storm -> NoSql -> BI (facultatif)
Ainsi, votre application en temps réel gère des données à volume élevé et les envoie à la file d'attente Kafka. Storm extrait les données de kafka et applique certaines manipulations requises. À ce stade, vous souhaitez généralement tirer parti de ces données.Vous pouvez donc soit les envoyer à une base de données Nosql pour des calculs BI supplémentaires, soit simplement interroger ce NoSql à partir de n'importe quel autre système.
Kafka et Storm ont un objectif légèrement différent:
Kafka est un courtier de messages distribués qui peut gérer une grande quantité de messages par seconde. Il utilise le paradigme de publication-abonnement et repose sur des sujets et des partitions. Kafka utilise Zookeeper pour partager et enregistrer l'état entre les courtiers. Donc Kafka est essentiellement responsable du transfert des messages d'une machine à une autre.
Storm est un système analytique en temps réel évolutif, tolérant aux pannes (pensez comme Hadoop en temps réel). Il consomme les données des sources (Spouts) et les transmet au pipeline (Bolts). Vous pouvez les combiner dans la topologie. Donc Storm est essentiellement une unité de calcul (agrégation, machine learning).
Mais vous pouvez les utiliser ensemble: par exemple, votre application utilise kafka pour envoyer des données à d'autres serveurs qui utilise storm pour effectuer des calculs dessus.
la source
Je sais qu'il s'agit d'un fil de discussion plus ancien et que les comparaisons entre Apache Kafka et Storm étaient valides et correctes lorsqu'elles ont été écrites mais il convient de noter qu'Apache Kafka a beaucoup évolué au fil des ans et depuis la version 0.10 (avril 2016) Kafka a inclus une API Kafka Streams qui fournit des capacités de traitement de flux sans avoir besoin de logiciel supplémentaire tel que Storm. Kafka inclut également l'API Connect pour se connecter à diverses sources et récepteurs (destinations) de données.
Blog d'annonce - https://www.confluent.io/blog/introducing-kafka-streams-stream-processing-made-simple/
Documentation Apache actuelle - https://kafka.apache.org/documentation/streams/
Dans la version 0.11 Kafka, la fonctionnalité de traitement de flux a été encore étendue pour fournir une sémantique et des transactions Exactly Once.
https://www.confluent.io/blog/exactly-once-semantics-are-possible-heres-how-apache-kafka-does-it/
la source
Voilà comment cela fonctionne
Kafka - Pour fournir un flux en temps réel
Storm - Pour effectuer certaines opérations sur ce flux
Vous pouvez jeter un œil au projet GitHub https://github.com/abhishekgoel137/kafka-nodejs-d3js .
(D3js est une bibliothèque de représentation graphique)
Cas idéal:
Ce référentiel est basé sur:
la source
Comme tout le monde vous explique qu'Apache Kafka: est une file d'attente de messagerie continue
Apache Storm: est un outil de traitement continu
ici, dans cet aspect, Kafka obtiendra les données de n'importe quel site Web comme FB, Twitter en utilisant des API et ces données sont traitées à l'aide d'Apache Storm et vous pouvez stocker les données traitées dans les bases de données de votre choix.
https://github.com/miguno/kafka-storm-starter
Suivez-le, vous aurez une idée
la source
Quand j'ai un cas d'utilisation qui me demande de visualiser ou d'alerter sur des modèles (pensez aux tendances Twitter), tout en continuant à traiter les événements, j'ai plusieurs modèles.
NiFi me permettrait de traiter un événement et de mettre à jour un magasin de données persistant avec une agrégation de lots faible (plus) avec très, très peu de codage personnalisé.
Storm (beaucoup de codage personnalisé) me permet d'accéder presque en temps réel aux événements de tendance.
Si je peux attendre plusieurs secondes, alors je peux sortir de kafka, dans hdfs (Parquet) et traiter.
Si j'ai besoin de savoir en quelques secondes, j'ai besoin de NiFi, et probablement même de Storm. (Pensez à la surveillance de milliers de stations terriennes, où j'ai besoin de voir les conditions météorologiques des petites régions pour les alertes de tornade).
la source
Kafka envoie simplement les messages d'un nœud à un autre et Storm traite les messages. Consultez cet exemple de la façon dont vous pouvez intégrer Apache Kafka avec Storm
la source