2017-01-19 1 views
9

Quelle est la différence fondamentale entre le traitement de flux et le traitement traditionnel des messages? Comme on dit que kafka est un bon choix pour le traitement de flux, mais kafka est un framework de messagerie similaire à ActivMQ, RabbitMQ etc.Différence entre le traitement du flux et le traitement des messages

Pourquoi ne dit-on pas généralement qu'ActiveMQ est également bon pour le traitement de flux.

Est-ce la vitesse à laquelle les messages sont consommés par le consommateur qui détermine s'il s'agit d'un flux?

+0

Je pense que vous pourriez trouver https://www.quora.com/What-are-the-differences-between-Apache-Kafka-and-RabbitMQ intéressant –

Répondre

27

Dans le traitement traditionnel des messages, vous appliquez des calculs simples sur les messages - dans la plupart des cas individuellement par message. Dans le traitement de flux, vous appliquez des opérations complexes sur plusieurs flux d'entrée et plusieurs enregistrements (c'est-à-dire des messages) en même temps (comme les agrégations et les jointures).

En outre, le système de messagerie traditionnel ne peut pas remonter dans le temps, c'est-à-dire qu'il supprime automatiquement les messages après leur livraison à tous les consommateurs abonnés. En revanche, Kafka conserve les messages car il utilise un modèle basé sur le tirage (c.-à-d., Les données tirées par les consommateurs de Kafka) pendant une durée configurable. Cela permet aux consommateurs de "rembobiner" et de consommer des messages plusieurs fois - ou si vous ajoutez un nouveau consommateur, il peut lire l'historique complet. Cela rend le traitement de flux possible, car il permet des applications plus complexes. En outre, le traitement de flux ne concerne pas nécessairement le traitement en temps réel - il s'agit de traiter un flux d'entrée infini (contrairement au traitement par lots appliqué aux entrées finies). Kafka propose l'API Kafka Connect et Streams - il s'agit donc d'une plate-forme de traitement de flux et pas seulement d'un système de messagerie/sous-registre (même s'il l'utilise dans son noyau).

+1

En outre, le flux d'entrée peut être infini, mais le traitement ressemble plus à une fenêtre glissante d'entrée finie. En ce sens, il n'y a pas vraiment de différence entre le traitement par lots et le traitement par lots. Le traitement par lots est juste un cas particulier de traitement de flux où les fenêtres sont fortement définies. – Davos

5

Fondamentalement Kafka est un framework de messagerie similaire à ActiveMQ ou RabbitMQ. Il y a quelques efforts pour prendre Kafka vers le streaming qui est fait par Confluent.

https://www.confluent.io/blog/introducing-kafka-streams-stream-processing-made-simple/

Alors pourquoi Kafka vient en image quand on parle de traitement de flux?

La structure de traitement de flux diffère avec l'entrée de données. Dans le traitement par lots, vous avez des fichiers stockés dans le système de fichiers et vous souhaitez traiter cela en continu et les stocker dans certaines bases de données. Alors que dans les frameworks de traitement de flux tels que Spark, Storm, etc., les entrées de certains périphériques de capteurs seront continuellement alimentées, api feed et kafka sont utilisés pour alimenter le moteur de streaming.

+5

Apache Kafka se décrit comme une "plate-forme de diffusion distribuée", voir https://kafka.apache.org/. En 2012, il a commencé, grosso modo, en tant que système de messagerie, mais de nos jours, c'est beaucoup plus que cela. Kafka embarque en particulier son propre moteur de traitement de flux, appelé Streams API de Kafka (ou Kafka Streams en abrégé). Vous n'avez plus besoin d'utiliser une technologie de traitement de flux séparée telle que Storm ou Spark, et de nombreux anciens utilisateurs de Spark/Storm/... ont commencé à migrer vers l'API Streams de Kafka pour simplifier et améliorer leurs architectures de données. –