zoonman
@zoonman
⋆⋆⋆⋆⋆

Существует ли аналог Cron с распределением задач между серверами?

Я пытаюсь найти планировщик с распределением задач внутри пула серверов.
Например, у меня есть 10 задач, которые должны выполняться каждый день в 9.00 утра и 4 сервера. В 9.00 задачи равномерно или, если система позволяет вносить коэффициент сложности задачи и производительности сервера, в зависимости от нагрузки распределяет задачи с формированием очереди для каждого сервера. Но при распределении используется контроль выполнения и если задача не выполнена в течении какого-то интервала, то она перераспределяется между другими серверами. Т.е. масштабируемость и отказоустойчивость системы должны быть по умолчанию.
Я видел RabbitMQ & Gearman, они чем-то могут помочь, но только не как планировщик. Сейчас имеется свой простой велосипед, но применителен только к одному серверу, а мне нужна масштабируемость, т.к. планируется обрабатывать около 1000 задач в минуту.
Технически мне нужно запускать php-скрипт с параметром. Что-то вроде workerClient.php -task36762. Внутри скрипта должно быть что-то вроде взятия на выполнение и потверждения того, что задача выполнена с таким-то результатом. Идельно, если система будет использовать MongoDB.
  • Вопрос задан
  • 8165 просмотров
Решения вопроса 1
dizballanze
@dizballanze
Software developer at Yandex
Пригласить эксперта
Ответы на вопрос 3
icelaba
@icelaba
Знаю и умею всё
Что вам мешает держать открытые процессы на серверах висящие на rabbitMQ очереди используя ack:true, prefetchCount:N ,
и управлять задачами с одной машины - управляющий процесс запускать cron ом,
Раббит решит такие ваши задачи как контроль выполнения
(если сервер отвалится или процесс упадет то задача будет перевыставлена автоматически),
насчет перевыставлять по таймауту - если сервер работает и не упал (то какой смысл - задача также повесит другой сервер)
Задачи равномерной загрузки и тп
Раббит очень удобная штука, и на 1000 задач в минуту будет работать великолепно.
Ответ написан
Комментировать
@Visteras
Любознателен, интересуюсь новым и старым :)
Эм... немного не понял - если нужно дергать только php скрипты - то в чем вообще проблема дергать их все с одного компа самым обычным кроном?
Или я не верно понял что вам нужно?
Ответ написан
@inkvizitor68sl
Linux-сисадмин с 8 летним стажем.
https://github.com/noxiouz/python-flock + обычный крон.
Перед выполнением задачи берется лок в zookeeper, так что соседняя машина задачу уже выполнять не будет (само собой, нужно в базе как-то помечать, что задача выполнена - чтобы по её окончанию другая машина заново лок на эту задачу не взяла).
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы