Распределенное приложение C ++, использующее передачу сообщений

Я работаю над DMTCP (http://dmtcp.sourceforge.net/) и занимаюсь разработкой приложения, которое работает на нескольких удаленных компьютерах и вычисляет результат с помощью сообщений. Например, для расчета последовательности Фибоначчи для 3 машин A, B, C

  1. A вычисляет начальный номер и отправляет результат B

  2. B берет результаты A и использует их для вычисления следующего числа и отправляет его C.

  3. C затем вычисляет следующее число и отправляет A и так далее.

Я пытаюсь создать такое приложение, чтобы можно было проверить его, чтобы он перезапустился после сбоя. Однако я не смог представить код для такого приложения. Я впервые работаю над любым распределенным приложением.

Любая помощь будет высоко оценен 🙂

Спасибо 🙂

ОБНОВЛЕНИЕ: Как и предполагалось, моя машина не является кластером, но у меня есть несколько машин с их отдельными ОС, подключенными друг к другу через локальную сеть. Моя главная цель — запускать экземпляры моей программы на нескольких машинах так, чтобы они могли обмениваться данными, как показано выше.

Я надеюсь, что это немного проясняет вопрос.

1

Решение

Если ваша машина является кластером, вы должны использовать MPI (Message Passing Interface). Он предлагает богатый набор коммуникационных примитивов и является рабочей лошадкой распараллеливания в высокопроизводительных вычислениях.

0

Другие решения

Вы можете использовать много вариантов, в настоящее время я работаю над проектом с ZeroMQ и он может сделать работу просто отлично, так что любой другое программное обеспечение очереди сообщений. Вы также можете попробовать какую-то сетку (IceGrid), но это, скорее всего, будет излишним.

Для ZeroMQ см. Push / pull + возможно маршрутизаторы … Преимущество в том, что «система ØMQ может работать без выделенного брокера сообщений». Недостатком является то, что вам придется придумывать сериализацию / десериализацию данных (ØMQ не предоставляет такой, что не так уж и плохо).

Другим вариантом является Google Буферы протокола. Здесь вы будете интегрировать клиент / сервер и сериализацию / десериализацию, но вам придется выучить новый метаязык для определения сообщений. Они довольно гибкие — управление версиями, обратная совместимость … немного тяжеловато.

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector