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