Sie richten sich hier an sehr unterschiedliche APIs mit unterschiedlichen Vorstellungen über die Art der bereitgestellten Dienste und die Infrastruktur für jeden von ihnen. Ich weiß nicht genug über MPI und Spread, um für sie zu antworten, aber ich kann ein wenig mehr mit ZeroMQ helfen.
ZeroMQ ist eine einfache Messaging-Kommunikationsbibliothek. Es sendet nichts anderes als eine Nachricht an verschiedene Peers (einschließlich lokale) basierend auf einem eingeschränkten Satz von allgemeinen Messaging-Mustern (PUSH/PULL, REQUEST/REPLY, PUB/SUB usw.). Es behandelt Client-Verbindung, Abruf und grundlegende Engpässe streng nach diesen Mustern und Sie müssen den Rest selbst erledigen.
Dieses einfache Verhalten ist zwar sehr eingeschränkt, ist jedoch größtenteils das, was Sie für die Kommunikationsebene Ihrer Anwendung benötigen. Sie können damit sehr schnell skalieren, von einem einfachen Prototyp im Speicher bis hin zu komplexeren verteilten Anwendungen in verschiedenen Umgebungen mit einfachen Proxys und Gateways zwischen Knoten. Erwarten Sie jedoch nicht, dass Knotenbereitstellung, Netzwerkerkennung oder Serverüberwachung durchgeführt werden. Sie müssen es selbst tun.
Kurz gesagt, verwendet zeromq, wenn Sie eine Anwendung, die Sie von dem einfachen Multi-Thread-Prozess auf eine verteilte und variable Umgebung skalieren mögen, oder dass Sie schnell zu experimentieren und Prototypen und keine Lösungen scheinen mit Ihrem Modell zu passen. Erwarten Sie jedoch, dass Sie sich bei der Bereitstellung und Überwachung Ihres Netzwerks etwas anstrengen müssen, wenn Sie auf einen sehr großen Cluster skalieren möchten.