Redis
 sql >> Baza danych >  >> NoSQL >> Redis

delayed_jobs vs resque vs beanstalkd?

W przypadku moich projektów będę czuł się bardzo komfortowo dzięki collectidea/delayed_job w rails2 i 3. Nie znam beanstalkd, ale wkrótce spróbuję :-). Postępowałem zgodnie z sugestiami w dokumentacji resque. Zgłoszę to.

Resque vs DelayedJob

Jak wypada Resque w porównaniu z DelayedJob i dlaczego miałbyś wybrać jedną z nich?

  • Resque obsługuje wiele kolejek
  • DelayedJob obsługuje bardziej szczegółowe priorytety
  • Pracownicy Resque są odporni na wycieki pamięci / wzdęcia
  • Pracownicy DelayedJob są niezwykle proste i łatwe do modyfikacji
  • Resque wymaga Redis
  • DelayedJob wymaga ActiveRecord
  • Resque może umieszczać w kolejce tylko obiekty JSONable Ruby jako argumenty
  • DelayedJob może umieścić dowolny obiekt Ruby w swojej kolejce jako argumenty
  • Resque zawiera aplikację Sinatra do monitorowania tego, co się dzieje
  • DelayedJob może być odpytywany z poziomu Twojej aplikacji Rails, jeśli chcesz dodać interfejs

Jeśli zajmujesz się tworzeniem Railsów, masz już bazę danych i ActiveRecord. DelayedJob jest bardzo łatwy w konfiguracji i działa świetnie. GitHub używał go przez wiele miesięcy do przetwarzania prawie 200 milionów zadań.

Wybierz opcję Odpowiedz, jeśli:

  • Potrzebujesz wielu kolejek
  • Nie obchodzi cię / nie lubisz priorytetów liczbowych
  • Nie musisz nigdy utrwalać każdego obiektu Rubiego
  • Masz potencjalnie ogromne kolejki
  • Chcesz zobaczyć, co się dzieje
  • Oczekujesz wielu niepowodzeń / chaosu
  • Możesz skonfigurować Redis
  • Nie brakuje Ci pamięci RAM

Wybierz zadanie opóźnione, jeśli:

  • Lubisz priorytety liczbowe
  • Nie wykonujesz codziennie gigantycznej ilości prac
  • Twoja kolejka pozostaje mała i zwinna
  • Nie ma wielu niepowodzeń / chaosu
  • Chcesz łatwo wrzucić cokolwiek do kolejki
  • Nie chcesz konfigurować Redisa

Wybierz Beanstalkd, jeśli:

  • Lubisz priorytety liczbowe
  • Chcesz niezwykle szybkiej kolejki
  • Nie chcesz marnować swojej pamięci RAM
  • Chcesz obsłużyć dużą liczbę miejsc pracy
  • Jesteś w porządku z obiektami JSONable Ruby w kolejce jako argumentami
  • Potrzebujesz wielu kolejek

W żadnym wypadku Resque nie jest „lepszym” opóźnionym zadaniem, więc upewnij się, że wybierasz narzędzie, które jest najlepsze dla Twojej aplikacji.

Ładne porównanie szybkości zaplecza kolejkowania:

                 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

Miłego dnia!

PS Istnieje RailsCast o resque, Delayed Job (wersja poprawiona) i Beanstakld. Zajrzyj!

PS. Moim ulubionym wyborem jest teraz Sidekiq (bardzo prosty, szybki i wydajny do prostych zadań), spójrz na tę stronę w celu porównania.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jak korzystać z Redis w Pythonie

  2. Redis pub/sub na szynach

  3. Laravel:Jak sprawdzić dostępność Redisa?

  4. Jak autowired RedisTemplate<String,Long>

  5. Czego powinienem używać? Pokoje Socket.io czy pub-sub Redis?