45 votes

Répandre vs MPI vs zeromq?

Dans une des réponses à la Diffusion comme UDP avec la Fiabilité de TCP, un utilisateur mentionne la Propagation de messagerie de l'API. J'ai aussi courir à travers un appelé ØMQ. J'ai aussi une certaine familiarité avec MPI.

Donc, ma question principale est: pourquoi choisir l'un plutôt que l'autre? Plus précisément, pourquoi devrais-je choisir d'utiliser la Propagation ou ØMQ quand il y a des matures implémentations de MPI à avoir?

53voto

tgamblin Points 25755

MPI a été conçue étroitement couplés clusters de calcul rapide et fiable des réseaux. Propagation et ØMQ sont conçus pour de grands systèmes distribués. Si vous êtes en train de concevoir, en parallèle, une application scientifique, aller avec MPI, mais si vous êtes à la conception d'une persistante système distribué qui doit faire face à des défauts et de l'instabilité du réseau, utilisez l'une des autres.

MPI a très peu d'installations pour la tolérance aux pannes; la valeur par défaut de gestion des erreurs de comportement dans la plupart des implémentations est un système à l'échelle de l'échec. Aussi, la sémantique de MPI exiger que tous les messages envoyés éventuellement être consommés. Cela fait beaucoup de sens pour les simulations sur un cluster, mais pas pour une application distribuée.

14voto

Eugene Yokota Points 43213

Je n'ai pas utilisé l'un de ces bibliothèques, mais je pourrai peut-être donner quelques indications.

  1. MPI est un protocole de communication alors que la Propagation et ØMQ sont mise en œuvre effective.
  2. MPI vient de "parallèle" de la programmation de l'Écart provient de "distribué" de la programmation.

Donc, cela dépend vraiment si vous essayez de créer un système parallèle ou distribuée du système. Ils sont liés les uns aux autres, mais les connotations implicites et les buts sont différents. La programmation parallèle traite avec l'augmentation de la puissance de calcul par l'utilisation de plusieurs ordinateurs simultanément. La programmation distribuée traite fiable (ce qui est conforme à tolérance de pannes, et hautement disponible) groupe d'ordinateurs.

Le concept de la "fiabilité" est légèrement différente de celle de TCP. TCP est la fiabilité est de "donner ce paquet à la fin du programme, peu importe quoi." La programmation distribuée fiabilité de l'est ", même si certaines machines mourir, l'ensemble du système continue à fonctionner de manière cohérente." Pour garantir que tous les participants ont reçu le message, on aurait besoin de quelque chose comme 2 phases de validation ou de l'un des plus rapides de solutions de rechange.

4voto

Fabien Ninoles Points 21

Que vous vous adressez très différentes Api ici, avec les différentes notions sur la nature des services fournis et de l'infrastructure pour chacun d'eux. Je ne sais pas assez sur MPI et la Propagation de répondre pour eux, mais je peux vous aider un peu plus avec ZeroMQ.

ZeroMQ est une simple messagerie bibliothèque de communication. Il ne fait rien d'autre que d'envoyer un message à différents pairs (y compris locaux) basé sur un ensemble restreint de la commune de modèles de messagerie (PUSH/PULL, DEMANDE/RÉPONSE, PUB/SUB, etc.). Elle gère la connexion du client, l'extraction, et la base de la congestion strictement basée sur ces modèles et que vous avez à faire vous même le reste.

Bien que semblant très restreint, ce simple comportement est surtout ce que vous auriez besoin pour la couche de communication de votre application. Il vous permet d'adapter très rapidement à partir d'un simple prototype, tout en mémoire, aux plus complexes, les applications distribuées dans divers environnements, en utilisant des proxys et des passerelles entre les nœuds. Cependant, ne vous attendez pas à faire le nœud de déploiement, de découverte de réseau, de serveur ou de surveillance; Vous devrez le faire vous-même.

Brièvement, l'utilisation zeromq si vous avez une application que vous souhaitez mettre à l'échelle de la simple multithread processus distribués et variable de l'environnement, ou que vous voulez expérimenter et de prototyper rapidement et que les solutions ne semble correspondre à votre modèle. Attendons cependant à mettre des efforts sur le déploiement et le suivi de votre réseau si vous souhaitez mettre à l'échelle d'un très grand groupe.

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