Здесь вы обращаетесь к совершенно разным API, с различными представлениями о типе предоставляемых услуг и инфраструктуре для каждого из них. Я не знаю достаточно о MPI и Spread, чтобы отвечать за них, но я могу помочь немного больше с ZeroMQ.
ZeroMQ - это простая коммуникационная библиотека для обмена сообщениями. Он не делает ничего, кроме отправки сообщения разным партнерам (включая локальные) на основе ограниченного набора общих шаблонов обмена сообщениями (PUSH / PULL, REQUEST / REPLY, PUB / SUB и т. Д.). Он обрабатывает клиентское соединение, поиск и основную перегрузку строго на основе этих шаблонов, а все остальное вы должны делать сами.
Хотя это простое поведение выглядит очень ограниченным, оно в основном то, что вам нужно для коммуникационного уровня вашего приложения. Это позволяет очень быстро масштабироваться от простого прототипа, все в памяти, до более сложных распределенных приложений в различных средах, используя простые прокси и шлюзы между узлами. Однако не ожидайте, что он выполнит развертывание узла, обнаружение сети или мониторинг сервера; Тебе придется сделать это самому.
Вкратце, используйте zeromq, если у вас есть приложение, которое вы хотите масштабировать от простого многопоточного процесса до распределенной и переменной среды, или если вы хотите быстро экспериментировать и создавать прототипы, и кажется, что никакие решения не подходят для вашей модели. Однако, если вы хотите масштабироваться до очень большого кластера, вам придется приложить некоторые усилия для развертывания и мониторинга вашей сети.