Middleware pesan adalah teknologi middleware yang terdiri dari mekanisme transmisi pesan atau mode antrian pesan, yang menggunakan mekanisme perpesanan yang efisien dan andal untuk pertukaran data independen platform, dan mengintegrasikan sistem terdistribusi berdasarkan komunikasi data. Saat ini, ada banyak produk MQ di industri, seperti RabbitMQ, ActiveMQ, ZeroMQ, dll., Yang merupakan middleware pesan yang sangat baik, tetapi mana yang harus kita pilih dalam proyek ini? Makalah ini mengevaluasi dan membandingkan produk antrean pesan berikut: RabbitMQ, ZeroMQ, ActiveMQ, MSMQ, Redis, dan memcacheQ
Penyimpangan: Di sini pertama-tama kita dapat memikirkan pertanyaan kecil: "Mengapa kita membutuhkan layanan antrean pesan di aplikasi web?" ” Misalnya, sejumlah besar permintaan penyisipan, pembaruan, dan lainnya tiba di MySQL pada saat yang sama, secara langsung mengarah ke kunci baris dan kunci tabel yang tak terhitung jumlahnya, dan bahkan terlalu banyak permintaan pada akhirnya, sehingga memicu terlalu banyak kesalahan koneksi. Dengan menggunakan antrean pesan, kita dapat memproses permintaan secara asinkron, mengurangi ketegangan pada sistem.
KelinciMQ Ini adalah antrean pesan open source yang ditulis dalam Erlang, yang mendukung banyak protokol: AMQP, XMPP, SMTP, STOMP, yang membuatnya sangat berat dan lebih cocok untuk pengembangan tingkat perusahaan. Ini adalah implementasi terkemuka dari protokol AMQP, yang mengimplementasikan arsitektur broker, yang berarti bahwa pesan dapat diantri pada node pusat sebelum dikirim ke klien. Ada dukungan yang baik untuk perutean, penyeimbangan beban, atau persistensi data. Fitur ini membuat RabbitMQ mudah digunakan dan diterapkan, cocok untuk banyak skenario seperti perutean, penyeimbangan beban, atau persistensi pesan, dan dapat dilakukan hanya dengan beberapa baris kode dengan antrean pesan. Namun, ini membuatnya kurang terukur dan lebih lambat karena simpul pusat meningkatkan latensi dan lebih besar setelah enkapsulasi pesan. Untuk mengonfigurasi RabbitMQ, Anda perlu menginstal lingkungan Erlang pada mesin target. Klik untuk melihat gambar ini di jendela baru
? MQ (ZeroMQ) Ini dikenal sebagai sistem antrian pesan tercepat, terutama untuk skenario permintaan throughput tinggi. Ini adalah sistem perpesanan yang sangat ringan yang dikembangkan khusus untuk skenario throughput tinggi/latensi rendah dan sering dapat ditemukan dalam aplikasi di dunia keuangan. Dibandingkan dengan RabbitMQ, ZeroMQ mendukung banyak skenario pesan lanjutan, tetapi Anda harus mengimplementasikan blok individual dalam kerangka kerja ZeroMQ (seperti soket atau perangkat, dll.).
? MQ (ZeroMQ) dapat mengimplementasikan antrean lanjutan/kompleks yang tidak dikuasai RabbitMQ, tetapi pengembang perlu menggabungkan beberapa kerangka kerja teknis sendiri, dan kompleksitas teknis merupakan tantangan bagi keberhasilan penerapan MQ ini. ZeroMQ memiliki model non-middleware yang unik di mana Anda tidak perlu menginstal dan menjalankan server pesan atau middleware karena aplikasi Anda akan memainkan peran layanan ini. Yang perlu Anda lakukan hanyalah merujuk perpustakaan ZeroMQ, yang dapat diinstal menggunakan NuGet, dan Anda dapat dengan senang hati mengirim pesan antar aplikasi. Namun, ZeroMQ hanya menyediakan antrean non-persisten, yang berarti bahwa jika mesin mati, data akan hilang. Di antara mereka, Storm Twitter menggunakan ZeroMQ sebagai transmisi aliran data. ZeroMQ sangat fleksibel, tetapi Anda harus mempelajari manual 80 halamannya (jika Anda menulis tentang sistem terdistribusi, pastikan untuk membacanya).
ZeroMQ tidak memiliki arsitektur middleware dan tidak memerlukan proses dan eksekusi layanan apa pun. Faktanya, titik akhir aplikasi Anda memainkan peran layanan ini. Ini membuatnya sangat mudah untuk diterapkan, tetapi kekhawatirannya adalah Anda tidak memiliki tempat untuk menonton jika terjadi kesalahan dengannya. Sejauh yang kami tahu, ZeroMQ hanya menawarkan antrian yang tidak persisten. Anda dapat menerapkan kemampuan audit dan pemulihan data Anda sendiri di mana pun Anda membutuhkannya. Klik untuk melihat gambar ini di jendela baru
MSMQ Ini adalah satu-satunya hal dalam produk Microsoft yang dianggap berharga. Jika MSMQ dapat membuktikan bahwa mereka dapat menangani tugas semacam ini, mereka akan memilih untuk menggunakannya. Intinya adalah bahwa hal ini tidak rumit, tidak ada apa-apa selain menerima dan mengirim; Ini memiliki beberapa batasan keras, seperti ukuran pesan maksimum 4MB. Namun, ini dapat memecahkan masalah ini dengan menghubungkan ke beberapa perangkat lunak seperti MassTransit atau NServiceBus. Klik untuk melihat gambar ini di jendela baru
Jafka/Kafka Kafka (yang mendistribusikan pesan di berbagai node) adalah sistem MQ terdistribusi yang dikembangkan dan bersumber terbuka oleh LinkedIn pada bulan Desember 2010, dan sekarang merupakan proyek inkubasi Apache, sistem antrian pesan Publish/Subscribe terdistribusi lintas bahasa berkinerja tinggi, dan Jafka diinkubasi di atas Kafka, yang merupakan versi Kafka yang ditingkatkan. Ini memiliki karakteristik sebagai berikut: persistensi cepat, yang dapat mempertahankan pesan di bawah overhead sistem O(1); Throughput tinggi, yang dapat mencapai tingkat throughput 10W/s pada server biasa; Sistem terdistribusi sepenuhnya, Broker, Produsen, dan Konsumen semuanya secara asli mendukung terdistribusi dan secara otomatis mencapai keseimbangan yang kompleks. Mendukung pemuatan paralel data Hadoop, yang merupakan solusi yang layak untuk data log dan sistem analisis offline seperti Hadoop, tetapi dengan keterbatasan pemrosesan waktu nyata. Kafka menyatukan pemrosesan pesan online dan offline melalui mekanisme pemuatan paralel Hadoop, yang juga penting untuk sistem yang dipelajari dalam topik ini. Apache Kafka adalah sistem perpesanan yang sangat ringan dibandingkan dengan ActiveMQ, dan selain kinerja yang sangat baik, ini juga merupakan sistem terdistribusi yang berfungsi dengan baik. Klik untuk melihat gambar ini di jendela baru
Apache ActiveMQ ActiveMQ berada di suatu tempat di antara keduanya (RabbitMQ & ZeroMQ), mirip dengan ZemoMQ, dan dapat digunakan dalam mode proxy dan P2P. Mirip dengan RabbitMQ, mudah untuk menerapkan skenario lanjutan dan membutuhkan konsumsi rendah. ActiveMQ dikenal sebagai tulang punggung dunia Jawa. Ini memiliki sejarah panjang dan banyak digunakan. Ini juga lintas platform, menyediakan titik akses integrasi alami untuk produk yang tidak ada di platform Microsoft. Namun, hanya mungkin untuk dipertimbangkan jika telah melewati MSMQ. Untuk mengonfigurasi ActiveMQ, Anda perlu menginstal lingkungan Java pada komputer target. Klik untuk melihat gambar ini di jendela baru Penting untuk dicatat bahwa produk generasi berikutnya ActiveMQ adalah Apollo, yang didasarkan pada prototipe ActiveMQ dan merupakan alat broker pesan yang lebih cepat, lebih andal, dan lebih mudah dipelihara. Apache menyebut Apollo sebagai server STOMP (Streaming Text Orientated Message Protocol) tercepat dan paling kuat. Ciri-ciri Apollo adalah sebagai berikut: Protokol Stomp 1.0 dan Stomp 1.1 didukung Topik dan antrean Browser Antrean Langganan persisten tema Antrean cermin Pesan yang andal Kedaluwarsa dan pertukaran pesan Pemilih pesan JAAS diverifikasi Otorisasi berbasis ACL Mendukung SSL/TLS dan validasi sertifikat API Manajemen REST Klik untuk melihat gambar ini di jendela baru
Redis Ini adalah database NoSQL Nilai Kunci, yang secara aktif dikembangkan dan dipelihara, meskipun merupakan sistem penyimpanan basis data Nilai Kunci, tetapi mendukung fungsi MQ, sehingga dapat digunakan sebagai layanan antrean ringan. Untuk operasi onboarding dan out-queue RabbitMQ dan Redis, masing-masing 1 juta kali, dan waktu eksekusi dicatat setiap 100.000 kali. Data pengujian dibagi menjadi empat ukuran berbeda: 128Byte, 512Byte, 1K, dan 10K. Eksperimen menunjukkan bahwa saat bergabung dengan tim, kinerja Redis lebih tinggi daripada RabbitMQ ketika perbandingan datanya kecil, dan jika ukuran data melebihi 10K, Redis sangat lambat. Saat keluar dari tim, Redis menunjukkan performa yang sangat baik terlepas dari ukuran datanya, sedangkan performa RabbitMQ jauh lebih rendah daripada Redis.
MemcacheQ Antrean pesan persisten Memcacheq (disingkat MCQ) adalah antrean pesan ringan, fitur MemcacheQ: 1 Sederhana dan mudah digunakan 2 Pemrosesan cepat 3 Beberapa antrian 4 Kinerja konkurensi yang baik 5 Kompatibel dengan protokol Memcache. Ini berarti cukup instal ekstensi memcache, tidak diperlukan plugin tambahan. 6 Ini juga nyaman digunakan dalam kerangka kerja zend.
Pada akhirnya, produk-produk ini: 1. Keduanya memiliki API klien mereka sendiri atau mendukung beberapa bahasa pemrograman; 2. Ada banyak dokumentasi; 3. Dukungan positif diberikan. 4. ActiveMQ, RabbitMQ, MSMQ, Redis semuanya perlu memulai proses layanan, yang dapat dipantau dan dikonfigurasi, dan yang lainnya bermasalah 5. Mereka semua memberikan keandalan (konsistensi), skalabilitas dan penyeimbangan beban yang relatif baik, dan tentu saja, kinerja
Saya tidak akan berbicara omong kosong di sini, terlampir di bawah ini adalah satu set hasil tes yang dicegat dari Internet. Jumlah pesan yang dikirim dan diterima per detik ditampilkan. Seluruh proses menghasilkan total 1 juta pesan 1K. Pengujian dilakukan pada mesin mandiri Windows Vista.
Seperti yang Anda lihat, ZeroMQ bukanlah level seperti yang lain. Kinerjanya sangat tinggi. Meskipun demikian, produk ini tidak memberikan persistensi pesan, tidak dapat dengan mudah menyimpan dan memantau proses perantara, dan memerlukan audit mandiri dan pemulihan data, sehingga tidak memuaskan dalam hal kemudahan penggunaan dan HA. Kesimpulannya jelas: jika Anda ingin aplikasi mengirim pesan secepat mungkin, Anda memilih ZeroMQ. Ini lebih berharga ketika Anda tidak terlalu peduli kehilangan pesan tertentu secara kebetulan.
Blogger dalam artikel ini berharap (dan tidak terlalu berharap) untuk menggunakan Kelinci, Rabbitmq memiliki built-in ha, jika Anda membentuk cluster, tidak perlu khawatir tentang masalah seperti penyeimbangan beban, dan Anda dapat mengatur cermin antrian. Tapi hal semacam ini adalah bahwa harus ada lebih banyak pengujian, dan Anda berakhir dengan favorit, dan semua hal yang saya dengar dan baca tentang Kelinci membuat saya merasa itu harus menjadi pilihan terbaik.
|