73 votes

Pourquoi utiliser AMQP / ZeroMQ / RabbitMQ

plutôt que d'écrire votre propre bibliothèque.

Nous travaillons sur un projet qui sera un auto-division pool de serveur, si l'article devient trop lourd, le gestionnaire de le diviser et de le mettre sur une autre machine comme un processus distinct. Il serait également d'informer tous les clients connectés cette touche pour vous connecter au nouveau serveur.

Je suis curieux de savoir sur l'utilisation de ZeroMQ pour l'inter-serveur et de communication inter-processus. Mon partenaire préfère rouler son propre. Je suis à la recherche à la communauté pour répondre à cette question.

Je suis assez novice programmeur moi-même et juste appris à propos de files d'attente de messages. Comme je l'ai googlé et lire, il semble que tout le monde est à l'aide de files d'attente de messages de toutes sortes de choses, mais pourquoi? Ce qui les rend mieux que l'écriture de votre propre bibliothèque? Pourquoi sont-ils si commun et pourquoi sont-ils si nombreux?

77voto

ppi Points 751

ce qui les rend mieux que l'écriture de votre propre bibliothèque?

Lors du déroulement de la première version de votre application, probablement rien: vos besoins sont bien définis et vous permettra de développer un système de messagerie qui correspondent à vos besoins: petite liste des fonctionnalités, petit code source etc.

Ces outils sont très utiles après la première version, lorsque vous avez réellement à étendre votre application et ajouter plus de fonctionnalités. Permettez-moi de vous donner quelques cas d'utilisation:

  • votre application devra parler à une machine big endian (sparc/powerpc) à partir d'un petit-boutiste de la machine (x86, intel/amd). Votre système de messagerie en avait quelques-boutiste de la commande hypothèse: aller et de le corriger
  • vous avez conçu votre application de sorte qu'il n'est pas un protocole binaire/système de messagerie et maintenant, il est très lent car vous passez la plupart de votre temps à analyser (le nombre de messages a augmenté et l'analyse est devenu un goulot d'étranglement): l'adapter de sorte qu'il peut transporter binaire/correction de l'encodage
  • au début, on avait 3 de la machine à l'intérieur d'un réseau local, sans observer de délai tout ce qui arrive à chaque machine. votre client/patron/pointu, cheveux-diable-patron et dites-vous que vous installez l'application sur le WAN vous ne gérez pas - et puis vous commencez à avoir des échecs de connexion, une mauvaise latence etc. vous avez besoin de stocker message et réessayez d'envoyer au plus tard le: reprendre le code et de le brancher des trucs (et profiter)

  • les messages envoyés besoin d'avoir des réponses, mais pas tous d'entre eux: vous envoyer quelques paramètres et de s'attendre à une feuille de calcul comme un résultat, au lieu de simplement envoyer et reconnaît, revenir à code et de le brancher des trucs (et en profiter.)

  • certains messages sont essentiels et il y a la réception/l'envoi des besoins de sauvegarde appropriées/persistance/. Pourquoi demandez-vous ? des fins de vérification

Et de nombreux autres cas d'utilisation que j'ai oublié ...

Vous pouvez la mettre en œuvre vous-même, mais ne passent pas beaucoup de temps à le faire: vous devrez probablement remplacer plus tard de toute façon.

40voto

alexis Points 1099

C'est très bien comme demander: pourquoi utiliser une base de données lorsque vous pouvez écrire votre propre?

La réponse est que l'utilisation d'un outil qui a été autour pendant un certain temps et il est bien compris dans beaucoup de différents cas d'utilisation, ne paie plus et de plus en plus au fil du temps et à mesure que vos besoins évoluent. Cela est particulièrement vrai si plus d'un développeur est impliqué dans un projet. Voulez-vous devenir personnel de soutien pour un système de files d'attente, si vous passez à un nouveau projet? À l'aide d'un outil empêche que cela se produise. Il devient quelqu'un d'autre problème.

Affaire au point: la persistance. La rédaction d'un outil pour stocker un message sur le disque est facile. L'écriture d'un persistor qui évolue et se développe bien et de manière stable, dans plusieurs cas d'utilisation, et est facile à gérer et à bas prix à l'appui, est difficile. Si vous voulez voir quelqu'un se plaindre de la façon dont il est difficile alors regardez ceci: http://www.lshift.net/blog/2009/12/07/rabbitmq-at-the-skills-matter-functional-programming-exchange

De toute façon, j'espère que cette aide. Par tous les moyens d'écrire votre propre outil. Beaucoup, beaucoup de gens l'ont fait. Quelle que soit résout votre problème, est bon.

18voto

Daniel Paull Points 4225

Je suis en train d'étudier à l'aide de ZeroMQ moi-même - d'où je suis tombé sur cette question.

Supposons pour le moment que vous avez la capacité de mettre en œuvre un message queuing système qui répond à toutes vos exigences. Pourquoi voulez-vous adopter ZeroMQ (ou un autre tiers de la bibliothèque) sur le rouleau de-votre-propre approche? Simple coût.

Supposons pour un instant que ZeroMQ répond déjà à toutes vos exigences. Tout ce qui doit être fait est de l'intégrer dans votre construction, de lire quelques-doco et puis commencer à l'utiliser. Qui est arrivé à être beaucoup moins d'effort que de rouler votre propre. De Plus, le fardeau de l'entretien a été déplacé à une autre société. Depuis ZeroMQ est gratuit, c'est que vous avez développé votre équipe de développement à inclure (une partie de) la ZeroMQ de l'équipe.

Si vous avez exécuté un Logiciel de Développement d'affaires, puis je pense que vous serait un équilibre entre le coût/risque de l'utilisation de bibliothèques tierces à l'encontre de roulement de votre propre, et dans ce cas, à l'aide de ZeroMQ allait gagner haut la main.

Peut-être que vous (ou plutôt, votre partenaire) souffre, comme beaucoup de développeurs ne, de la "Pas Inventé Ici" syndrome? Si oui, ajuster votre attitude et de réévaluer l'utilisation de ZeroMQ. Personnellement, je préfère de beaucoup les avantages d'avoir Trouvé Ailleurs attitude. J'espère que je peux fier de trouver ZeroMQ... le temps nous le dira.

EDIT: je suis tombé sur cette vidéo à partir de la ZeroMQ développeurs qui parle de pourquoi vous devriez utiliser ZeroMQ.

6voto

pmf Points 3796

ce qui les rend mieux que l'écriture de votre propre bibliothèque?

Message queuing systèmes transactionnels, qui est conceptuellement simple à utiliser en tant que client, mais dur pour obtenir le droit comme un réalisateur, surtout vu les files d'attente persistantes. Vous pourriez penser que vous pouvez obtenir loin avec l'écriture d'une messagerie rapide de la bibliothèque, mais sans opérations et de la persistance, vous n'aurais pas de tous les avantages d'un système de messagerie.

La persistance dans ce contexte signifie que la messagerie middleware garde non gérée messages dans la mémoire permanente (sur le disque) dans le cas où le serveur est en panne; après un redémarrage, les messages peuvent être manipulés et pas de retransmettre est nécessaire (l'expéditeur ne sait même pas il y a un problème). Transactionnelle signifie que vous pouvez lire des messages de différentes files d'attente et écrire des messages à différentes files d'attente de manière transactionnelle, ce qui signifie que, soit toutes les lectures et écritures de réussir ou d' (si un ou plus de l'échec), aucun ne réussit. Ce n'est pas vraiment très différent de la transactionality connu de l'interfaçage avec des bases de données et présente les mêmes avantages (il simplifie la gestion des erreurs; sans des opérations, vous avez pour s'assurer que chaque lecture/écriture réussit, et si un ou plusieurs échouent, vous avez à revenir sur les changements qui a réussi).

4voto

Michael Dillon Points 18741

Avant d’écrire votre propre bibliothèque, lisez le Guide 0MQ ici: http://zguide.zeromq.org/page:all

Il est fort probable que vous décidiez d'installer RabbitMQ ou de créer votre bibliothèque au-dessus de ZeroMQ puisqu'ils ont déjà effectué toutes les tâches difficiles.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X