Redis
 sql >> Base de données >  >> NoSQL >> Redis

delay_jobs vs resque vs haricot magique ?

Pour mes projets, je me sentirai très à l'aise avec collectiveidea/delayed_job dans rails2 et 3.Je ne connais pas beanstalkd, mais je vais l'essayer bientôt :-).J'ai suivi les suggestions dans la documentation resque.Je vais le signaler.

Resque vs DelayedJob

Comment Resque se compare-t-il à DelayedJob, et pourquoi choisiriez-vous l'un plutôt que l'autre ?

  • Resque prend en charge plusieurs files d'attente
  • DelayedJob prend en charge des priorités plus précises
  • Les nœuds de calcul de Resque sont résistants aux fuites/gonflements de mémoire
  • Les nœuds de calcul DelayedJob sont extrêmement simples et faciles à modifier
  • Resque nécessite Redis
  • DelayedJob nécessite ActiveRecord
  • Resque ne peut placer que des objets Ruby JSONable dans une file d'attente en tant qu'arguments
  • DelayedJob peut placer n'importe quel objet Ruby dans sa file d'attente en tant qu'arguments
  • Resque inclut une application Sinatra pour surveiller ce qui se passe
  • DelayedJob peut être interrogé depuis votre application Rails si vous souhaitez ajouter une interface

Si vous faites du développement Rails, vous avez déjà une base de données et ActiveRecord. DelayedJob est super facile à configurer et fonctionne très bien. GitHub l'a utilisé pendant de nombreux mois pour traiter près de 200 millions de tâches.

Choisissez Resque si :

  • Vous avez besoin de plusieurs files d'attente
  • Vous ne vous souciez pas/n'aimez pas les priorités numériques
  • Vous n'avez pas besoin de conserver chaque objet Ruby jamais
  • Vous avez des files d'attente potentiellement énormes
  • Vous voulez voir ce qui se passe
  • Vous vous attendez à beaucoup d'échecs/chaos
  • Vous pouvez configurer Redis
  • Vous ne manquez pas de RAM

Choisissez Travail différé si :

  • Vous aimez les priorités numériques
  • Vous n'effectuez pas une quantité gigantesque de travaux chaque jour
  • Votre file d'attente reste petite et agile
  • Il n'y a pas beaucoup d'échecs/chaos
  • Vous voulez facilement jeter n'importe quoi dans la file d'attente
  • Vous ne voulez pas configurer Redis

Choisissez Beanstalkd si :

  • Vous aimez les priorités numériques
  • Vous voulez une file d'attente extrêmement rapide
  • Vous ne voulez pas gaspiller votre RAM
  • Vous souhaitez proposer un grand nombre d'emplois
  • Vous êtes d'accord avec les objets JSONable Ruby sur une file d'attente comme arguments
  • Vous avez besoin de plusieurs files d'attente

Resque n'est en aucun cas un "meilleur" DelayedJob, alors assurez-vous de choisir l'outil qui convient le mieux à votre application.

Une belle comparaison de la vitesse de file d'attente du backend :

                 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

Bonne journée !

PS Il existe un RailsCast sur resque, Delayed Job (version révisée) et Beanstakld. Jetez-y un coup d'œil !

P.P.S. Mon choix préféré est maintenant Sidekiq (très simple, rapide et efficace pour des travaux simples), jetez un œil à cette page pour comparer.