Episode ini membedah konsep inti Kafka: event, topic, partition, broker, cluster, offset, dan consumer group. Kalian juga akan memahami arsitektur distributed commit log, peran controller broker, mekanisme replikasi, serta storage berbasis log segment.

Setelah memahami mengapa Kafka ada, sekarang waktunya memahami apa itu Kafka secara struktural. Episode 2 ini adalah fondasi konseptual paling penting di seluruh series: jika kalian paham event, topic, partition, offset, dan consumer group, semua episode berikutnya tinggal memperdalam detail dari konsep yang sama.
Kafka didesain sebagai distributed commit log. Artinya, data tersimpan sebagai urutan record yang di-append ke dalam log, didistribusikan di banyak node, dan direplikasi agar tahan terhadap kegagalan. Paradigma ini berbeda jauh dari database relasional yang mengorganisir data dalam tabel yang bisa di-update in-place.
Kita akan membedah struktur event, bagaimana log dipecah menjadi partition, bagaimana replicas menjaga ketersediaan, peran controller broker dalam KRaft, serta format penyimpanan berbasis segment file. Pahami dengan sungguh-sungguh, karena semua istilah ini akan dipakai berulang kali di 33 episode berikutnya.
Unit dasar Kafka disebut event atau record. Sebuah event adalah fakta yang terjadi di dunia: "user A mengklik tombol checkout pada pukul 10:00". Secara internal, sebuah record berisi:
Event bersifat immutable — sekali ditulis, tidak bisa diubah. Update hanyalah menulis event baru.
Sebuah topic adalah kategori tempat event dipublikasikan, misalnya orders atau user-events. Topic dipecah menjadi satu atau lebih partition. Setiap partition adalah log terurut yang di-append secara berurutan:
[0] [1] [2] [3] [4] ... <- offsetPartition memberikan paralelisme: producer dapat menulis ke beberapa partition bersamaan, dan consumer group dapat membaca partition yang berbeda secara paralel. Kunci penting: ordering hanya dijamin di dalam satu partition, bukan antar partition.
Producer adalah aplikasi yang menulis event ke topic. Consumer adalah aplikasi yang membaca event dari topic. Keduanya berbicara dengan broker — server Kafka yang menyimpan dan melayani data. Beberapa broker bersama-sama membentuk cluster; setiap broker mengelola beberapa partition dari berbagai topic.
Setiap partition direplikasi ke beberapa broker. Satu broker menjadi leader untuk partition tersebut; sisanya adalah follower. Semua tulis dan baca dilakukan melalui leader, sementara follower mereplikasi data secara asinkron. Jika leader mati, salah satu follower terpilih menjadi leader baru.
Setiap partition juga mempertahankan daftar ISR (In-Sync Replicas) — follower yang masih sinkron dengan leader. Replica yang tertinggal dikeluarkan dari ISR, dan masuk kembali ketika sudah mengejar ketertinggalan.
Kafka modern memakai KRaft (KIP-500): metadata cluster — daftar broker, topic, partition, leader — dikelola oleh sebuah quorum dari controller broker memakai algoritma Raft. Satu controller aktif memimpin, sisanya standby. Ini menggantikan peran ZooKeeper pada Kafka versi lama.
Controller bertugas memutuskan leader election, memproses pembuatan topic, dan mengoordinasikan reassignment partition. Jika controller aktif gagal, quorum memilih controller baru secara otomatis.
Ketika producer mengirim record, broker menulisnya ke log partition milik leader, lalu menunggu konfirmasi follower sesuai setting acks=all pada sisi producer. Consumer membaca dari offset terakhir yang direkam di consumer group, dan broker mengembalikan batch record berikutnya. Proses baca memanfaatkan zero-copy sehingga data tidak perlu disalin berulang antara kernel dan aplikasi.
Setiap partition disimpan sebagai direktori berisi rangkaian segment files. Segmen adalah file .log berisi record aktual, dengan indeks .index (offset ke posisi byte) dan .timeindex (timestamp ke offset). Segmen yang tertutup (tidak aktif lagi) menjadi target untuk retention dan compaction:
ls /tmp/kraft-combined-logs/orders-0/
00000000000000000000.log
00000000000000000000.index
00000000000000000000.timeindexNama file adalah offset record pertama di segmen tersebut. Broker menulis ke segmen aktif sampai ukuran segmen tercapai atau waktu segmen terlewati, lalu membuat segmen baru.
Retention menentukan berapa lama data disimpan. Dua mode yang didukung: delete, yang menghapus segmen lebih tua dari retention.ms atau melebihi retention.bytes, dan compact, yang menyimpan hanya nilai terbaru untuk setiap key (detail lengkap di episode 10). Mode default Kafka adalah delete.
Info
Karena Kafka menulis secara sekuensial ke disk, I/O jauh lebih efisien daripada update random. Inilah salah satu alasan Kafka mencapai throughput jutaan record per detik bahkan di atas hard disk biasa.
Setiap record dalam partition memiliki offset unik, yang menandakan posisinya dalam log. Consumer yang menyimpan offset terakhir yang sudah diproses dapat melanjutkan dari posisi tersebut setelah restart — ini yang memungkinkan replay dan resume tanpa kehilangan data.
Sekumpulan consumer yang berbagi group.id membentuk consumer group. Partisi sebuah topic dibagi rata di antara anggota group: jika ada 6 partition dan 3 consumer, setiap consumer mendapat 2 partition. Jika satu consumer mati, partition-nya di-assign ulang ke anggota lain — proses ini disebut rebalance.
Topic orders (6 partition)
consumer A -> partition 0,1
consumer B -> partition 2,3
consumer C -> partition 4,5Jumlah consumer tidak boleh melebihi jumlah partition, karena satu partition hanya boleh dibaca satu consumer dalam satu group pada satu waktu. Detail pengelolaan offset dan strategi assignment akan dibahas di episode 6.
Di episode 2 ini kalian sudah membangun peta konseptual Kafka: event sebagai record immutable, topic yang dipecah menjadi partition terurut, broker dan cluster dengan leader-follower replication, controller KRaft untuk metadata, storage berbasis segment file, serta offset dan consumer group sebagai mekanisme konsumsi paralel.
Inti yang harus dibawa pulang:
.log, .index, .timeindex.Di episode 3 selanjutnya kita akan mempraktikkan konsep ini: installation dan cluster setup — dari binary installation, perbandingan ZooKeeper vs KRaft, membangun single-node dan multi-broker cluster, hingga mengenal seluruh Kafka CLI tools yang akan menemani kalian sepanjang series. Siapkan terminal kalian, karena hands-on dimulai sekarang!