1. Apa itu antrian pesan
Message Queue (disingkat MQ) mengacu pada wadah untuk menyimpan pesan, yang pada dasarnya adalah antrian.
Pesan mengacu pada data yang ditransfer antar aplikasi. Pesan bisa sangat sederhana, seperti hanya berisi string teks, atau lebih kompleks, dan mungkin berisi objek yang disematkan.
Antrian Pesan (Message Queue) adalah metode komunikasi antar aplikasi. Pesan dapat dikembalikan segera setelah dikirim. Ada sistem pesan untuk memastikan pengiriman informasi yang andal. Penerbit pesan hanya menerbitkan pesan ke MQ terlepas dari siapa yang menerimanya. Pesan digunakan Penerbit hanya mengambil pesan dari MQ terlepas dari siapa yang mempublikasikannya, sehingga penerbit dan pengguna tidak perlu mengetahui keberadaan satu sama lain.
- Produser: Pembuat pesan, bertanggung jawab untuk menghasilkan dan mengirim pesan ke Broker;
- Broker: Pusat pemrosesan pesan. Bertanggung jawab atas penyimpanan pesan, konfirmasi, coba lagi, dll. Umumnya, ini akan berisi banyak antrian;
- Konsumen: Konsumen pesan, bertanggung jawab untuk mendapatkan pesan dari Broker dan memprosesnya sesuai;
Komponen MQ yang umum digunakan adalah ActiveMQ, RabbitMQ, RocketMQ, ZeroMQ. Tentu saja, Kafka, yang telah populer beberapa tahun terakhir, juga MQ dalam beberapa skenario. Tentu saja, Kafka lebih bertenaga.
Meskipun MQ yang berbeda memiliki karakteristik dan kelebihannya masing-masing, namun MQ mana pun, ada beberapa karakteristik MQ itu sendiri. Di bawah ini, mari kita bicara tentang karakteristik, kelebihan, pemilihan, dan skenario aplikasi antrian pesan.
2. Mengapa Anda membutuhkan antrian pesan
Dalam lingkungan terdistribusi yang sangat serentak, karena terlalu terlambat untuk memproses secara sinkron, dengan menggunakan antrian pesan, permintaan dapat diproses secara asinkron, sehingga mengurangi tekanan pada sistem.
Ambil contoh sistem pemesanan: ketika pengguna mengklik untuk melakukan pemesanan, proses logika bisnis berikut akan dipicu:
- Pengurangan persediaan
- Buat pesanan yang sesuai
- Pemberitahuan SMS, dll.
Pada tahap awal pengembangan bisnis, logika-logika ini dapat disatukan dan dijalankan secara serempak. Seiring dengan bertambahnya volume pesanan bisnis, kinerja layanan sistem perlu ditingkatkan. Saat ini, beberapa operasi yang tidak perlu segera diterapkan dapat dipisahkan dan dijalankan secara asinkron, seperti pengiriman notifikasi SMS. Skenario ini dapat menggunakan antrian pesan MQ.
Intinya adalah untuk mengatasi tekanan sistem sinkron melalui asinkron, jadi kami memiliki prinsip saat merancang arsitektur: usahakan untuk tidak menyinkronkan jika bisa asinkron.
Tiga, keuntungan antrian pesan
1. Lindungi rincian platform heterogen: sistem pengirim dan penerima tidak perlu mengetahui kedua belah pihak, hanya pesannya.
2. Asynchronous: Kemampuan akumulasi pesan, pengirim dan penerima tidak perlu online pada saat yang sama, dan pengirim dan penerima tidak perlu melakukan ekspansi (peak clipping) pada saat yang bersamaan.
3. Decoupling: Mencegah masuknya API yang terlalu banyak dari membawa risiko pada stabilitas sistem; penggunaan yang tidak benar oleh pemanggil akan menyebabkan tekanan pada sistem callee, dan penanganan yang tidak tepat oleh callee akan mengurangi responsivitas dari sistem pemanggil.
4. Multiplexing: Kirim beberapa konsumsi sekaligus.
5. Keandalan: menjamin pengiriman pesan sekali. Jika penerima tidak tersedia saat pesan dikirim, antrian pesan akan menyimpan pesan sampai berhasil dikirim.
6. Menyediakan perutean: Pengirim tidak perlu membuat koneksi dengan penerima Kedua belah pihak menggunakan antrian pesan untuk memastikan bahwa pesan dapat dirutekan dari pengirim ke penerima. Perutean pesan bahkan dapat disediakan untuk dua layanan yang tidak dapat dioperasikan dengan mudah di jaringan.
Keempat, karakteristik antrian pesan
1. Asinkron
Operasi sinkron yang memakan waktu diproses secara asinkron dengan mengirim pesan. Kurangi waktu tunggu sinkronisasi.
2. Tergabung secara longgar
Antrian pesan mengurangi kopling antar layanan. Layanan yang berbeda dapat berkomunikasi melalui antrian pesan tanpa mengkhawatirkan detail implementasi satu sama lain, selama format pesan ditentukan.
3. Didistribusikan
Melalui perluasan horizontal konsumen, risiko pemblokiran antrian pesan dan kemungkinan satu titik kegagalan untuk satu konsumen berkurang (tentu saja, antrian pesan itu sendiri juga dapat dibuat menjadi cluster terdistribusi).
4. Keandalan
Antrian pesan umumnya menyimpan pesan yang diterima pada hard disk lokal (ketika pesan diproses, informasi penyimpanan diimplementasikan sesuai dengan antrian pesan yang berbeda, dan mungkin dihapus), sehingga meskipun aplikasi hang atau antrian pesan itu sendiri hang, Pesan tersebut juga dapat dimuat ulang.
Lima, pemilihan antrian pesan
1.ActiveMQ
Diproduksi oleh Apache, produk antrian pesan yang paling awal digunakan telah ada sejak lama, dan versi terbaru diperbarui dengan lambat.
2. KelinciMQ
RabbitMQ dikembangkan dalam bahasa erlang, dikombinasikan dengan keunggulan konkurensi dari bahasa erlang itu sendiri, dan mendukung banyak protokol: AMQP, XMPP, SMTP, STOMP. Ini juga masalahnya, menjadikannya kelas yang sangat berat dan lebih cocok untuk pengembangan tingkat perusahaan. Performanya lebih baik, tetapi tidak kondusif untuk pengembangan dan pemeliharaan sekunder.
3.RocketMQ
Middleware pesan open source Alibaba, yang dikembangkan di Java murni, memiliki karakteristik throughput tinggi, ketersediaan tinggi, dan cocok untuk aplikasi sistem terdistribusi berskala besar.
4. NolMQ
Dikenal sebagai sistem antrian pesan tercepat, terutama untuk skenario permintaan throughput yang tinggi.
Ia memiliki skalabilitas yang baik dan pengembangan yang fleksibel, diimplementasikan dalam bahasa C. Faktanya, ini hanyalah pengemasan ulang dari pustaka soket. Jika digunakan sebagai antrian pesan, banyak kode yang perlu dikembangkan.
5. Kafka
Kafka adalah sub-proyek dari Apache, sistem antrian pesan terbitan / langganan lintas bahasa dengan kinerja tinggi, dan Jafka diinkubasi di Kafka, yang merupakan versi Kafka yang ditingkatkan.
6. Perbandingan rinci antrian pesan
7. Ringkasan antrian pesan
Pemilihan antrian pesan perlu ditentukan sesuai dengan kebutuhan aplikasi tertentu. ZeroMQ kecil dan indah, RabbitMQ besar dan stabil, serta Kakfa dan RocketMQ cepat dan bertenaga.
Keempat, skenario aplikasi antrian pesan
1. Pemrosesan asynchronous
Fitur utama antrian pesan adalah pemrosesan asinkron. Tujuan utamanya adalah untuk mengurangi waktu respons permintaan, mencapai proses non-inti asinkron, dan meningkatkan kinerja respons sistem.
Oleh karena itu, skenario penggunaan tipikal adalah untuk meletakkan operasi yang memakan waktu dan tidak memerlukan hasil pengembalian segera (sinkron) sebagai pesan ke dalam antrian pesan.
2. Pemisahan aplikasi
Setelah menggunakan antrian pesan, selama format pesan tidak berubah, pengirim dan penerima pesan tidak perlu menghubungi satu sama lain, juga tidak perlu terpengaruh satu sama lain, yaitu pemisahan.
Setiap anggota tidak perlu terpengaruh oleh anggota lain, dan dapat lebih mandiri serta hanya dapat dihubungi melalui antrian pesan MQ.
Ambil contoh: pengguna melakukan proses pemesanan. Setelah melakukan pemesanan, akan terjadi tindakan pengurangan inventaris. Sistem pemesanan upstream dan sistem downstream pengurangan inventaris dapat dihubungi melalui pesan antrian MQ di atas, dan pengurangan inventaris dilakukan secara asinkron, sehingga dapat mewujudkan sistem pemesanan dan Pemisahan aplikasi dari sistem inventaris.
3. Pemotongan lalu lintas
Pemotongan lalu lintas juga merupakan skenario umum dalam antrian pesan, dan umumnya banyak digunakan dalam aktivitas spike atau pengambilan kelompok.
Skenario aplikasi: Aktivitas lonjakan biasanya menyebabkan lonjakan lalu lintas dan aplikasi macet karena lalu lintas yang berlebihan. Untuk mengatasi masalah ini, biasanya perlu menambahkan antrian pesan di bagian depan aplikasi.
4. Pemrosesan log
Pemrosesan log mengacu pada penggunaan antrian pesan dalam pemrosesan log, seperti aplikasi Kafka, untuk memecahkan sejumlah besar masalah transmisi log.
5. Buletin
Antrian pesan umumnya memiliki mekanisme komunikasi yang efisien di dalamnya, sehingga mereka juga dapat digunakan untuk komunikasi pesan sederhana, seperti mengimplementasikan antrian pesan titik-ke-titik atau ruang obrolan.
Di atas adalah penjelasan rinci tentang antrian pesan terdistribusi.
- Menabur benih peradaban hukum sejak usia dini Sekolah Bahasa Asing Naner mempekerjakan Sun Aijun, jaksa agung, sebagai wakil presiden sistem hukum
- Penguasaan seni bela diri muncul kembali! Orang-orang yang berlatih Yi Jin Jing di Ju Ye ini terkenal!
- Sekolah Pelatihan Kejuruan Deep Vocational Training Shenzhen Nanshan mengadakan perayaan ulang tahun ke-20
- Anda tidak bisa makan tahu panas dengan terburu-buru, hati-hati saat membeli tiket selama Festival Musim Semi!