Resque vs Sidekiq? [chiuso]


127

Attualmente sto usando Resqueper il mio processo in background, ma recentemente ho sentito parlare di molto huff-buff sidekiq. Qualcuno potrebbe confrontare / differenziare?

In particolare, vorrei sapere che esiste un modo per monitorare programmaticamente se un lavoro è stato completato sidekiq


71
Sono così entusiasta di vedere che questa domanda non è stata chiusa come "non appropriata per SO".
Dogweather,

51
Possiamo smettere di chiudere tutte le buone domande per favore gente. So che è abbastanza ampio, è anche abbastanza importante e abbastanza interessante.
superluminario,

19
Un giorno inventeranno un sito in cui i programmatori possono porre domande e quel sito consentirà risposte soggettive. Domande che possono essere ignorate o persino votate in base alla pertinenza.
baash05,

4
@ baash05 e si chiamerà Quora!
nakhli,

6
Si chiamerà Yahoo Answers e la qualità crollerà sul pavimento.
halfer

Risposte:


130

Resque:

Professionisti:

Contro

  • esegue un processo per lavoratore (utilizza più memoria);
  • non ritentare i lavori (fuori dalla scatola, comunque).

Sidekiq:

Professionisti

  • esegue thread per lavoratore (utilizza molta meno memoria);
  • meno biforcazione (funziona più velocemente);
  • più opzioni fuori dalla scatola.

Contro

  • [enorme] richiede la sicurezza dei thread del codice e di tutte le dipendenze . Se esegui un codice thread-non sicuro con i thread, stai chiedendo problemi;
  • funziona su alcuni rubini meglio di altri (si consiglia jruby, l'efficienza sulla risonanza magnetica è ridotta a causa di GVL (blocco globale della VM)).

19
Come fai a sapere se stai eseguendo "thread unsafe code"?
Dogweather,

4
Ad esempio, se stai memorizzando lo stato in variabili globali, allora sei nei guai :) Per quanto riguarda le gemme, eccone alcune nel wiki .
Sergio Tulentsev,

25
@mrbrdo Non puoi sbagliare di più. GVL non ha nulla a che fare con la sicurezza dei thread del tuo codice ruby. GVL riguarda la sicurezza dei thread del codice interprete ruby ​​(codice MRI C).
Radarek,

2
Devo contraddire il 'pro' su Resque che dice 'puoi usare qualsiasi rubino'. Il README per Resque oggi dice in realtà "Ci piacerebbe supportare i rubini non-MRI, ma potrebbero avere dei bug". github.com/resque/resque/blob/master/README.md#requirements
JellicleCat

2
Eviterei particolarmente Sidekiq se hai intenzione di eseguire JavaScript all'interno dei tuoi lavori utilizzando therubyracer. Non è un difetto di Sidekiq di per sé, ma il multi-threading causa problemi al therubyracer. Vedi github.com/cowboyd/therubyracer/issues/206
Jeremy Burton

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.