Resque kontra Sidekiq? [Zamknięte]

127

Obecnie używam Resquedo mojego procesu w tle, ale ostatnio słyszałem wiele huff-buffów o sidekiq. Czy ktoś mógłby porównać / rozróżnić?

W szczególności chciałbym wiedzieć, czy istnieje sposób programowego monitorowania, czy praca jest zakończona w sidekiq

Bhushan Lodha
źródło
71
Jestem tak podekscytowany widząc, że to pytanie nie zostało zamknięte jako „nieodpowiednie dla SO”.
Dogweather
51
Czy możemy przestać zamykać wszystkie dobre pytania, proszę ludzi. Wiem, że jest dość szeroki, jest też dość ważny i całkiem interesujący.
superluminary
19
Pewnego dnia wymyślą stronę, na której programiści będą mogli zadawać pytania, a ta strona będzie zezwalać na subiektywne odpowiedzi. Pytania, które można zignorować, a nawet głosować na podstawie trafności.
baash05,
4
@ baash05 i będzie się nazywać Quora!
nakhli
6
Będzie się nazywać Yahoo Answers, a jakość będzie gwałtownie spadać.
halfer

Odpowiedzi:

130

Resque:

Plusy:

Cons

  • uruchamia proces na pracownika (zużywa więcej pamięci);
  • nie ponawia prób zadań (w każdym razie po wyjęciu z pudełka).

Sidekiq:

Plusy

  • uruchamia wątek na pracownika (zużywa znacznie mniej pamięci);
  • mniej rozwidlenia (działa szybciej);
  • więcej opcji po wyjęciu z pudełka.

Cons

  • [ogromny] wymaga zabezpieczenia wątków twojego kodu i wszystkich zależności . Jeśli uruchamiasz kod niebezpieczny dla wątków z wątkami, prosisz o kłopoty;
  • działa na niektórych rubinach lepiej niż na innych (zaleca się jruby, wydajność na MRI jest zmniejszona z powodu GVL (globalna blokada VM)).
Sergio Tulentsev
źródło
19
Skąd wiesz, że używasz „niebezpiecznego wątku kodu”?
Dogweather
4
Na przykład, jeśli przechowujesz stan w zmiennych globalnych, masz kłopoty :) Jeśli chodzi o klejnoty, oto kilka na wiki .
Sergio Tulentsev
25
@mrbrdo Nic bardziej mylnego. GVL nie ma nic wspólnego z bezpieczeństwem wątków twojego kodu ruby. GVL dotyczy bezpieczeństwa wątków kodu interpretera ruby ​​(kod MRI C).
radarek
2
Muszę zaprzeczyć określeniu „pro” w Resque, które mówi „możesz użyć dowolnego rubinu”. Dzisiejszy plik README dla Resque faktycznie mówi: „Chcielibyśmy wspierać rubiny inne niż MRI, ale mogą mieć błędy”. github.com/resque/resque/blob/master/README.md#requirements
JellicleCat,
2
Szczególnie unikałbym Sidekiqa, jeśli planujesz uruchamiać JavaScript w swoich zadaniach przy użyciu wskaźnikaruby. Nie jest to wina Sidekiqa jako takiego, ale wielowątkowość powoduje problemy na rurze. Zobacz github.com/cowboyd/therubyracer/issues/206
Jeremy Burton
10

Z pytania:

W szczególności chciałbym wiedzieć, czy istnieje sposób na programowe monitorowanie, czy praca jest zakończona w sidekiq

Oto rozwiązanie:

  1. Sidekiq: Klejnot statusu
  2. Batch API (Sidekiq Pro) - zastosowanie
Gurpartap Singh
źródło