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í.