Aquí se abordan API muy diferentes, con nociones diferentes sobre el tipo de servicios proporcionados y la infraestructura para cada uno de ellos. No sé lo suficiente sobre MPI y Spread para responder por ellos, pero puedo ayudar un poco más con ZeroMQ.
ZeroMQ es una biblioteca de comunicación de mensajería simple. No hace más que enviar un mensaje a diferentes pares (incluidos los locales) en función de un conjunto restringido de patrones de mensajes comunes (PUSH/PULL, PETICIÓN/RESPUESTA, PUB/SUB, etc.). Maneja la conexión del cliente, la recuperación y la congestión básica basada estrictamente en esos patrones y usted tiene que hacer el resto usted mismo.
Aunque parece muy restringido, este comportamiento simple es principalmente lo que necesitaría para la capa de comunicación de su aplicación. Le permite escalar muy rápidamente de un prototipo simple, todo en memoria, a aplicaciones distribuidas más complejas en diversos entornos, utilizando proxies simples y pasarelas entre nodos. Sin embargo, no espere que realice la implementación de nodos, el descubrimiento de red o la supervisión del servidor; Tendrás que hacerlo tú mismo.
En pocas palabras, utilice zeromq si tiene una aplicación que desea escalar del simple proceso multiproceso a un entorno distribuido y variable, o si desea experimentar y crear prototipos rápidamente y que ninguna solución parece ajustarse a su modelo. No obstante, tenga que esforzarse un poco en el despliegue y la supervisión de su red si desea escalar a un clúster muy grande.