Посмотрите на Gearman , очередь менеджера заданий с несколькими машинами. требует специальных модулей;Я ответил здесь «на всякий случай», вы можете использовать дополнительные модули / инфраструктуру.
Существуют привязки Perl, Gearman :: XS , которые я успешно использую в проектах, где мне нужны конкретныезадачи, выполняемые в среде, в которой запросы или рабочие процессы могут находиться на нескольких компьютерах.Хорошо работает также для нескольких рабочих процессов на одном компьютере и одного запросчика (пример: определенный веб-скребок, который запрашивает все ссылки со страницы, проанализированной любым работником, но хочет сохранить контроль над результатами).
Способработает то, что вы создаете «рабочую» Perl-программу, которая имеет ряд подпрограмм, которые выполняют действие, которое вы хотели бы выполнять распределенным способом.Вы запускаете эти рабочие программы на тех машинах, которые вам нужны, и столько раз, сколько вы хотите, и позволяете им подключаться к одному (или нескольким) главному «диспетчеру».Затем вы создаете Perl-программу-запросчик (клиент Gearman), которая будет выполнять запросы.Это также может быть запущено на любой машине, и он свяжется с главным мастером-механиком, чтобы запросить выполнение ряда конкретных рабочих действий.Любой работник делает это, и ваш запросчик получает результат обратно.
Если ваши запросчики не нуждаются в возвращении результата, а "просто" нуждаются в выполнении задачи, вместо этого посмотрите TheSchwartz которая имеет аналогичную архитектуру, но не предоставляет средства для получения сообщений от рабочих обратно запрашивающим, IIRC.