sql >> Databáze >  >> NoSQL >> Redis

delayed_jobs vs resque vs beanstalkd?

Pro své projekty se budu cítit velmi pohodlně s kolektivním nápadem/delayed_job v rails2 a 3. Beanstalkd neznám, ale brzy to zkusím :-). Řídil jsem se návrhy v dokumentaci resque. Oznámím to.

Resque vs DelayedJob

Jak se Resque srovnává s DelayedJob a proč byste si vybrali jedno místo druhého?

  • Resque podporuje více front
  • DelayedJob podporuje jemnější priority
  • Zaměstnanci Resque jsou odolní vůči únikům paměti / nadýmání
  • Zaměstnanci DelayedJob jsou extrémně jednoduché a snadno upravitelné
  • Resque vyžaduje Redis
  • DelayedJob vyžaduje ActiveRecord
  • Resque může umístit pouze objekty JSONable Ruby do fronty jako argumenty
  • DelayedJob může umístit jakýkoli objekt Ruby do své fronty jako argumenty
  • Resque obsahuje aplikaci Sinatra pro sledování toho, co se děje
  • Pokud chcete přidat rozhraní, můžete se na DelayedJob dotazovat z aplikace Rails.

Pokud se zabýváte vývojem Rails, již máte databázi a ActiveRecord. DelayedJob se velmi snadno nastavuje a funguje skvěle. GitHub jej používal mnoho měsíců ke zpracování téměř 200 milionů úloh.

Zvolte Zrušit, pokud:

  • Potřebujete více front
  • Nezajímají vás / nemáte rádi číselné priority
  • Nikdy není nutné udržovat každý objekt Ruby
  • Máte potenciálně velké fronty
  • Chcete vidět, co se děje
  • Očekáváte spoustu neúspěchů / chaosu
  • Můžete nastavit Redis
  • Nedochází vám RAM

Zvolte DelayedJob, pokud:

  • Máte rádi číselné priority
  • Neděláte každý den obrovské množství úkolů
  • Vaše fronta zůstane malá a svižná
  • Neexistuje mnoho selhání / chaosu
  • Chcete snadno hodit cokoli do fronty
  • Nechcete nastavovat Redis

Zvolte Beanstalkd, pokud:

  • Máte rádi číselné priority
  • Chcete extrémně rychlou frontu
  • Nechcete plýtvat RAM
  • Chcete obsluhovat velký počet úloh
  • Jste v pořádku s objekty JSONable Ruby ve frontě jako argumenty
  • Potřebujete více front

Resque není v žádném případě „lepší“ DelayedJob, takže se ujistěte, že jste vybrali nástroj, který je pro vaši aplikaci nejlepší.

Pěkné srovnání rychlosti backendu ve frontě:

                 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

Hezký den!

P.S. Existuje RailsCast o resque, Delayed Job (revidovaná verze) a Beanstakld. Podívejte se!

P.P.S. Můj oblíbený choiche je nyní Sidekiq (velmi jednoduchý, rychlý a efektivní pro jednoduché práce), podívejte se na tuto stránku pro srovnání.



  1. Catbox-redis zobrazuje chybu odpojení v mé aplikaci hapijs

  2. Mongoose:Získejte úplný seznam uživatelů

  3. Poslouchat změny v Redis?

  4. Ukládání tweetů do mezipaměti pomocí Node.js, Redis a Socket.io