Antrian kelinci berada di memori dan karena itu akan jauh lebih cepat daripada mengimplementasikannya dalam database. Antrian pesan khusus (baik) juga harus menyediakan fitur penting terkait antrian seperti pembatasan/kontrol aliran, dan kemampuan untuk memilih algoritme perutean yang berbeda, untuk menyebutkan pasangan (kelinci menyediakan ini dan banyak lagi). Bergantung pada ukuran proyek Anda, Anda mungkin juga ingin komponen pengirim pesan terpisah dari database Anda, sehingga jika satu komponen mengalami beban berat, komponen tersebut tidak perlu menghalangi operasi yang lain.
Adapun masalah yang Anda sebutkan:
-
jajak pendapat membuat database sibuk dan berkinerja rendah :Menggunakan Rabbitmq, produsen dapat mendorong pembaruan kepada konsumen yang jauh lebih berkinerja daripada polling. Data hanya dikirim ke konsumen saat dibutuhkan, sehingga tidak perlu lagi melakukan pemeriksaan yang sia-sia.
-
penguncian tabel -> lagi-lagi berkinerja rendah: Tidak ada meja untuk dikunci :P
-
jutaan baris tugas -> lagi-lagi polling berkinerja rendah: Seperti disebutkan di atas, Rabbitmq akan beroperasi lebih cepat karena berada di RAM, dan menyediakan kontrol aliran. Jika diperlukan, ia juga dapat menggunakan disk untuk menyimpan pesan sementara jika kehabisan RAM. Setelah 2.0, Rabbit telah meningkatkan penggunaan RAM secara signifikan. Opsi pengelompokan juga tersedia.
Mengenai AMQP, saya akan mengatakan fitur yang sangat keren adalah "pertukaran", dan kemampuannya untuk merutekan ke bursa lain. Ini memberi Anda lebih banyak fleksibilitas dan memungkinkan Anda membuat beragam tipologi perutean rumit yang bisa sangat berguna saat penskalaan. Untuk contoh yang baik, lihat:
(sumber:springsource.com)
dan:http://blog.springsource.org/2011/04/01/routing-topologies-for-performance-and-scalability-with-rabbitmq/
Terakhir, mengenai Redis, ya, bisa digunakan sebagai perantara pesan, dan bisa bekerja dengan baik. Namun, Rabbitmq memiliki lebih banyak fitur antrian pesan daripada Redis, karena rabbitmq dibangun dari bawah ke atas untuk menjadi antrian pesan khusus tingkat perusahaan dengan fitur lengkap. Redis di sisi lain terutama dibuat untuk menjadi penyimpanan nilai kunci dalam memori (meskipun sekarang lebih dari itu; bahkan disebut sebagai pisau tentara swiss). Namun, saya telah membaca/mendengar banyak orang mencapai hasil yang baik dengan Redis untuk proyek berukuran lebih kecil, tetapi belum banyak mendengarnya di aplikasi yang lebih besar.
Berikut adalah contoh Redis yang digunakan dalam implementasi obrolan polling panjang:http://eflorenzano.com/blog/2011/02/16/technology-behind-convore/