Планирование заданий MapReduce для MongoDB - PullRequest
7 голосов
/ 09 июня 2011

Это больше вопрос реализации, но есть ли недостатки в использовании чего-то простого, например, cron, для планирования задач, таких как mapreduce для MongoDB?Скажем, что-то должно выполняться каждый час, это кажется подходящим способом сделать это ... Но я предполагаю, что просто спрашиваю из-за всех популярных систем очередей заданий, таких как Resque и другие.

Я полагаю, что мой вопрос больше похож на: предоставляет ли cron надежное и достаточно надежное решение?Мысли

1 Ответ

8 голосов
/ 09 июня 2011

Cron использовался десятилетиями и является достаточно надежным и надежным;если ваш cron ненадежен, я бы посоветовал провести строгое обсуждение с вашим поставщиком ОС.Кроме того, в документации MongoDB говорится о заданиях cron (например, google "site: mongodb.org cron"), поэтому, предположительно, следует ожидать выполнения заданий cron с MongoDB.

Тем не менее, если у вас уже есть кучаинфраструктуры, настроенной для другой системы планирования, тогда, вероятно, нет смысла использовать cron для MongoDB и что-то еще для других задач.

В любом случае, вы, вероятно, захотите использовать простую систему блокировки файлов PID, еслиВаши задания cron могут занимать достаточно много времени для перекрытия, и вы хотите, чтобы за один раз выполнялось только одно:

  • Задание cron ищет файл PID при запуске.
  • Если оно находитфайл, затем он читает PID старого задания из файла и проверяет, все ли еще работает.
    • Если старый работает, то новый будет жаловаться и выходить.
    • Если старый не работает, то новый продолжит работу.
  • Когда новое задание решает, что его можно запустить, оно записывает свой PID в файл PID.
  • Когда новое задание завершается, оно удаляет файл PID непосредственно перед выходом (илииспользуя обработчик atexit или аналогичную функцию, поддерживаемую вашей средой).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...