ØMQ, la messagerie inter-applications « nouvelle vague »

Posté par  . Modéré par patrick_g.
Étiquettes :
18
16
juin
2010
Technologie
AMQP, ou Advanced Message Queuing Protocol, est un protocole standard ouvert pour les MOM, ou Message Oriented Middleware. Pour résumer, c'est un protocole de message entre serveurs offrant des mécanismes de files d'attente, de routage (point à point et par diffusion/abonnement), de fiabilité, et de sécurité. Citons les implémentations OpenAMQ (en C, sous GPLv3) ou RabbitMQ (en erlang, sous MPL).

Le sujet n'est pas nouveau, mais iMatix considère ce standard comme dépassé et en propose un nouveau, ØMQ ou ZeroMQ, avec une implémentation de qualité : légèreté, facilité d'intégration et performances. iMatix a pendant un temps développé OpenAMQ, mais soutient et développe désormais le projet ØMQ.

Que vous utilisiez Ruby, Python ou C n'est pas un problème, les bindings existent déjà. Vous pouvez vous en rendre compte en consultant le livre de recettes. La bibliothèque est elle-même développée en C++, sous licence LGPL.

Le transport des messages entre les nœuds est assuré par différents biais selon la disponibilité des moyens : TCP/IP, PGM, InfiniBand ou encore socket Unix dans le cas de communications internes. L'interface proposée permet d'implémenter de façon concise les principaux usages de messagerie inter-applications : requête/réponse, abonnement/notification, éventuellement avec restriction à un sujet particulier. L'utilisation de fonctions avancées comme le zero-copy ou le scatter-gather est rendue possible dans les dernières versions de la bibliothèque.

Aller plus loin

  • # Pas du AMQP

    Posté par  (site web personnel) . Évalué à 8.

    Il semble que ØMQ ne soit pas une implémentation d'AMQP. Sur la première page du site il y a une comparaison avec AMQP indiquant que ØMQ est plus simple et plus rapide, et dans la FAQ il y a :

    Does ØMQ support AMQP protocol?
    It used to. The feature was dropped to protect ØMQ users from infringement on AMQP-related patents

    C'est donc un protocole complètement différent, et probablement spécifique à ØMQ. Quelqu'un peut modifier la dépêche ?
    • [^] # Re: Pas du AMQP

      Posté par  (site web personnel) . Évalué à 4.

      J'ai essayé de corriger la dépêche, et j'espère qu'elle veut encore dire quelque chose. Si des lecteurs ont des propositions pour l'améliorer, n'hésitez pas.
      • [^] # Re: Pas du AMQP

        Posté par  . Évalué à 0.

        merci pour la correction, c'est clair sauf pour la phrase suivante qui porte à confusion :
        iMatix a pendant un temps développé OpenAMQ, mais soutient et développe désormais ce projet.
  • # Projets/Applications utilisant 0MQ?

    Posté par  (site web personnel) . Évalué à 3.

    Est-ce qu'il existe une liste de projets/applications qui utilisent 0MQ?
    J'ai cherché sur le le site de 0MQ
    (enfin jusqu'à qu'il ne réponde plus ??linuxfr-isé??)
    sans succès?

    Je serai particulièrement intéressé par des utilisations avec une archi. broker-less.
    (j'irais évidemment poser la question sur le site 0MQ dès qu'il sera revenu à lui :-)
  • # Standard et logiciel ?

    Posté par  . Évalué à 4.

    Nous avons donc un logiciel et un protocole, développés tous les deux par la même équipe, ce qui est à mon avis un grand frein pour l'adoption en entreprise : je préfère en effet prendre un standard implémenté par plusieurs solutions, ça me permet de ne pas être captif. Sinon ça revient à prendre un système fermé : le couplage est trop fort.

    Le jour où il existera d'autres implémentations - et donc une reconnaissance du protocole - alors je pourrai changer d'avis.
    • [^] # Re: Standard et logiciel ?

      Posté par  . Évalué à 4.

      Pour reprendre le Tao de l'IETF, "we believe in rough consensus and running code". Et c'est comme ça depuis TCP/IP (l'implémentation de référence étant BSD 4.3 à l'époque). Un protocole sans implémentation de référence ça ne sert à rien et ça aboutit rarement à quoi que ce soit. Ca évite aussi d'avoir un protocole qui définit des choses complétement pas optimales une fois implémentées (cas d'école que j'ai vécu de plus ou moins loin : IDMEF, un standard IETF d'échange d'alertes de système de détection d'intrusion).
    • [^] # Re: Standard et logiciel ?

      Posté par  . Évalué à 3.

      C'est effectivement ennuyeux qu'il n'y ait qu'une seule implémentation, mais il faut bien commencer quelque part.

      Si le protocole est libre, rien n'empêche quelqu'un d'autre de l'implémenter différemment dans son coin sans rien demander à personne. C'est la force des protocoles libres! Pas comme avec un protocole propriétaire avec une seule implémentation propriétaire.

      Pour la suite, tout dépend de comment les autres acteurs du monde la messagerie accueilleront ce nouveau protocole.
  • # Eviter OpenAMQ pour les perfs

    Posté par  . Évalué à 2.

    Dans ma boite, j'ai recupere un projet sous OpenAMQ (l'implementation originale de AMQP par iMatix).

    Bon c'est lent quand tu n'as pas beaucoup de messages (20 msec) et ca drop des messages quand tu en envoies trop.
    J'ai laisse plusieurs messages sur le site a propos des perfs : aucune reponse.
    La documentation laisse aussi a desirer.

    D'apres ce que j'ai compris, iMatix a rachete 0MQ parce que 0MQ etait beaucoup plus rapide. Ils ont d'ailleurs une implementation 1/1 de queue lock free assez sympa.

    Au final j'ai reinvente la roue avec une DSL tres simple et je suis tres content des perfs.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.