sql >> Database >  >> NoSQL >> Redis

vertraagde_jobs versus resque versus bonenstaak?

Voor mijn projecten zal ik me erg op mijn gemak voelen met collectibleidea/delayed_job in rails2 en 3. Ik ken Beanstalkd niet, maar ik zal het snel proberen :-). Ik heb de suggesties in de resque-documentatie gevolgd. Ik zal het rapporteren.

Resque vs DelayedJob

Hoe verhoudt Resque zich tot DelayedJob, en waarom zou je de ene boven de andere verkiezen?

  • Resque ondersteunt meerdere wachtrijen
  • DelayedJob ondersteunt nauwkeuriger prioriteiten
  • Resque-werknemers zijn bestand tegen geheugenlekken / bloat
  • DelayedJob-werknemers zijn uiterst eenvoudig en gemakkelijk aan te passen
  • Resque vereist Redis
  • DelayedJob vereist ActiveRecord
  • Resque kan alleen JSONable Ruby-objecten als argumenten in een wachtrij plaatsen
  • DelayedJob kan elk Ruby-object als argumenten in zijn wachtrij plaatsen
  • Resque bevat een Sinatra-app om te volgen wat er gebeurt
  • DelayedJob kan worden opgevraagd vanuit uw Rails-app als u een interface wilt toevoegen

Als je aan Rails-ontwikkeling doet, heb je al een database en ActiveRecord. DelayedJob is super eenvoudig in te stellen en werkt geweldig. GitHub gebruikte het vele maanden om bijna 200 miljoen jobs te verwerken.

Kies Opnieuw vragen als:

  • Je hebt meerdere wachtrijen nodig
  • Het maakt je niet uit / houdt niet van numerieke prioriteiten
  • Je hoeft niet elk Ruby-object ooit vol te houden
  • Je hebt potentieel enorme wachtrijen
  • Je wilt zien wat er aan de hand is
  • Je verwacht veel mislukkingen / chaos
  • Je kunt Redis instellen
  • Je hebt geen tekort aan RAM

Kies DelayedJob als:

  • Je houdt van numerieke prioriteiten
  • Je doet niet elke dag gigantisch veel werk
  • Je wachtrij blijft klein en wendbaar
  • Er is niet veel mislukking / chaos
  • Je wilt gemakkelijk iets in de wachtrij gooien
  • Je wilt Redis niet instellen

Kies Beanstalkd als:

  • Je houdt van numerieke prioriteiten
  • U wilt een extreem snelle wachtrij
  • Je wilt je RAM niet verspillen
  • U wilt een groot aantal banen bedienen
  • Je bent in orde met JSONable Ruby-objecten in een wachtrij als argumenten
  • Je hebt meerdere wachtrijen nodig

Resque is op geen enkele manier een "betere" DelayedJob, dus zorg ervoor dat u de tool kiest die het beste bij uw app past.

Een mooie vergelijking van de backend-snelheid in de wachtrij:

                 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

Fijne dag nog!

PS Er is een RailsCast over resque, Delayed Job (herziene versie) en Beanstakld. Kijk eens!

P.S. Mijn favoriete keuze is nu Sidekiq (zeer eenvoudig, snel en efficiënt voor eenvoudige taken), bekijk deze pagina ter vergelijking.



  1. In NodeJS, hoe resultaten van mongodb met verschillende veldnamen uit te voeren?

  2. Hoe een specifieke verzameling in MongoDB te herstellen met behulp van logische back-up

  3. Verschil tussen het verfraaien van een eigenschap in C# met BsonRepresentation(BsonType.ObjectId) vs BsonId vs ObjectId

  4. Hoe meerdere sets die op Redis zijn opgeslagen te lezen met behulp van een commando of LUA-script?