Redis
 sql >> Teknologi Basis Data >  >> NoSQL >> Redis

delay_jobs vs resque vs pohon kacang?

Untuk proyek saya, saya akan merasa sangat nyaman dengan kolektifidea/delayed_job di Rails2 dan 3.Saya tidak tahu pohon kacang, tetapi saya akan segera mencobanya :-).Saya telah mengikuti saran dalam dokumentasi resque.Saya akan melaporkannya.

Resque vs DelayedJob

Bagaimana Resque dibandingkan dengan DelayedJob, dan mengapa Anda memilih salah satunya?

  • Resque mendukung banyak antrian
  • DelayedJob mendukung prioritas berbutir halus
  • Pekerja resque tahan terhadap kebocoran memori / kembung
  • Pekerja pekerjaan yang tertunda sangat sederhana dan mudah dimodifikasi
  • Resque membutuhkan Redis
  • DelayedJob membutuhkan ActiveRecord
  • Resque hanya dapat menempatkan objek Ruby JSONable pada antrian sebagai argumen
  • DelayedJob dapat menempatkan objek Ruby apa pun pada antriannya sebagai argumen
  • Resque menyertakan aplikasi Sinatra untuk memantau apa yang terjadi
  • DelayedJob dapat ditanyakan dari dalam aplikasi Rails Anda jika Anda ingin menambahkan antarmuka

Jika Anda melakukan pengembangan Rails, Anda sudah memiliki database dan ActiveRecord. DelayedJob sangat mudah diatur dan berfungsi dengan baik. GitHub menggunakannya selama berbulan-bulan untuk memproses hampir 200 juta pekerjaan.

Pilih Resque jika:

  • Anda membutuhkan banyak antrian
  • Anda tidak peduli / tidak menyukai prioritas numerik
  • Anda tidak perlu lagi menyimpan setiap objek Ruby
  • Anda berpotensi memiliki antrean besar
  • Anda ingin melihat apa yang terjadi
  • Anda mengharapkan banyak kegagalan / kekacauan
  • Anda dapat menyiapkan Redis
  • Anda tidak kekurangan RAM

Pilih DelayedJob jika:

  • Anda menyukai prioritas numerik
  • Anda tidak melakukan banyak pekerjaan setiap hari
  • Antrian Anda tetap kecil dan gesit
  • Tidak banyak kegagalan/kekacauan
  • Anda ingin dengan mudah memasukkan apapun ke dalam antrian
  • Anda tidak ingin menyiapkan Redis

Pilih Pohon Kacang jika:

  • Anda menyukai prioritas numerik
  • Anda menginginkan antrian yang sangat cepat
  • Anda tidak ingin membuang RAM Anda
  • Anda ingin melayani banyak pekerjaan
  • Anda baik-baik saja dengan objek Ruby JSONable pada antrian sebagai argumen
  • Anda membutuhkan banyak antrian

Resque sama sekali bukan DelayedJob yang "lebih baik", jadi pastikan Anda memilih alat yang terbaik untuk aplikasi Anda.

Perbandingan kecepatan backend antrian yang bagus:

                 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

Semoga harimu menyenangkan!

P.S. Ada RailsCast tentang resque, Delayed Job (versi revisi) dan Beanstakld. Lihat!

P.P.S. Pilihan favorit saya sekarang adalah Sidekiq ( sangat Sederhana, Cepat dan efisien untuk pekerjaan sederhana ), lihat halaman ini untuk perbandingan.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Redis Python - cara menghapus semua kunci sesuai dengan pola tertentu Di python, tanpa iterasi python

  2. Apakah pembaruan Redis sinkron?

  3. kedaluwarsa kunci cache redis pada jam-jam tertentu daripada durasi

  4. GenericJackson2JsonRedisSerializer Abaikan Kelas dan Atribut

  5. Ingin mengimplementasikan soket web di Laravel