sql >> Databasteknik >  >> NoSQL >> Redis

delayed_jobs vs resque vs beanstalkd?

För mina projekt kommer jag att känna mig väldigt bekväm med collectiveidea/delayed_job i rails2 och 3.Jag vet inte beanstalkd, men jag kommer att prova det snart :-).Jag har följt förslagen i resquedokumentationen.Jag kommer att rapportera det.

Resque vs DelayedJob

Hur står sig Resque i jämförelse med DelayedJob, och varför skulle du välja det ena framför det andra?

  • Resque stöder flera köer
  • DelayedJob stöder finare prioriteringar
  • Resque-arbetare är motståndskraftiga mot minnesläckor/uppsvälldhet
  • DelayedJob-arbetare är extremt enkla och lätta att ändra
  • Resque kräver Redis
  • DelayedJob kräver ActiveRecord
  • Resque kan bara placera JSONable Ruby-objekt i en kö som argument
  • DelayedJob kan placera vilket Ruby-objekt som helst i sin kö som argument
  • Resque inkluderar en Sinatra-app för att övervaka vad som händer
  • DelayedJob kan frågas från din Rails-app om du vill lägga till ett gränssnitt

Om du håller på med Rails-utveckling har du redan en databas och ActiveRecord. DelayedJob är superlätt att ställa in och fungerar utmärkt. GitHub använde den i många månader för att bearbeta nästan 200 miljoner jobb.

Välj Resque om:

  • Du behöver flera köer
  • Du bryr dig inte / ogillar numeriska prioriteringar
  • Du behöver inte bevara alla Ruby-objekt någonsin
  • Du har potentiellt stora köer
  • Du vill se vad som händer
  • Du förväntar dig mycket misslyckande/kaos
  • Du kan ställa in Redis
  • Du har inte ont om RAM

Välj Försenat jobb om:

  • Du gillar numeriska prioriteringar
  • Du gör inte en gigantisk mängd jobb varje dag
  • Din kö förblir liten och smidig
  • Det finns inte mycket misslyckande/kaos
  • Du vill enkelt kasta vad som helst i kön
  • Du vill inte ställa in Redis

Välj Beanstalkd om:

  • Du gillar numeriska prioriteringar
  • Du vill ha extremt snabb kö
  • Du vill inte slösa bort ditt RAM
  • Du vill tjäna ett stort antal jobb
  • Du klarar dig bra med JSONable Ruby-objekt i en kö som argument
  • Du behöver flera köer

Resque är inte på något sätt ett "bättre" DelayedJob, så se till att du väljer det verktyg som är bäst för din app.

En trevlig jämförelse av backend-hastighet i kö:

                 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

Ha en bra dag!

P.S. Det finns en RailsCast om resque, Delayed Job (reviderad version) och Beanstakld. Ta en titt!

P.P.S. Mitt favoritval är nu Sidekiq (mycket enkelt, snabbt och effektivt för enkla jobb), ta en titt på den här sidan för jämförelse.



  1. Dumpa Mongo Collection till JSON-format

  2. MongoDB-normalisering, främmande nyckel och sammanfogning

  3. Konfigurera ElastiCache Redis med Elastic Beanstalk + Django

  4. Filtrera undermatrisen för en matris efter vissa kriterier