全部产品
Search
文档中心

ApsaraMQ for RocketMQ:Antrian pesan

更新时间:Nov 10, 2025

Topik ini menjelaskan antrian pesan dalam ApsaraMQ for RocketMQ, mencakup definisi, hubungan model, properti internal, kompatibilitas versi, dan rekomendasi penggunaan.

Definisi

Antrian adalah kontainer dalam ApsaraMQ for RocketMQ yang menyimpan dan mengirimkan pesan. Antrian juga merupakan unit penyimpanan terkecil untuk pesan ApsaraMQ for RocketMQ.

Semua topik dan topik ringan dalam ApsaraMQ for RocketMQ terdiri dari satu atau beberapa antrian. Arsitektur ini mendukung pemisahan horizontal antrian dan penyimpanan berbasis aliran di dalam setiap antrian.

Antrian memiliki tujuan utama berikut:

  • Penyimpanan terurut

    Antrian secara inheren bersifat terurut. Pesan ditulis ke penyimpanan sesuai urutan kedatangannya di antrian, sehingga menciptakan urutan alami bagi pesan-pesan dalam antrian yang sama. Pesan paling awal berada di kepala antrian, sedangkan pesan terbaru berada di ekor antrian. Offset digunakan untuk menandai posisi dan urutan setiap pesan dalam antrian.

  • Semantik operasi berbasis aliran

    Model penyimpanan berbasis antrian dari ApsaraMQ for RocketMQ memungkinkan Anda membaca sejumlah pesan apa pun dari offset mana pun. Hal ini memungkinkan fitur-fitur seperti pembacaan agregat dan pembacaan mundur (backtrack reads). Sistem perpesanan lain yang tidak menggunakan model penyimpanan berbasis antrian, seperti RabbitMQ dan ActiveMQ, tidak menyediakan fitur tersebut.

Hubungan model

Gambar berikut menunjukkan posisi dan alur antrian dalam model domain ApsaraMQ for RocketMQ:队列

Secara default, ApsaraMQ for RocketMQ menyediakan mekanisme penyimpanan pesan yang andal. Semua pesan yang berhasil dikirim disimpan secara persisten dalam sebuah antrian. Mekanisme ini, dikombinasikan dengan panggilan dari klien produsen dan konsumen, mencapai semantik pengiriman at-least-once.

Model antrian ApsaraMQ for RocketMQ mirip dengan model partisi Kafka. Dalam model perpesanan ApsaraMQ for RocketMQ, antrian merupakan komponen dari sebuah topik. Meskipun semua sumber daya pesan dikelola pada tingkat granularitas topik dan topik ringan, operasi aktual dilakukan pada antrian. Misalnya, produsen mengirim pesan ke topik tertentu, tetapi pesan tersebut dikirimkan ke antrian di dalam topik tersebut.

ApsaraMQ for RocketMQ menerapkan skalabilitas horizontal, baik untuk scaling out maupun scaling in, dengan mengubah jumlah antrian.

Properti internal

Izin baca dan tulis

  • Definisi: Menentukan apakah data dapat dibaca dari atau ditulis ke antrian saat ini.

  • Nilai: Nilai-nilai ditentukan oleh layanan. Enumerasi sebagai berikut:

    • 6: Baca dan tulis. Antrian mengizinkan operasi baca dan tulis.

    • 4: Hanya baca. Antrian hanya mengizinkan operasi baca untuk pesan historis dan tidak mengizinkan penulisan pesan baru.

    • 2: Hanya tulis. Antrian hanya mengizinkan operasi tulis untuk pesan baru dan tidak mengizinkan operasi baca.

    • 0: Tidak ada akses. Antrian tidak mengizinkan operasi baca maupun tulis.

  • Batasan: Izin baca dan tulis suatu antrian merupakan operasi O&M. Jangan sering mengubahnya.

Batasan perilaku

Setiap topik dan topik ringan menggunakan satu atau beberapa antrian untuk menyimpan pesan. Jumlah antrian untuk setiap topik atau topik ringan bergantung pada jenis pesan dan wilayah tempat instans berada. Jumlah antrian tidak dapat diubah.

Kompatibilitas versi

Properti nama antrian berbeda-beda di berbagai versi layanan ApsaraMQ for RocketMQ:

  • Versi layanan 3.x dan 4.x: Nama antrian merupakan tripel {Nama Topik}+{ID Broker}+{ID Antrian} dan terikat pada node fisik.

  • Versi layanan 5.x: Nama antrian adalah string unik global yang ditetapkan oleh kluster dan dipisahkan dari node fisik.

Oleh karena itu, selama pengembangan, jangan membuat asumsi mengenai nama antrian atau mengikatnya ke operasi lain. Jika Anda membuat nama antrian secara manual dalam kode dan mengikatnya ke operasi lain, Anda mungkin mengalami masalah kompatibilitas di mana nama antrian tidak dapat diurai setelah peningkatan layanan.

Rekomendasi penggunaan

Tentukan jumlah antrian berdasarkan konsumsi bisnis

Untuk antrian ApsaraMQ for RocketMQ, ikuti prinsip menggunakan jumlah sekecil mungkin. Hindari peningkatan jumlah antrian secara sembarangan.

Jumlah antrian yang berlebihan dalam sebuah topik dapat menyebabkan masalah berikut:

  • Membengkaknya metadata kluster

    ApsaraMQ for RocketMQ mengumpulkan metrik dan data pemantauan pada tingkat granularitas antrian. Jumlah antrian yang berlebihan dapat menyebabkan metadata lapisan kontrol membengkak.

  • Beban klien berlebihan

    Dalam ApsaraMQ for RocketMQ, operasi baca dan tulis pesan dilakukan pada antrian. Jumlah antrian yang berlebihan dapat menghasilkan permintaan polling kosong, yang meningkatkan beban sistem.

Skema umum untuk menambah antrian

  • Tambah antrian untuk penyeimbangan beban node fisik

    Dalam ApsaraMQ for RocketMQ, antrian suatu topik dapat didistribusikan ke berbagai node layanan. Setelah Anda melakukan skalabilitas horizontal kluster dengan menambahkan node, Anda dapat menambahkan antrian baru pada node layanan baru atau memigrasikan antrian lama ke node tersebut. Hal ini memastikan penyeimbangan beban lalu lintas kluster.

  • Tambah antrian untuk meningkatkan kinerja pesan terurut

    Pada versi layanan 4.x ApsaraMQ for RocketMQ, urutan pesan hanya dijamin dalam satu antrian tunggal. Oleh karena itu, jumlah antrian memengaruhi konkurensi pesan terurut. Tambahkan jumlah antrian hanya ketika Anda menghadapi bottleneck kinerja sistem.

  • Penyeimbangan beban untuk konsumsi pesan tidak terurut tidak bergantung pada jumlah antrian

    Untuk instans seri layanan ApsaraMQ for RocketMQ versi 5.x, penyeimbangan beban konsumen ditingkatkan ke tingkat granularitas pesan. Pesan dalam antrian yang sama dapat dikonsumsi secara merata oleh semua konsumen. Oleh karena itu, Anda tidak perlu khawatir jumlah antrian memengaruhi konkurensi konsumsi. Untuk informasi lebih lanjut tentang penyeimbangan beban, lihat Penyeimbangan beban konsumen.