Quorum Queue #

Dalam RabbitMQ modern, jika kita berbicara tentang sistem production yang serius, hampir selalu pembahasannya mengarah pada satu tipe queue: Quorum Queue.

Classic queue bisa durable. Lazy queue bisa menghemat memori.

Namun keduanya tidak dirancang untuk toleransi kegagalan node secara kuat dalam cluster.

Quorum queue hadir untuk menjawab kebutuhan:

  • High availability
  • Data replication
  • Konsistensi antar node
  • Ketahanan terhadap crash sebagian cluster

Artikel ini membahas quorum queue secara mendalam dalam konteks arsitektur production-grade RabbitMQ.

“Durability melindungi dari restart. Quorum melindungi dari kehilangan node.”

Apa Itu Quorum Queue? #

Quorum queue adalah tipe queue yang:

  • Menggunakan algoritma konsensus Raft
  • Mereplikasi data ke beberapa node dalam cluster
  • Memastikan message hanya dianggap committed jika mayoritas node menyetujui

Quorum queue dirancang untuk menggantikan classic mirrored queue (yang kini deprecated).

Ia fokus pada reliability dan konsistensi.


Konsep Dasar: Majority dan Consensus #

Dalam quorum queue:

  • Queue memiliki beberapa replica (misalnya 3 node)
  • Satu node menjadi leader
  • Node lain menjadi follower

Message dianggap berhasil ditulis jika mayoritas (quorum) node menyetujui.

1. Diagram Quorum 3 Node #

       Leader
         |
   -----------------
   |               |
Follower 1     Follower 2

Mayoritas = 2 dari 3

Jika 1 node mati:

  • 2 node tersisa → sistem tetap berjalan

Jika 2 node mati:

  • Tidak ada mayoritas → queue tidak tersedia

Bagaimana Quorum Queue Bekerja? #

Saat producer publish:

  1. Message dikirim ke leader
  2. Leader mengirim ke follower
  3. Follower acknowledge ke leader
  4. Jika mayoritas setuju → message committed
  5. Producer menerima confirm

Proses ini lebih berat dibanding classic queue.

Namun jauh lebih aman.


Perbedaan Quorum Queue vs Classic Queue #

AspekClassic QueueQuorum Queue
ReplikasiTidak (default)Ya
ConsensusTidakRaft
Toleransi node failureRendahTinggi
PerformaLebih cepatLebih berat
Cocok untukWorkload ringanProduction critical

Classic queue bisa durable, tetapi tidak otomatis replicated. Quorum queue selalu replicated.


Quorum Queue vs Mirrored Queue (Legacy) #

Sebelum quorum queue, RabbitMQ menggunakan mirrored queue.

Masalah mirrored queue:

  • Split brain
  • Konsistensi sulit dijaga
  • Konfigurasi kompleks

Quorum queue lebih sederhana dan konsisten karena berbasis Raft.

Dalam versi modern RabbitMQ, quorum queue adalah rekomendasi resmi untuk HA.


Dampak terhadap Performa #

Karena menggunakan consensus:

  • Write latency meningkat
  • Disk I/O meningkat
  • Network traffic antar node meningkat

Tradeoff:

Lebih lambat dibanding classic queue, tetapi jauh lebih tahan terhadap kegagalan.


Crash Scenario #

Skenario 1: 1 Node Mati (3 Node Cluster) #

  • Mayoritas masih ada
  • Queue tetap tersedia
  • Leader bisa diganti jika perlu

Skenario 2: Leader Mati #

  • Follower melakukan election
  • Leader baru dipilih
  • Queue tetap berjalan jika mayoritas tersedia

Skenario 3: Majority Hilang #

  • Queue berhenti menerima write
  • Konsistensi tetap terjaga

Quorum queue memilih konsistensi dibanding availability penuh.


Kapan Menggunakan Quorum Queue? #

Gunakan quorum queue jika:

  • Data sangat penting
  • Tidak boleh kehilangan message
  • Sistem production
  • Cluster multi-node

Hampir semua business-critical workload sebaiknya menggunakan quorum queue.


Kapan Tidak Menggunakan Quorum Queue? #

Tidak ideal jika:

  • Single node deployment
  • Latency sangat kritikal
  • Workload non-critical
  • Infrastruktur disk lambat

Classic queue mungkin lebih efisien untuk workload ringan.


Quorum Queue dan Ordering #

Quorum queue tetap menjaga FIFO ordering per queue.

Namun dalam kondisi leader election, ada sedikit latency tambahan.

Ordering tetap konsisten karena Raft menjamin log ordering.


Best Practice Production #

Gunakan 3 atau 5 Node Cluster #

Jumlah replica ganjil membantu menjaga mayoritas.


Jangan Gunakan 2 Node Cluster untuk Quorum #

2 node tidak ideal karena mayoritas sulit tercapai jika satu mati.


Monitor Disk dan Network #

Karena replication membutuhkan keduanya.


Ringkasan #

KarakteristikQuorum Queue
ReplikasiYa
ConsensusRaft
Toleransi node failureTinggi
Write latencyLebih tinggi
Direkomendasikan untukProduction critical

Penutup #

Quorum queue adalah jawaban RabbitMQ terhadap kebutuhan sistem modern yang menuntut ketahanan tinggi.

Ia membawa konsep distributed consensus ke dalam messaging layer.

Dengan quorum queue, kita tidak hanya menyimpan pesan — kita memastikan pesan tetap ada meskipun sebagian sistem gagal.

Namun seperti semua sistem berbasis konsensus, ia menukar performa dengan konsistensi dan ketahanan.

Dalam arsitektur production yang matang, quorum queue bukan sekadar opsi — ia sering menjadi fondasi utama keandalan sistem.

About | Author | Content Scope | Editorial Policy | Privacy Policy | Disclaimer | Contact