Я собираюсь построить распределенный кластер кодирования видео из нескольких десятков машин. Я никогда раньше не работал с очередью сообщений, но двое, с которыми я начал экспериментировать, были Gearman и Beanstalkd.
Beanstalk кажется намного проще и проще в использовании, чем Gearman, но он не такой многофункциональный, как.
Одного я не понимаю ... как вы создаете новых рабочих на всех серверах? Планирую использовать php. Это так же просто, как запустить worker.php в интерфейсе командной строки с «&» и просто заставить его ждать работы?
Я заметил, что gearman на самом деле не убивает процесс после выполнения задания, но Beanstalk убивает, поэтому мне приходится перезапускать скрипт после каждого задания на каждом сервере.
В настоящее время я более склонен использовать Beanstalk, общий поток вещей, который я планировал, был следующим:
Моментально запускайте cron на каждом сервере, который проверяет наличие заранее определенного количества запущенных рабочих. Если его меньше, чем должно быть, создайте новые рабочие процессы. Каждый процесс займет примерно 2–30 минут.
Может, у меня здесь ошибка в логике? Дайте мне знать, какой способ сделать это «лучше» или «правильно»?