web-dev-qa-db-fra.com

ZeroMQ vs Crossroads I / O

Je cherche à utiliser ZeroMQ comme couche de messagerie/transport pour un système distribué assez important, ciblant principalement la surveillance et la collecte de données (de nombreux producteurs, quelques consommateurs).

Autant que je puisse voir, il existe actuellement deux implémentations différentes du même concept; ZeroMQ et Crossroads I/O, ce dernier étant un fork de ZeroMQ (en 2012?).

J'essaie de comprendre lequel utiliser et je m'interroge sur les différences entre eux, mais jusqu'à présent, je n'ai pas trouvé beaucoup d'informations à ce sujet.

Par exemple:

  • Sont-ils compatibles sur le fil?
  • Sont-ils compatibles avec l'API, c'est-à-dire une sorte d'API de base commune, éventuellement avec différents modules complémentaires?
  • Implémentent-ils tous les deux la prise en charge de ZMTP (ZeroMQ Message Transport Protocol)?
  • Partagent-ils une sorte de compréhension commune du développement futur ou vont-ils continuer dans deux directions différentes et possibles?
  • Quels sont les avantages/inconvénients les uns par rapport aux autres?

Fondamentalement, comment choisir l'un plutôt que l'autre?

46
Jakob Möllås

Crossroads.io est assez mort depuis que Martin Sustrik a commencé sur une nouvelle pile, en C, appelée nano: https://github.com/250bpm/nanomsg

Crossroads.io n'implémente pas, afaik, ZMTP/1.0 ni ZMTP/2.0 mais sa propre version du protocole.

Nano a des transports enfichables et nous ferons probablement un transport ZMTP pour cela. Nano est vraiment sympa, repenser la librairie originale libzmq, et s'il réussit, cela ferait un bon nouveau noyau.

Idéalement, Nano interagirait à la fois au niveau de l'API et du protocole, donc serait un remplacement enfichable pour libzmq. Il reste cependant un long chemin à parcourir.

Notez qu'il existe maintenant plusieurs réécritures de libzmq émergentes, y compris JeroMQ (Java) et NetMQ (C #). Ces deux implémentent correctement ZMTP/1.0 et ZMTP/2.0. Il existe également d'autres bibliothèques comme Axon (https://github.com/visionmedia/axon) qui sont fortement inspirées par 0MQ mais non compatibles.

Sur la base de l'expérience, les utilisateurs apprécient l'interopérabilité plus que presque toute autre chose, il est donc très probable que différentes piles de type 0MQ finiront par parler les mêmes protocoles.

79
Pieter Hintjens