Pertanyaan SQS vs RabbitMQ


Saya perlu membuat antrian untuk diproses. Antrean itu sendiri relatif bervolume rendah. Mungkin ada sekitar 1.000 tulisan per jamnya. Pelaksanaan setiap tugas mungkin memakan waktu sekitar satu menit setiap, dan diproses segera setelah item ditambahkan ke antrian.

Apakah ada alasan saya mungkin ingin menerapkan RabbitMQ daripada sesuatu yang tidak tersedia seperti Amazon SQS? Apa beberapa alasan mengapa suatu aplikasi akan membutuhkan sistem antrian sendiri daripada sesuatu seperti SQS?


37
2018-02-24 02:39


asal


Jawaban:


Sebagai permulaan, Amazon SQS adalah pseudo-queue yang berarti pengiriman setiap pesan (jika mencapai antrian) dijamin tetapi tidak dalam mode FIFO yang biasanya terjadi dalam antrian.

Jika urutan pesan penting bagi Anda dan Anda ingin antrean bekerja dalam mode FIFO, dokumentasi Amazon SQS menyatakan untuk menangani ini dalam logika aplikasi Anda karena pesan dari Amazon SQS akan menghubungi Anda keluar dari urutan.

Dibandingkan dengan ini, sejauh yang saya tahu, Anda dapat menerapkan antrian pekerja di RabbitMQ. Jika itu menghalangi Anda menerapkan urutan pesan antrian di tingkat aplikasi maka ini akan menjadi pilihan yang lebih disukai.

Berikut adalah beberapa faktor untuk membantu Anda memutuskan yang mana yang akan dipilih:

  1. Urutan pesan antrian seperti yang disebutkan di atas.

  2. Anda dapat mengatur server Anda sendiri dengan RabbitMQ tetapi tidak dalam kasus Amazon SQS sehingga biaya terlibat di sini.

  3. Menyiapkan server Anda sendiri akan membutuhkan pengetahuan yang baik tentang subjek sehingga Anda tidak meninggalkan sudut tersentuh. Ini tidak terjadi dengan Amazon SQS karena cukup cepat untuk memulai.

  4. Server RabbitMQ Anda sendiri berarti biaya pemeliharaan tidak sesuai dengan Amazon SQS.

Pembaruan:

  1. Amazon SQS sekarang mendukung antrian FIFO.

48
2018-03-09 13:38



SQS akan menjadi preferensi saya atas RabbitMQ, inilah alasannya.

  1. SQS adalah layanan yang dikelola. Jadi Anda tidak perlu khawatir tentang aspek operasional menjalankan sistem pesan termasuk administrasi, keamanan, pemantauan dll. Amazon akan melakukan ini untuk Anda dan akan memberikan dukungan jika ada yang salah.
  2. SQS adalah Elastis dan dapat diskalakan ke tingkat / volume yang sangat besar (tidak terbatas menurut AWS;))
  3. Ketersediaan SQS memiliki banyak 9 di dalamnya dan didukung oleh Amazon, yang merupakan satu hal yang kurang perlu dikhawatirkan dalam aplikasi Anda.

Namun, RabbitMQ mungkin menyediakan waktu respons yang lebih cepat untuk penempatan dan perolehan, biasanya dalam 10 ribu TPS dari pengujian saya. Untuk SQS untuk menyediakan throughput semacam itu, Anda harus menskalakan secara horizontal dengan beberapa instance. Jadi jika Anda mencari di bawah 5ms, RabbitMQ mungkin menjadi pilihan untuk dipertimbangkan karena saya telah melihat hampir 20ms-30ms waktu dari pengujian SQS saya di 1000s TPS, yang sedikit lebih tinggi daripada RabbitMQ.

Kami baru saja memindahkan infrastruktur pesan kami dari ActiveMQ ke SQS dan tidak bisa lebih bahagia. Kami telah menemukan itu menjadi lebih murah daripada mempertahankan kelompok ActiveMQ kami sendiri di awan.

Semoga ini membantu! Biarkan kami tahu bagaimana kelanjutannya ..


35
2018-04-08 17:31