Kafka Broker

Kafka Brokers

Kafka Brokers pada dasarnya adalah kafka server.
Kafka Brokers disebut juga dengan bootstrap server.
Kafka Cluster berisi beberapa Kafka Brokers.
Setiap Broker memiliki ID (int) tertentu.
Setiap Broker bisa berisi beberapa Topic Partition.
Ketika kita sudah konek ke salah satu broker, secara otomatis akan konek ke seluruh broker di cluster tersebut.

Kafka Broker Discovery

Untuk konek keseluruh broker dalam cluster tertentu prosesnya yaitu
Kafka Client mengirim Metadata Request ke salah satu Broker
Broker akan mengirim List dari semua brokers
Kafka Client dapat konek ke Broker yang dia butuhkan

Topic Replication Factor

BEST PRACTICE nya Topic harus memiliki replication factor > 1, sehingga jika suatu broker mengalami error maka data yang ada di broker tersebut masih bisa diambil dari broker lainya.
Gambar di atas adalah contoh untuk Partition 0 Topic A memiliki Replication Factor 2, dimana disimpan di Broker 101 dan Broker 102.

Leader of Partition

Hanya ada 1 Broker yang bisa menjadi leader untuk tiap partition
Producer hanya bisa mengirim data ke leader
Ketika Broker 101 mengalami kegagalan Broker 102 akan secara otomatis menjadi leader
ISR (In Sync Replica) adalah kondisi dimana suatu paritisi hasil replika telah tersinkron dengan leader

Producer Acknowledgements (ack)

Dalam Kafka, seorang producer dapat memilih untuk menerima acknowledgement sebagai hasil dari pengiriman data ke broker. Terdapat tiga opsi untuk acknowledgement, yaitu acks=0, acks=1, dan acks=-1.

acks=0

Pada opsi acks=0, data dianggap berhasil dikirim ketika producer telah mengirim data ke broker tanpa ada acknowledgement dari broker, yang berpotensi menyebabkan hilangnya data.

acks=1

Pada opsi acks=1, data dianggap berhasil dikirim ketika producer telah mengirim data ke broker dan broker memberikan acknowledgement ke producer sebagai tanda bahwa data sudah diterima, namun potensi hilangnya data tetap ada.

acks=-1

Pada opsi acks=-1, data dianggap berhasil dikirim ketika producer telah mengirim data ke broker dan leader serta replica mengirimkan acknowledgement sebagai tanda bahwa data sudah diterima, sehingga potensi hilangnya data bisa diminimalkan.

Kafka Topic Availability (Use Case : RF → 3)

acks=0 / acks=1 / acks = -1 & min.insync,replicas = 1→ ketika 1 partition UP + ISR maka data bisa dipublish
acks=-1 / acks=all
min.insync,replicas = 2 → ketika 2 partition UP + ISR maka bisa dipublish
min.insync,replicas = 3 → ketika 3 partition UP + ISR maka bisa dipublish
BEST PRACTICE → acks=all & min.insync,replicas=2
Untuk ketersediaan topik Kafka, penggunaan RF (Replication Factor) 3
Dengan opsi acks=0, acks=1, atau acks=-1 dengan min.insync.replicas=1, memungkinkan data untuk dipublikasikan ketika satu partisi UP + ISR.
Dengan pada opsi acks=-1 atau acks=all, data dapat dipublikasikan ketika
2 partisi UP + ISR dengan min.insync.replicas=2
3 partisi UP + ISR dengan min.insync.replicas=3.
Sebagai praktik terbaik, disarankan untuk menggunakan opsi acks=all dengan min.insync.replicas=2.