Back to IF4031 Arsitektur Aplikasi Terdistribusi

Perbandingan Platform dan Protokol MQTT

Questions/Cues

  • Apa perbedaan utama RabbitMQ vs Kafka?

  • Kapan menggunakan RabbitMQ?

  • Kapan menggunakan Kafka?

  • Apa itu MQTT?

  • Apa fitur utama MQTT?

  • Apa itu QoS di MQTT?

  • Apa fungsi flag RETAIN?

  • Apa itu Last Will and Testament?

Reference Points

  • 10b-IF4031-07b-2024-Message-Publish-Subscribe-Perbandingan.pdf

Perbandingan: RabbitMQ vs Apache Kafka

FiturRabbitMQApache Kafka
ArsitekturSmart Broker, Dumb ClientDumb Broker, Smart Client
ModelMessage Broker TradisionalDistributed Streaming Platform (Log)
RoutingSangat fleksibel & kompleks (Direct, Fanout, Topic, Headers Exchange)Sederhana, berbasis Topic dan Partisi
Retensi PesanPesan dihapus setelah di-consume & di-ackPesan disimpan berdasarkan periode waktu/ukuran (dapat di-replay)
Urutan PesanTerjamin per queue (FIFO)Terjamin hanya per partisi
ThroughputSedang hingga TinggiSangat Tinggi

Kapan menggunakan RabbitMQ?

  • Untuk kebutuhan messaging aplikasi secara umum.

  • Ketika Anda memerlukan logika perutean pesan yang kompleks.

  • Untuk background jobs atau komunikasi antar microservice dengan pola request/reply.

  • Ketika urutan pesan global atau prioritas pesan penting.

Kapan menggunakan Kafka?

  • Untuk pipeline data bervolume sangat besar (big data).

  • Real-time streaming dan pemrosesan event.

  • Pelacakan aktivitas pengguna, agregasi log, atau event sourcing.

  • Ketika kemampuan untuk memutar ulang (replay) pesan historis adalah sebuah kebutuhan.

MQTT: Protokol untuk IoT

MQ Telemetry Transport (MQTT) adalah protokol publish-subscribe yang sangat ringan dan efisien. Didesain secara spesifik untuk:

  • Perangkat dengan sumber daya terbatas (CPU, memori rendah).

  • Jaringan dengan bandwidth rendah dan latensi tinggi (tidak andal).

Fitur Unik MQTT

  1. Quality of Service (QoS): MQTT mendefinisikan tiga level garansi pengiriman, memberikan fleksibilitas antara keandalan dan overhead jaringan:

    • QoS 0 (At most once): “Fire and forget”. Pengiriman tercepat, tapi pesan bisa hilang.

    • QoS 1 (At least once): Menjamin pesan sampai, tapi bisa ada duplikat. Memerlukan ack.

    • QoS 2 (Exactly once): Menjamin pesan sampai tepat satu kali. Paling andal, tapi paling lambat karena memerlukan jabat tangan (handshake) 4 langkah.

  2. Retain Flag: Jika sebuah pesan dipublikasikan dengan flag RETAIN aktif, broker akan menyimpan pesan tersebut sebagai “nilai terakhir yang diketahui” untuk topic itu. Ketika ada subscriber baru yang berlangganan ke topic tersebut, broker akan langsung mengirimkan pesan yang tersimpan itu tanpa menunggu publisher baru. Sangat berguna untuk menyiarkan state atau status terakhir dari sebuah sensor.

  3. Last Will and Testament (LWT): Saat sebuah klien terhubung ke broker, ia dapat mendaftarkan sebuah pesan “wasiat” (LWT). Jika klien tersebut terputus secara tidak normal (misalnya, kehabisan baterai atau kehilangan sinyal) tanpa mengirim pesan DISCONNECT, broker akan secara otomatis mempublikasikan pesan LWT tersebut ke topic yang telah ditentukan. Ini berguna untuk memberitahu klien lain bahwa sebuah perangkat telah offline.

Summary

Pemilihan antara RabbitMQ dan Kafka bergantung pada kasus penggunaan: RabbitMQ unggul dalam perutean pesan yang kompleks untuk aplikasi umum, sementara Kafka didesain untuk streaming data bervolume tinggi dengan kemampuan replay. Di sisi lain, MQTT adalah protokol pub/sub yang sangat ringan, dioptimalkan untuk perangkat IoT di jaringan yang tidak andal, dengan fitur unik seperti level QoS yang fleksibel, pesan Retain untuk status terakhir, dan Last Will and Testament untuk deteksi koneksi terputus.