sql >> Base de Datos >  >> NoSQL >> Redis

delay_jobs vs resque vs beanstalkd?

Para mis proyectos, me sentiré muy cómodo con la idea colectiva/trabajo retrasado en los rieles 2 y 3. No conozco beanstalkd, pero lo intentaré pronto :-). He seguido las sugerencias en la documentación correspondiente. Lo informaré. /P>

Resque vs DelayedJob

¿Cómo se compara Resque con DelayedJob y por qué elegiría uno sobre el otro?

  • Resque admite varias colas
  • DelayedJob admite prioridades más detalladas
  • Los trabajadores de Resque son resistentes a las fugas/inflación de memoria
  • Los trabajadores de DelayedJob son extremadamente simples y fáciles de modificar
  • Resque requiere Redis
  • DelayedJob requiere ActiveRecord
  • Resque solo puede colocar objetos Ruby aptos para JSON en una cola como argumentos
  • DelayedJob puede colocar cualquier objeto Ruby en su cola como argumentos
  • Resque incluye una aplicación de Sinatra para monitorear lo que sucede
  • Se puede consultar DelayedJob desde su aplicación Rails si desea agregar una interfaz

Si está desarrollando Rails, ya tiene una base de datos y ActiveRecord. DelayedJob es muy fácil de configurar y funciona muy bien. GitHub lo usó durante muchos meses para procesar casi 200 millones de trabajos.

Elija Resque si:

  • Necesita varias colas
  • No te importa/no te gustan las prioridades numéricas
  • No es necesario conservar todos los objetos de Ruby nunca
  • Tiene colas potencialmente enormes
  • Quieres ver lo que está pasando
  • Esperas mucho fracaso/caos
  • Puede configurar Redis
  • No te estás quedando sin RAM

Elija Trabajo retrasado si:

  • Te gustan las prioridades numéricas
  • No estás haciendo una gran cantidad de trabajos cada día
  • Su cola se mantiene pequeña y ágil
  • No hay mucho fracaso/caos
  • Quieres tirar fácilmente cualquier cosa en la cola
  • No desea configurar Redis

Elija Beanstalkd si:

  • Te gustan las prioridades numéricas
  • Quieres una cola extremadamente rápida
  • No querrás desperdiciar tu RAM
  • Desea atender una gran cantidad de trabajos
  • Está bien con objetos JSONable Ruby en una cola como argumentos
  • Necesita varias colas

De ninguna manera Resque es un DelayedJob "mejor", así que asegúrese de elegir la mejor herramienta para su aplicación.

Una buena comparación de la velocidad de backend en cola:

                 enqueue                work
-------------------------------------------------
delayed job |   200 jobs/sec     120 jobs/sec
resque      |  3800 jobs/sec     300 jobs/sec
rabbitmq    |  2500 jobs/sec    1300 jobs/sec
beanstalk   |  9000 jobs/sec    5200 jobs/sec

¡Que tengas un buen día!

PD Hay un RailsCast sobre resque, Delayed Job (versión revisada) y Beanstakld. ¡Echa un vistazo!

P.P.D. Mi elección favorita ahora es Sidekiq (muy simple, rápido y eficiente para trabajos simples), eche un vistazo a esta página para comparar.