Système de messagerie distribué Apache Storm


Apache Storm traite les données en temps réel et les entrées proviennent généralement d'un système de file d'attente de messages. Un système de messagerie distribué externe fournira les informations nécessaires au calcul en temps réel. Spout lira les données du système de messagerie, les convertira en tuples et les alimentera dans Apache Storm. Il est intéressant de noter qu'Apache Storm utilise son propre système de messagerie distribué en interne pour la communication entre son nimbus et son superviseur.

Qu'est-ce qu'une messagerie distribuée ?

La messagerie distribuée est basée sur le concept de files d'attente de messages fiables. Les messages sont mis en file d'attente de manière asynchrone entre l'application client et le système de messagerie. Les systèmes de messagerie distribués offrent les avantages de la fiabilité, de l'évolutivité et de la durabilité.

La plupart des modèles de messagerie suivent le Modèle Publier-Abonnez-vous (Publier-Abonnez-vous en abrégé), où l'expéditeur d'un message est appelé un éditeur et ceux qui souhaitent recevoir le message sont appelés abonnés.

Une fois le message publié par l'expéditeur, les abonnés peuvent recevoir le message sélectionné à l'aide des options de filtrage. Habituellement, nous avons deux types de filtrage, l'un est le filtrage basé sur le sujet et l'autre est le filtrage basé sur le contenu.

Il est à noter que le modèle pub-sub ne peut communiquer que par messages. Il s'agit d'une architecture très faiblement couplée ; même les expéditeurs ne savent pas qui sont leurs abonnés. De nombreux modèles de messagerie permettent aux courtiers de messages d'échanger des messages publiés pour un accès rapide à de nombreux abonnés. Un exemple concret est Dish TV, qui publie différentes chaînes comme le sport, les films, la musique, etc. N'importe qui peut s'abonner à son propre ensemble de chaînes et obtenir les chaînes auxquelles il est abonné lorsqu'elles sont disponibles.

messaging_system.jpg

Le tableau suivant décrit certains des systèmes de messagerie à haut débit les plus populaires -

Système de messagerie distribué Description
Apache Kafka Kafka a été développé sur LinkedIn, qui est ensuite devenu un sous-projet Apache. de . Apache Kafka est basé sur un modèle de publication-abonnement distribué, durable et activé par un courtier. Kafka est rapide, évolutif et efficace.
RabbitMQRabbitMQ est une application de messagerie robuste et distribuée open source. Il est facile à utiliser et fonctionne sur toutes les plateformes.
JMS (Java Message Service)JMS est une API open source qui prend en charge la création, la lecture et l'envoi de messages d'une application à une autre. Il fournit une messagerie garantie et suit un modèle de publication-abonnement.
ActiveMQLe système de messagerie ActiveMQ est une API open source pour JMS.
ZeroMQZeroMQ est un traitement de messages par les pairs sans courtier. Il fournit des modes de messagerie push-pull et routeur-revendeur.
KestrelKestrel est une file d'attente de messages distribuée rapide, fiable et simple.

Thrift Protocol

Thrift est construit sur Facebook pour le développement de services multilingues et les appels de procédures à distance (RPC). Plus tard, il est devenu un projet Apache open source. Apache Thrift est un langage de définition d'interface qui permet de définir facilement de nouveaux types de données et implémentations de services au-dessus des types de données définis.

Apache Thrift est également un framework de communication qui prend en charge les systèmes embarqués, les applications mobiles, les applications Web et de nombreux autres langages de programmation. Certaines des fonctionnalités clés associées à Apache Thrift sont sa modularité, sa flexibilité et ses hautes performances. De plus, il peut effectuer du streaming, de la messagerie et du RPC dans des applications distribuées.

Storm utilise largement le protocole Thrift pour la communication interne et la définition des données. La topologie des tempêtes n'est que Thrift Structs. Storm Nimbus est un Service Thrift qui exécute des topologies dans Apache Storm.