Распределенное кодирование видео - Gearman vs Beanstalkd - PullRequest
6 голосов
/ 22 февраля 2012

Я собираюсь построить распределенный кластер кодирования видео из нескольких десятков машин.Я никогда раньше не работал с очередью сообщений, но 2, с которыми я начал играть, были Gearman и Beanstalkd.

Beanstalk кажется намного проще и проще в использовании, чем Gearman, но он не так богат, как.

Одна вещь, которую я не понимаю, это ... как вы порождаете новых работников на всех серверах?Я планирую использовать php.Это так же просто, как запустить worker.php в CLI с «&» и просто сидеть там в ожидании работы?

Я заметил, что gearman на самом деле не убивает процесс после выполнения задания, но Beanstalk делает, поэтому мне приходится перезапускать скрипт после каждого задания на каждом сервере.

В настоящее время я более склонен к использованию Beanstalk, общий план действий, который я планировал, был:

Запускать мелкие кроны на каждом сервере, который проверяет, работает ли заранее определенное количество рабочих.Если его меньше, чем должно быть, появляются новые рабочие процессы.Каждый процесс займет примерно 2-30 минут.

Может быть, у меня есть недостаток в моей логике здесь?Дайте мне знать, что будет "лучшим" или "правильным" способом сделать это?

1 Ответ

0 голосов
/ 06 марта 2012

Терминология, которую я буду использовать, чтобы попытаться прояснить ситуацию ... Существует понятие производителя и потребителя.Производитель создает задания, которые помещаются в очередь (т. Е. Службу beanstalk), которая затем читается потребителем.

Существует несколько способов написания потребителя.Вы можете либо через каждые x периодов времени с помощью задания cron запускать задание, либо просто заставить потребителя запустить цикл 1 с помощью php (или что у вас).

Где установить сервис действительно зависит от того, что вы собираетесь.Для меня я обычно устанавливаю сервис либо на потребителя (ей), либо на отдельную коробку (иногда последняя излишне зависит от ваших потребностей).

Если вы хотите долговечности на стороне очереди, вам следует использовать параметр binlog Beanstalk (-b).Если что-то случится с вашей службой beanstalk, это позволит вам перезапустить компьютер с минимальной потерей данных в очередях (если нет информации).Долговечность на стороне производителя может быть обусловлена ​​наличием нескольких очередей, с которыми можно столкнуться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...