Redis
 sql >> Base de Dados >  >> NoSQL >> Redis

delay_jobs vs resque vs beanstalkd?


Para meus projetos eu me sentirei muito confortável com o uso coletivo/delayed_job nos rails2 e 3.Não conheço o beanstalkd, mas vou tentar em breve :-).Segui as sugestões da documentação resque.Vou relatar.
Resque vs DelayedJob

Como o Resque se compara ao DelayedJob e por que você escolheria um em vez do outro?
  • Resque suporta várias filas
  • DelayedJob suporta prioridades mais refinadas
  • Os trabalhadores da Resque são resistentes a vazamentos de memória/inchaço
  • Os trabalhadores do DelayedJob são extremamente simples e fáceis de modificar
  • Resque requer Redis
  • DelayedJob requer ActiveRecord
  • Resque só pode colocar objetos Ruby JSONable em uma fila como argumentos
  • DelayedJob pode colocar qualquer objeto Ruby em sua fila como argumentos
  • Resque inclui um aplicativo Sinatra para monitorar o que está acontecendo
  • DelayedJob pode ser consultado de dentro do seu aplicativo Rails se você quiser adicionar uma interface

Se você está desenvolvendo Rails, você já tem um banco de dados e ActiveRecord. DelayedJob é super fácil de configurar e funciona muito bem. O GitHub o usou por muitos meses para processar quase 200 milhões de trabalhos.

Escolha Resque se:
  • Você precisa de várias filas
  • Você não se importa / não gosta de prioridades numéricas
  • Você não precisa persistir em todos os objetos Ruby
  • Você tem filas potencialmente enormes
  • Você quer ver o que está acontecendo
  • Você espera muito fracasso/caos
  • Você pode configurar o Redis
  • Você não está com falta de RAM

Escolha Trabalho Atrasado se:
  • Você gosta de prioridades numéricas
  • Você não está fazendo uma quantidade gigantesca de trabalhos todos os dias
  • Sua fila permanece pequena e ágil
  • Não há muitas falhas / caos
  • Você quer jogar facilmente qualquer coisa na fila
  • Você não deseja configurar o Redis

Escolha Beanstalkd se:
  • Você gosta de prioridades numéricas
  • Você quer uma fila extremamente rápida
  • Você não quer desperdiçar sua RAM
  • Você deseja atender a um grande número de empregos
  • Você está bem com objetos Ruby JSONable em uma fila como argumentos
  • Você precisa de várias filas

De forma alguma Resque é um "melhor" DelayedJob, portanto, certifique-se de escolher a ferramenta que é melhor para seu aplicativo.

Uma boa comparação da velocidade de back-end de enfileiramento:
                 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

Tenha um bom dia!

P.S. Existe um RailsCast sobre resque, Delayed Job (versão revisada) e Beanstakld. Dar uma olhada!

P.P.S. Minha escolha favorita agora é o Sidekiq (muito simples, rápido e eficiente para trabalhos simples), dê uma olhada nesta página para comparação.