Kami akan tertarik untuk mendengar pengalaman apa pun dengan pro dan kontra dari ActiveMQ vs RabbitMQ vs ZeroMQ. Informasi tentang antrian pesan menarik lainnya juga diterima.
Kami akan tertarik untuk mendengar pengalaman apa pun dengan pro dan kontra dari ActiveMQ vs RabbitMQ vs ZeroMQ. Informasi tentang antrian pesan menarik lainnya juga diterima.
Jawaban:
Sunting: Jawaban awal saya memiliki fokus kuat pada AMQP. Saya memutuskan untuk menulis ulang untuk menawarkan pandangan yang lebih luas tentang topik tersebut.
Ketiga teknologi perpesanan ini memiliki pendekatan berbeda dalam membangun sistem terdistribusi:
RabbitMQ adalah salah satu implementasi utama protokol AMQP (bersama dengan Apache Qpid). Oleh karena itu, ia mengimplementasikan arsitektur broker, yang berarti bahwa pesan diantrekan pada simpul pusat sebelum dikirim ke klien. Pendekatan ini membuat RabbitMQ sangat mudah digunakan dan digunakan, karena skenario lanjutan seperti perutean, penyeimbangan muatan, atau antrian pesan persisten didukung hanya dalam beberapa baris kode. Namun, itu juga membuatnya kurang terukur dan "lebih lambat" karena simpul pusat menambahkan latensi dan amplop pesan cukup besar.
ZeroMq adalah sistem pesan yang sangat ringan yang dirancang khusus untuk skenario throughput tinggi / latensi rendah seperti yang dapat Anda temukan di dunia keuangan. Zmq mendukung banyak skenario perpesanan tingkat lanjut tetapi bertentangan dengan RabbitMQ, Anda harus mengimplementasikan sendiri sebagian besar dari itu dengan menggabungkan berbagai bagian kerangka kerja (mis. Soket dan perangkat). Zmq sangat fleksibel tetapi Anda harus mempelajari 80 halaman atau lebih dari panduan ini (yang saya sarankan membaca untuk siapa pun yang menulis sistem terdistribusi, bahkan jika Anda tidak menggunakan Zmq) sebelum dapat melakukan sesuatu yang lebih rumit daripada mengirim pesan. antara 2 rekan.
ActiveMQ berada di jalan tengah. Seperti Zmq, ini dapat digunakan dengan topologi broker dan P2P. Seperti RabbitMQ, lebih mudah untuk menerapkan skenario lanjutan tetapi biasanya dengan biaya kinerja mentah. Ini adalah pisau pengiriman pesan tentara Swiss :-).
Akhirnya, ketiga produk:
Mengapa Anda merindukan Sparrow , Starling , Kestrel , Amazon SQS , Beanstalkd , Kafka , IronMQ ?
Server Antrian Pesan
Server antrian pesan tersedia dalam berbagai bahasa, Erlang (RabbitMQ), C (beanstalkd), Ruby (Starling atau Sparrow), Scala (Kestrel, Kafka) atau Java (ActiveMQ). Tinjauan singkat dapat ditemukan di sini
Burung gereja
Jalak
Kestrel
RabbitMQ
Apache ActiveMQ
Beanstalkd
Amazon SQS
Kafka
ZMQ
EagleMQ
IronMQ
Saya berharap ini akan bermanfaat bagi kita. sumber
Lebih banyak informasi daripada yang ingin Anda ketahui:
http://wiki.secondlife.com/wiki/Message_Queue_Evaluation_Notes
Hanya menguraikan apa yang ditambahkan Paulus dalam komentar. The halaman yang disebutkan di atas sudah mati setelah 2010, sehingga membaca dengan sedikit garam. Banyak hal telah diubah dalam 3 tahun.
Itu benar-benar tergantung pada kasus penggunaan Anda.
Membandingkan 0MQ dengan ActiveMQ atau RabbitMQ tidak adil. ActiveMQ dan RabbitMQ adalah Sistem Pesan yang memerlukan instalasi dan administrasi. Mereka menawarkan lebih banyak fitur daripada ZeroMQ. Mereka memiliki Antrian persisten yang nyata, Dukungan untuk transaksi dll.
ZeroMQ adalah implementasi soket berorientasi pesan yang ringan. Ini juga cocok untuk pemrograman asinkron dalam-proses. Dimungkinkan untuk menjalankan "Enterprise Messaging System" di atas ZeroMQ, tetapi Anda harus banyak menerapkannya sendiri.
Begitu:
ActiveMQ, RabbitMQ, Websphere MQ & MSMQ adalah "Antrian Pesan Perusahaan"
ZeroMQ adalah pustaka IPC yang berorientasi pada pesan.
Ada perbandingan antara RabbitMQ dan ActiveMQ di sini . Di luar kotak, ActiveMQ dikonfigurasi untuk menjamin pengiriman pesan - yang dapat memberikan kesan lambat dibandingkan dengan sistem pesan yang kurang andal. Anda selalu dapat mengubah konfigurasi untuk kinerja jika Anda menginginkan dan mendapatkan setidaknya kinerja sebaik sistem pesan lainnya. Setidaknya Anda memiliki opsi itu. Ada banyak informasi di forum dan FAQ ActiveMQ untuk konfigurasi untuk penskalaan, kinerja, dan ketersediaan tinggi. ActiveMQ juga akan mendukung AMQP 1.0 ketika spec diselesaikan, bersama dengan format kawat lainnya, seperti STOMP.
Kelebihan lain untuk ActiveMQ adalah proyek Apache, jadi ada keragaman di komunitas pengembang - dan tidak terikat pada satu perusahaan.
Saya belum pernah menggunakan ActiveMQ atau RabbitMQ tetapi telah menggunakan ZeroMQ. Perbedaan besar seperti yang saya lihat antara ZeroMQ dan ActiveMQ dll. Adalah bahwa 0MQ adalah tanpa broker dan tidak memiliki keandalan untuk pengiriman pesan. Jika Anda mencari API perpesanan yang mudah digunakan yang mendukung banyak pola perpesanan, pengangkutan, platform, dan pengikatan bahasa, maka 0MQ sangat layak untuk dilihat. Jika Anda mencari platform pengiriman pesan yang penuh sesak maka 0MQ mungkin tidak sesuai dengan tagihan.
Lihat www.zeromq.org/docs:cookbook untuk banyak contoh tentang bagaimana 0MQ dapat digunakan.
Saya seorang yang sukses menggunakan 0MQ untuk menyampaikan pesan dalam aplikasi pemantauan penggunaan listrik (lihat http://rwscott.co.uk/2010/06/14/currentcost-envi-cc128-part-1/ )
Saya menggunakan zeroMQ. Saya menginginkan sistem penyampaian pesan yang sederhana dan saya tidak memerlukan kerumitan broker. Saya juga tidak ingin sistem perusahaan berorientasi Java besar.
Jika Anda menginginkan sistem yang cepat dan sederhana dan Anda perlu mendukung banyak bahasa (saya menggunakan C dan .net) maka saya akan merekomendasikan untuk melihat 0MQ.
Saya hanya dapat menambahkan 2 sen tentang ActiveMQ tetapi karena ini adalah salah satu yang paling populer:
Bahasa yang ingin Anda tulis mungkin penting. Meskipun ActiveMQ memang memiliki klien untuk sebagian besar, implementasi C # mereka jauh dari lengkap dibandingkan dengan Perpustakaan Java.
Ini berarti beberapa fungsi dasar tidak jelas (protokol gagal-alih yang ... yah ... gagal dalam beberapa kasus, tidak ada dukungan pengiriman ulang) dan lainnya tidak ada. Karena .NET tampaknya tidak terlalu penting untuk proyek, pengembangan agak lambat dan sepertinya tidak ada rencana rilis. Bagasi sering rusak sehingga jika Anda mempertimbangkan ini, Anda mungkin ingin mempertimbangkan untuk berkontribusi pada proyek jika Anda ingin hal-hal yang akan dilanjutkan.
Lalu ada ActiveMQ itu sendiri yang memiliki banyak fitur bagus tetapi beberapa masalah yang sangat aneh juga. Kami menggunakan versi Fuse (Progress) dari activemq untuk alasan stabilitas tetapi meskipun begitu ada beberapa "bug" aneh yang ingin Anda ingat:
Semua dan semua, itu adalah produk yang cukup bagus JIKA Anda bisa hidup dengan masalah-masalahnya:
A) tidak takut untuk terlibat aktif saat menggunakan .NET
B) berkembang di java ;-)
Ada perbandingan fitur dan kinerja RabbitMQ ActiveMQ dan QPID yang diberikan di
http://bhavin.directi.com/rabbitmq-vs-apache-activemq-vs-apache-qpid/
Secara pribadi saya sudah mencoba ketiga hal di atas. RabbitMQ adalah kinerja terbaik menurut saya, tetapi tidak memiliki opsi failover dan pemulihan. ActiveMQ memiliki sebagian besar fitur, tetapi lebih lambat.
Pembaruan: HornetQ juga merupakan opsi yang dapat Anda lihat, itu adalah JMS Complaint, opsi yang lebih baik daripada ActiveMQ jika Anda mencari solusi berbasis JMS.
Saya menulis tentang pengalaman awal saya mengenai AMQP, Qpid, dan ZeroMQ di sini: http://ron.shoutboot.com/2010/09/25/is-ampq-for-you/
Pendapat subyektif saya adalah bahwa AMQP baik-baik saja jika Anda benar-benar membutuhkan fasilitas perpesanan yang persisten dan tidak terlalu khawatir bahwa broker mungkin menjadi penghambat. Juga, klien C ++ saat ini tidak ada untuk AMQP (Qpid tidak memenangkan dukungan saya; namun tidak yakin tentang klien ActiveMQ), tetapi mungkin sedang dalam proses. ZeroMQ mungkin sebaliknya.
Ada beberapa diskusi di komentar posting blog ini , tentang Twitter menulis antrian pesan mereka sendiri, yang mungkin menarik.
Steve melakukan pengujian beban berat dan stress pada ActiveMQ, RabbitMQ, dll. ActiveMQ sebenarnya cukup lambat (jauh lebih lambat dari Kestrel), RabbitMQ secara konsisten crash dengan terlalu banyak produsen dan terlalu sedikit konsumen.
Anda mungkin tidak akan memiliki muatan seperti Twitter pada awalnya :)
Beberapa aplikasi memiliki konfigurasi penyetelan sebanyak ActiveMQ. Beberapa fitur yang membuat ActiveMQ menonjol adalah:
Ukuran Prefetch yang dapat dikonfigurasi. Threading yang bisa dikonfigurasi Kegagalan yang bisa dikonfigurasi. Pemberitahuan administratif yang dapat dikonfigurasi untuk produsen. ... detail di:
Abie, semuanya tergantung pada kasus penggunaan Anda. Daripada mengandalkan akun orang lain dari kasus penggunaan mereka, jangan ragu untuk memposting kasus penggunaan Anda ke daftar rabbitmq-mendiskusikan. Bertanya di twitter akan memberi Anda beberapa tanggapan juga. Salam hangat, Alexis
Tentang ZeroMQ alias 0MQ, karena Anda mungkin sudah tahu, itu yang akan memberi Anda pesan terbanyak per detik (terakhir sekitar 4 juta per detik di server ref mereka terakhir kali saya periksa), tetapi karena Anda mungkin juga sudah tahu, dokumentasi tidak ada. Anda akan kesulitan menemukan cara memulai server, apalagi cara menggunakannya. Saya kira itu sebagian mengapa belum ada yang berkontribusi tentang 0MQ.
Selamat bersenang-senang!
Jika Anda juga tertarik dengan implementasi komersial, Anda harus melihat Nirvana dari saluran saya .
Nirvana banyak digunakan dalam industri Jasa Keuangan untuk skala besar perdagangan latensi rendah dan platform distribusi harga.
Ada dukungan untuk berbagai bahasa pemrograman klien di perusahaan, web, dan domain seluler.
Kemampuan pengelompokan sangat canggih dan layak dilihat jika HA atau penyeimbangan beban transparan penting bagi Anda.
Nirvana dapat diunduh gratis untuk tujuan pengembangan.