web-dev-qa-db-fra.com

Différence entre le traitement de flux et le traitement de message

Quelle est la différence fondamentale entre le traitement de flux et le traitement de message traditionnel? Comme on le dit, kafka est un bon choix pour le traitement de flux, mais essentiellement kafka est un cadre de messagerie similaire à ActivMQ, RabbitMQ, etc.).

Pourquoi ne disons-nous 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 détermine s'il s'agit d'un flux?

36
TechEnthusiast

Dans le traitement de message traditionnel, vous appliquez des calculs simples aux 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 des agrégations et des jointures).

En outre, le système de messagerie traditionnel ne peut pas remonter dans le temps - c’est-à-dire que les messages supprimés automatiquement après leur remise à tous les consommateurs abonnés. En revanche, Kafka conserve les messages car il utilise un modèle basé sur l'extraction (c.-à-d. Les données extraites par le consommateur hors 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, ce qui permet le traitement des flux, car il permet des applications plus complexes. De plus, le traitement des flux ne concerne pas nécessairement le traitement en temps réel, mais le traitement. flux d'entrée infini (par opposition au traitement par lots appliqué à des entrées finies).

Et Kafka offre Kafka API Connect et Streams - il s'agit donc d'une plate-forme de traitement de flux et non d'un système de messagerie/pub-sub (même s'il utilise ceci dans son noyau).

63
Matthias J. Sax

Fondamentalement Kafka est un cadre de messagerie similaire à ActiveMQ ou RabbitMQ. Certains efforts sont nécessaires pour que Kafka vers le streaming est fait par Confluent.

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

Alors pourquoi Kafka entre en scène quand on parle de traitement de flux?

La structure de traitement de flux diffère en fonction de l'entrée de données.En traitement par lots, certains fichiers sont stockés dans le système de fichiers et vous souhaitez les traiter en continu et les stocker dans une base de données. Tandis que dans les infrastructures de traitement de flux telles que Spark, Storm, etc., certains dispositifs de détection, flux api et kafka) sont utilisés en continu pour alimenter le moteur de diffusion.

6
Paresh