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 yang biasa digunakan pada masa ini termasuk ActiveMQ, RabbitMQ, Kafka, RocketMQ, Redis, dsb.
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
1 >1.1. Pemprosesan tak segerak
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: 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: 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.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?
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.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.
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:
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:
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.
Untuk keteguhan program, kami biasanya menambah pelbagai fungsi pengelogan pada program, seperti log ralat, Log operasi, dsb., lihat carta alir di bawah:
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:
Selepas menyertai baris gilir mesej, masa yang dihabiskan untuk sistem boleh dipendekkan, dan fungsi penyahgandingan sistem aplikasi juga boleh dicapai.
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.
Atas ialah kandungan terperinci Apakah senario aplikasi baris gilir mesej java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!