Вы можете либо создать менеджера, который распределяет работу, как сказал fejesjoco, либо вы можете сделать свои приложения достаточно умными, чтобы обрабатывать только определенное количество единиц работы. Когда они завершат обработку этих единиц, попросите их связаться с сервером базы данных, чтобы получить следующую партию. Промойте и повторите, пока не закончите.
В качестве примечания большинство распределенных рабочих систем управляются:
- Работа ставится в очередь на сервер партиями
- Рабочие процессы регистрируются на сервере, чтобы получить пакет для работы, доступный пакет помечается как обрабатываемый этим рабочим процессом.
- (необязательно) Рабочие процессы возвращаются к серверу с отчетом о состоянии (например: выполнено 10%, выполнено 20% и т. д.)
- Рабочий процесс завершает работу и отправляет результаты.
- Перейти к шагу 2.
Другой вариант — заставить 3 рабочих обработать один и тот же набор данных. Это позволит вам сравнить результаты. Если 2 или более имеют одинаковые результаты, вы принимаете эти результаты. Если все 3 имеют разные результаты, вы знаете, что есть проблема, и вам нужно проверить данные/код. Обычно это происходит только тогда, когда рабочие процессы находятся вне вашего контроля (например, SETI) или вы выполняете массовые вычисления и хотите исправить потенциальные проблемы с оборудованием.
Иногда есть приложение для управления, которое отображает текущее количество рабочих и прогресс всего набора. Если вы примерно знаете, сколько времени занимает отдельная партия, вы можете определить, когда рабочий процесс умер, и позволить новому процессу получить ту же партию.
Это позволяет вам добавлять или удалять столько отдельных рабочих процессов, сколько вы хотите, без необходимости что-либо перекодировать.
person
NotMe
schedule
28.12.2010