Resque vs Sidekiq? [Tutup]

127

Saat ini saya menggunakan Resqueuntuk proses latar belakang saya tetapi baru-baru ini saya mendengar banyak huff-buff tentang sidekiq. Adakah yang bisa membandingkan / membedakan?

Secara khusus saya ingin tahu apakah ada cara untuk memonitor secara terprogram apakah suatu pekerjaan selesai sidekiq

Bhushan Lodha
sumber
71
Saya sangat bersemangat melihat bahwa pertanyaan ini belum ditutup sebagai "tidak sesuai untuk SO".
Dogweather
51
Bisakah kita berhenti menutup semua pertanyaan bagus tolong orang. Saya tahu ini cukup luas, juga cukup penting dan cukup menarik.
superluminary
19
Suatu hari mereka akan menciptakan situs di mana programmer dapat mengajukan pertanyaan, dan situs itu akan memungkinkan tanggapan subjektif. Pertanyaan yang dapat diabaikan, atau bahkan dipilih berdasarkan relevansi.
baash05
4
@ baash05 dan itu akan disebut Quora!
nakhli
6
Ini akan disebut Yahoo Answers, dan kualitasnya akan turun drastis.
halfer

Jawaban:

130

Dijual kembali:

Pro:

Cons

  • menjalankan proses per pekerja (menggunakan lebih banyak memori);
  • tidak mencoba lagi pekerjaan (di luar kotak).

Sidekiq:

Pro

  • menjalankan utas per pekerja (menggunakan lebih sedikit memori);
  • less forking (bekerja lebih cepat);
  • lebih banyak opsi di luar kotak.

Cons

  • [besar] membutuhkan keamanan kode Anda dan semua dependensi . Jika Anda menjalankan kode utas yang tidak aman dengan utas, Anda meminta masalah;
  • bekerja pada beberapa rubi lebih baik daripada yang lain (disarankan jruby, efisiensi pada MRI berkurang karena GVL (kunci VM global)).
Sergio Tulentsev
sumber
19
Bagaimana Anda tahu jika Anda menjalankan "utas kode tidak aman"?
Dogweather
4
Misalnya, jika Anda menyimpan status dalam variabel global, maka Anda dalam kesulitan :) Adapun permata, berikut adalah beberapa di wiki .
Sergio Tulentsev
25
@ Mrbrdo Anda tidak bisa salah lagi. GVL tidak ada hubungannya dengan keamanan kode ruby ​​Anda. GVL adalah tentang keamanan kode interpreter ruby ​​(kode MRI C).
radarek
2
Saya harus menentang 'pro' pada Resque yang mengatakan 'Anda dapat menggunakan rubi apa pun'. README untuk Resque hari ini sebenarnya mengatakan 'Kami akan senang mendukung Rubi non-MRI, tetapi mereka mungkin memiliki bug.' github.com/resque/resque/blob/master/README.md#requirements
JellicleCat
2
Saya terutama akan menghindari Sidekiq jika Anda berencana untuk menjalankan JavaScript di dalam pekerjaan Anda menggunakan therubyracer. Bukan kesalahan Sidekiq per se tetapi multi-threading menyebabkan masalah bagi therubyracer. Lihat github.com/cowboyd/therubyracer/issues/206
Jeremy Burton
10

Dari pertanyaan:

Secara khusus saya ingin tahu apakah ada cara untuk memonitor secara terprogram apakah suatu pekerjaan selesai di sidekiq

Inilah solusi untuk itu:

  1. Sidekiq :: Status permata
  2. Batch API (Sidekiq Pro) - penggunaan
Gurpartap Singh
sumber