Back to IF4031 Arsitektur Aplikasi Terdistribusi

Apache Kafka - Arsitektur Log Terdistribusi

Questions/Cues

  • Apa tujuan desain Kafka?

  • Apa itu arsitektur Dumb Broker?

  • Apa itu Topic?

  • Apa itu Partition?

  • Apa itu Offset?

  • Apa jaminan urutan di Kafka?

  • Apa itu Consumer Group?

  • Bagaimana Kafka mendukung P2P dan Pub/Sub?

  • Apa peran Zookeeper?

  • Bagaimana Kafka mencapai fault tolerance?

Reference Points

  • 10a-IF4031-07a-2024-Message-Publish-Subscribe-Kafka.pdf

Tujuan dan Arsitektur Apache Kafka

Kafka dirancang sebagai platform streaming terdistribusi yang fault-tolerant dengan throughput sangat tinggi. Ini lebih dari sekadar message broker; ia adalah sebuah log komit terdistribusi.

Kafka mengikuti filosofi “Dumb Broker, Smart Client”:

  • Dumb Broker: Broker Kafka tidak melacak pesan mana yang telah dibaca oleh consumer. Tugas utamanya adalah menerima pesan, menuliskannya ke log, dan menyimpannya untuk periode waktu tertentu (retention period).

  • Smart Client (Consumer): Setiap consumer bertanggung jawab penuh untuk melacak pesan mana yang sudah dibacanya. Ia menyimpan “penanda” atau pointer yang disebut offset.

Komponen Inti Kafka

  1. Topic: Sebuah nama kategori atau feed di mana pesan dipublikasikan. Contoh: user-logins, order-updates.

  2. Partition: Setiap topic dipecah menjadi satu atau lebih partisi. Partisi adalah log yang terurut dan immutable (tidak dapat diubah). Pesan baru selalu ditambahkan di akhir partisi.

  3. Offset: Setiap pesan di dalam sebuah partisi diberi ID sekuensial unik yang disebut offset. Offset ini berfungsi sebagai koordinat pesan di dalam partisi.

Jaminan Urutan (Ordering Guarantee): Kafka hanya menjamin urutan pesan di dalam satu partisi. Tidak ada jaminan urutan pesan di antara partisi-partisi yang berbeda dalam satu topic.

Consumer Group

Consumer Group adalah konsep kunci yang memungkinkan Kafka untuk mendukung dua model messaging sekaligus:

  • Satu Label Grup: Sebuah consumer group adalah sekelompok consumer yang bekerja sama untuk mengonsumsi satu topic. Kafka akan mendistribusikan partisi-partisi dari topic tersebut secara merata di antara consumer yang aktif dalam grup. Setiap partisi hanya akan dibaca oleh satu consumer dalam grup.

Implementasi Model Messaging:

  • Point-to-Point (Queue): Semua consumer Anda berada dalam satu consumer group yang sama. Ini akan menyeimbangkan beban pembacaan partisi di antara mereka.

  • Publish-Subscribe (Broadcast): Setiap consumer berada dalam consumer group nya sendiri-sendiri. Dengan demikian, setiap consumer akan mendapatkan semua pesan dari semua partisi di topic tersebut.

Fault Tolerance dan Zookeeper

  • Replikasi: Setiap partisi dapat direplikasi ke beberapa broker. Satu replika akan menjadi Leader (menangani semua operasi baca/tulis) dan yang lainnya menjadi Follower (menyalin data dari leader). Jika leader gagal, salah satu follower akan secara otomatis dipromosikan menjadi leader baru.

  • Zookeeper: (Pada versi lama, perannya semakin berkurang) Layanan eksternal yang digunakan Kafka untuk mengelola metadata cluster, seperti daftar broker, konfigurasi topic, dan melacak leader dari setiap partisi.

Summary

Apache Kafka adalah platform streaming terdistribusi yang beroperasi sebagai log komit, mengadopsi arsitektur “Dumb Broker, Smart Client”. Pesan diorganisir dalam Topic yang dipecah menjadi beberapa Partition, di mana setiap pesan memiliki Offset unik dan urutannya terjamin per partisi. Konsep Consumer Group memungkinkan Kafka untuk secara fleksibel mendukung model messaging Point-to-Point (satu grup) dan Publish-Subscribe (banyak grup), sementara fault tolerance dicapai melalui replikasi partisi antar broker.