zoonman
@zoonman
⋆⋆⋆⋆⋆

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

Я пытаюсь найти планировщик с распределением задач внутри пула серверов.
Например, у меня есть 10 задач, которые должны выполняться каждый день в 9.00 утра и 4 сервера. В 9.00 задачи равномерно или, если система позволяет вносить коэффициент сложности задачи и производительности сервера, в зависимости от нагрузки распределяет задачи с формированием очереди для каждого сервера. Но при распределении используется контроль выполнения и если задача не выполнена в течении какого-то интервала, то она перераспределяется между другими серверами. Т.е. масштабируемость и отказоустойчивость системы должны быть по умолчанию.
Я видел RabbitMQ & Gearman, они чем-то могут помочь, но только не как планировщик. Сейчас имеется свой простой велосипед, но применителен только к одному серверу, а мне нужна масштабируемость, т.к. планируется обрабатывать около 1000 задач в минуту.
Технически мне нужно запускать php-скрипт с параметром. Что-то вроде workerClient.php -task36762. Внутри скрипта должно быть что-то вроде взятия на выполнение и потверждения того, что задача выполнена с таким-то результатом. Идельно, если система будет использовать MongoDB.
  • Вопрос задан
  • 8038 просмотров
Решения вопроса 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, так что соседняя машина задачу уже выполнять не будет (само собой, нужно в базе как-то помечать, что задача выполнена - чтобы по её окончанию другая машина заново лок на эту задачу не взяла).
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
18 апр. 2024, в 21:56
2000 руб./за проект
18 апр. 2024, в 21:00
150 руб./за проект