2011-06-08 17 views
7

Esto es más una cuestión de implementación, pero ¿hay algún inconveniente en usar algo simple como cron para programar tareas como mapreduce para MongoDB? Digamos que se debe ejecutar algo cada hora, parece una forma adecuada de hacerlo ... Pero creo que solo pregunto por todos los sistemas populares de colas de trabajos como Resque y otros.Programación de trabajos de MapReduce para MongoDB

Supongo que mi pregunta es más como, ¿proporciona cron una solución sólida y confiable? ¿Pensamientos?

Respuesta

8

Cron se ha utilizado durante décadas y es bastante confiable y sólido; si su cron no es confiable, le sugiero que tenga una discusión firme con su proveedor de sistema operativo. Además, la documentación de MongoDB habla sobre trabajos cron (google "site: mongodb.org cron" para ver ejemplos) así que, presumiblemente, se esperan trabajos cron con MongoDB.

Dicho esto, si ya tiene una gran cantidad de infraestructura configurada para otro sistema de programación, entonces probablemente no haya ninguna razón para usar cron para MongoDB y algo más para otras tareas.

En cualquier caso, es probable que desee a la capa en un sencillo sistema de bloqueo de archivos PID si sus trabajos cron podrían tener el tiempo suficiente para solapar y sólo desea uno funcionando a la vez:

  • El cron trabajo busca un archivo PID cuando comienza.
  • Si encuentra el archivo, lee el PID del trabajo anterior y comprueba si aún se está ejecutando.
    • Si el anterior se está ejecutando, el nuevo se quejaría y saldría.
    • Si el anterior no se está ejecutando, el nuevo continuará.
  • Cuando el nuevo trabajo decide que está bien comenzar, escribe su PID en el archivo PID.
  • Cuando finaliza el nuevo trabajo, elimina el archivo PID inmediatamente antes de salir (o utilizando un controlador atexit o cualquier característica similar compatible con su entorno).
Cuestiones relacionadas