sql >> Database teknologi >  >> NoSQL >> Redis

delayed_jobs vs resque vs beanstalkd?

For mine projekter vil jeg føle mig meget tryg ved collectiveidea/delayed_job i rails2 og 3.Jeg ved det ikke, men jeg vil prøve det snart :-).Jeg har fulgt forslagene i resque-dokumentationen.Jeg vil rapportere det.

Resque vs DelayedJob

Hvordan er Resque sammenlignet med DelayedJob, og hvorfor ville du vælge det ene frem for det andet?

  • Resque understøtter flere køer
  • DelayedJob understøtter finere prioriteter
  • Resque-medarbejdere er modstandsdygtige over for hukommelseslækager/oppustethed
  • DelayedJob-medarbejdere er ekstremt enkle og nemme at ændre
  • Resque kræver Redis
  • DelayedJob kræver ActiveRecord
  • Resque kan kun placere JSONable Ruby-objekter i en kø som argumenter
  • DelayedJob kan placere ethvert Ruby-objekt i dets kø som argumenter
  • Resque inkluderer en Sinatra-app til at overvåge, hvad der foregår
  • DelayedJob kan forespørges fra din Rails-app, hvis du vil tilføje en grænseflade

Hvis du laver Rails-udvikling, har du allerede en database og ActiveRecord. DelayedJob er super nem at konfigurere og fungerer fantastisk. GitHub brugte det i mange måneder til at behandle næsten 200 millioner job.

Vælg Spørg hvis:

  • Du har brug for flere køer
  • Du er ligeglad / kan ikke lide numeriske prioriteter
  • Du behøver ikke at fortsætte med alle Ruby-objekter nogensinde
  • Du har potentielt store køer
  • Du vil gerne se, hvad der foregår
  • Du forventer en masse fiasko/kaos
  • Du kan konfigurere Redis
  • Du mangler ikke RAM

Vælg Forsinket job, hvis:

  • Du kan lide numeriske prioriteter
  • Du laver ikke en gigantisk mængde opgaver hver dag
  • Din kø forbliver lille og smidig
  • Der er ikke meget fiasko/kaos
  • Du vil nemt smide hvad som helst i køen
  • Du ønsker ikke at konfigurere Redis

Vælg Beanstalkd hvis:

  • Du kan lide numeriske prioriteter
  • Du vil have ekstremt hurtig kø
  • Du ønsker ikke at spilde din RAM
  • Du ønsker at tjene et stort antal job
  • Du har det fint med JSONable Ruby-objekter i en kø som argumenter
  • Du har brug for flere køer

Resque er på ingen måde et "bedre" DelayedJob, så sørg for at vælge det værktøj, der er bedst til din app.

En god sammenligning af kø-backend-hastighed:

                 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

Hav en god dag!

P.S. Der er en RailsCast om resque, Delayed Job (revideret version) og Beanstakld. Tag et kig!

P.P.S. Mit yndlingsvalg er nu Sidekiq (meget enkelt, hurtigt og effektivt til simple jobs), kig på denne side for sammenligning.



  1. Sådan administreres store databaser effektivt

  2. redis scanning returnerer tomme resultater, men ikke-nul markør

  3. Effektiv måde at kortlægge data fra Redis

  4. Hvordan kan jeg bruge LIKE-operatoren på mongoose?