Rumah  >  Artikel  >  Java  >  Apakah senario aplikasi baris gilir mesej java?

Apakah senario aplikasi baris gilir mesej java?

PHPz
PHPzke hadapan
2023-05-10 23:46:041606semak imbas

1. Apakah yang dimaksudkan dengan baris gilir? Contohnya, menunggu giliran di stesen kereta api untuk membeli tiket, dsb. Gambar berikut boleh digunakan untuk mewakili baris gilir:

Apakah senario aplikasi baris gilir mesej java?di mana a1, a2 dan an mewakili data dalam baris gilir. Data dimasukkan ke dalam baris gilir dari penghujung baris gilir dan kemudian dinyah gilir dari kepala baris gilir.

2. Apakah itu baris gilir mesej

Baris Gilir Mesej (Message Queue) ialah sejenis struktur data yang menggunakan baris gilir (Queue) sebagai struktur data storan asas dan boleh digunakan untuk menyelesaikan komunikasi antara proses dan aplikasi yang berbeza Bekas mesej yang diedarkan juga boleh dipanggil perisian tengah mesej.

Baris gilir mesej yang biasa digunakan pada masa ini termasuk ActiveMQ, RabbitMQ, Kafka, RocketMQ, Redis, dsb.

Apakah senario aplikasi baris gilir mesej java?Apakah perbezaan antara baris gilir mesej dan baris gilir?

Cuma bezanya ialah apabila masuk barisan, ia dipanggil pengeluar, dan apabila ditolak, ia dipanggil pengguna.

3. Senario aplikasi baris gilir mesej

Senario aplikasi baris gilir mesej sangat luas di bawah kami menyenaraikan beberapa senario yang lebih biasa

1 >1.1. Pemprosesan tak segerak

Secara amnya, atur cara yang kami tulis dilaksanakan mengikut urutan (iaitu, serentak). Contohnya, dalam contoh pesanan dalam sistem e-dagang, urutan pelaksanaan adalah seperti berikut:

Pengguna menyerahkan pesanan. Mata akan ditambah selepas pesanan selesai. Pemberitahuan SMS tentang perubahan mata.

boleh diwakili oleh carta alir berikut:

Jika dilaksanakan dalam susunan di atas, jika setiap perkhidmatan mengambil masa satu saat, maka pelanggan Ia mengambil masa 3 detik. Bagi pengguna, 3 saat jelas tidak boleh diterima, jadi bagaimana kita harus menyelesaikannya? Kita boleh menggunakan kaedah tak segerak untuk menyelesaikan masalah ini. Lihat carta alir di bawah:

Apakah senario aplikasi baris gilir mesej java?

Dengan cara ini, perkhidmatan mata dan perkhidmatan SMS beroperasi secara tidak segerak menggunakan benang pelanggan hanya memerlukan 1 saat untuk menyelesaikannya. Walau bagaimanapun, pendekatan tak segerak ini akan membawa masalah lain: pengurangan bersamaan. Oleh kerana kedua-dua perkhidmatan mata dan perkhidmatan SMS perlu membuka utas dalam perkhidmatan pesanan, membuka lebih banyak utas akan menyebabkan pelanggan mengakses perkhidmatan pesanan secara serentak, yang boleh menyebabkan masa sebenar untuk pelanggan menyerahkan pesanan melebihi 1 saat. Jadi bagaimana untuk menyelesaikan masalah yang disebabkan oleh asynchronous? Iaitu untuk menggunakan baris gilir mesej, lihat carta alir di bawah:

Apakah senario aplikasi baris gilir mesej java?

Dalam proses di atas, kami menambah peranan baris gilir mesej, mula-mula pelanggan menyerahkan pesanan, dan kemudian Tulis pesanan kepada baris gilir mesej, dan perkhidmatan mata dan perkhidmatan SMS menggunakan mesej dalam baris gilir mesej pada masa yang sama Kaedah ini tidak memerlukan perkhidmatan pesanan untuk membuka benang tak segerak tambahan, dan pelanggan boleh mencapai masa nyata penggunaan 1 saat.

Apakah senario aplikasi baris gilir mesej java?1.2. Penyahgandingan aplikasi

Mari kita ambil sistem e-dagang sebagai contoh untuk menjelaskannya, lihat carta alir di bawah:

Logik perniagaan dalam gambar di atas: Pelanggan memulakan permintaan untuk membuat pesanan, kami mesti mendapatkan inventori dahulu dan kemudian menolak inventori Ini membentuk pergantungan yang sangat rapat antara sistem pesanan dan inventori sistem. Jika sistem inventori turun pada masa ini, kerana sistem pesanan bergantung pada sistem inventori, sistem pesanan tidak akan tersedia pada masa ini. Jadi bagaimana untuk menyelesaikannya?

Apakah senario aplikasi baris gilir mesej java?Lihat carta alir menggunakan baris gilir mesej di bawah:

Dalam proses di atas, kami menambah baris gilir mesej. Pertama, pelanggan memulakan permintaan untuk membuat pesanan, dan mesej pesanan ditulis ke dalam baris gilir mesej Kemudian sistem inventori melanggan mesej dalam baris gilir mesej, dan akhirnya mengemas kini sistem inventori secara tidak segerak. Jika sistem inventori menurun, kerana sistem pesanan tidak bergantung secara langsung pada sistem inventori, sistem pesanan boleh bertindak balas kepada permintaan pelanggan secara normal. Ini mencapai penyahgandingan aplikasi.

Apakah senario aplikasi baris gilir mesej java?1.3. Pencukuran Puncak Trafik

Untuk sistem konkurensi tinggi, semasa masa capaian puncak, aliran trafik secara tiba-tiba seperti banjir ke sistem aplikasi, terutamanya beberapa operasi tulis serentak tinggi, yang akan menyebabkan pelayan pangkalan data akan lumpuh pada bila-bila masa dan tidak dapat meneruskan perkhidmatan.

Pengenalan baris gilir mesej boleh mengurangkan kesan trafik pecah pada sistem aplikasi. Barisan penggunaan adalah seperti "takungan" yang memintas banjir di hulu dan mengurangkan aliran puncak ke hilir sungai, seterusnya mencapai tujuan mengurangkan bencana banjir.

Contoh yang paling biasa dalam hal ini ialah sistem jualan kilat Secara amnya, trafik serta-merta aktiviti jualan kilat adalah sangat tinggi Jika semua trafik mengalir ke sistem jualan kilat, ia akan mengatasi sistem jualan kilat baris gilir mesej, trafik pecah boleh ditimbal dengan berkesan untuk mencapai kesan "Keratan puncak".

Kami menggunakan senario jualan kilat untuk menerangkan pemotongan puncak trafik Mari kita lihat carta alir berikut:

Apakah senario aplikasi baris gilir mesej java?

Dalam proses di atas, kami menggunakan perkhidmatan jualan kilat Ia dipanggil perkhidmatan huluan, dan perkhidmatan pesanan, perkhidmatan inventori dan perkhidmatan baki secara kolektif dipanggil perkhidmatan hiliran. Pelanggan memulakan permintaan jualan kilat Selepas menerima permintaan daripada pelanggan, perkhidmatan jualan kilat membuat pesanan, mengubah suai inventori dan menolak baki Ini adalah senario perniagaan asas jualan kilat.

Andaikan perkhidmatan hiliran hanya boleh mengendalikan 1,000 permintaan serentak pada masa yang sama, perkhidmatan huluan boleh mengendalikan 10,000 permintaan serentak, dan pelanggan memulakan 10,000 permintaan, yang melebihi jumlah konkurensi yang boleh dikendalikan oleh perkhidmatan hiliran, jadi ia akan menyebabkan hiliran Perkhidmatan ini down. Pada masa ini, anda boleh menyertai baris gilir mesej untuk menyelesaikan masalah masa henti. Lihat carta alir untuk menyertai baris gilir mesej di bawah:

Apakah senario aplikasi baris gilir mesej java?

Kami telah menambah baris gilir mesej pada carta alir di atas untuk menerangkan cara perkhidmatan akan memproses 10,000 permintaan yang dihantar oleh pelanggan selepas ia menerimanya Semua permintaan ditulis pada baris gilir mesej, dan kemudian perkhidmatan hiliran melanggan permintaan jualan kilat dalam baris gilir mesej, dan kemudian melaksanakan operasi logik perniagaannya sendiri.

Mari kita ambil contoh mudah Perkhidmatan huluan masih boleh mengendalikan 10,000 permintaan serentak, dan perkhidmatan hiliran masih boleh mengendalikan 1,000 permintaan serentak Pada masa ini, kami akan membenarkan 1,000 permintaan serentak disimpan dalam mesej beratur. Perkhidmatan jualan kilat huluan menerima 10,000 permintaan serentak, tetapi baris gilir mesej hanya boleh menyimpan 1,000 permintaan yang berlebihan tidak akan disimpan dalam baris gilir mesej, dan akan dikembalikan terus kepada pelanggan dengan gesaan "Sistem sedang sibuk, sila. tunggu!". Inilah yang dipanggil senario keratan puncak trafik. Ini ditentukan oleh jumlah konkurensi yang boleh dikendalikan oleh perkhidmatan hiliran. Memandangkan perkhidmatan hiliran hanya boleh mengendalikan 1,000 permintaan serentak, hanya 1,000 jualan kilat boleh disimpan dalam baris gilir mesej, dan semua permintaan jualan kilat yang berlebihan akan dikembalikan kepada gesaan pelanggan. Ini memastikan tindak balas normal perkhidmatan hiliran, tidak akan menyebabkan masa henti perkhidmatan hiliran, dan meningkatkan ketersediaan sistem.

2. Senario log

Optimumkan penghantaran log

Untuk keteguhan program, kami biasanya menambah pelbagai fungsi pengelogan pada program, seperti log ralat, Log operasi, dsb., lihat carta alir di bawah:

Apakah senario aplikasi baris gilir mesej java?

Carta alir di atas ialah proses merekod log secara serentak. Menggunakan proses pengelogan segerak akan meningkatkan masa yang dihabiskan untuk keseluruhan proses, dan juga akan menyebabkan masa henti sistem perniagaan dengan mudah (jika pangkalan data rosak, operasi merekodkan log ke pangkalan data akan menyebabkan ralat). Kita boleh menggunakan baris gilir mesej untuk mengoptimumkan penghantaran log. Lihat carta alir di bawah:

Apakah senario aplikasi baris gilir mesej java?

Selepas menyertai baris gilir mesej, masa yang dihabiskan untuk sistem boleh dipendekkan, dan fungsi penyahgandingan sistem aplikasi juga boleh dicapai.

3. Senario komunikasi segera

Bilik sembang

Fungsi utama baris gilir mesej adalah untuk menghantar dan menerima mesej di dalamnya, jadi begitu sangat sesuai untuk komunikasi mesej.

Kami boleh membangunkan sistem sembang titik ke titik berdasarkan baris gilir mesej, atau kami boleh membangunkan sistem penyiaran untuk menyiarkan mesej kepada sejumlah besar penerima.

Apakah senario aplikasi baris gilir mesej java?

Atas ialah kandungan terperinci Apakah senario aplikasi baris gilir mesej java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam