Replication#
Kafka dağıtık yapıdadır ve veriyi kaybetmemek için replication yapmak gerekir. Replication factor tekil sayılardan oluşmalıdır, optimum olarak 3 seçilmelidir. Örnek olarak 3 broker, ve 3 partititon'lı 1 topic varsa, her partition tüm brokerlarda yedeklenmiş olur. Yedeklenenler pasiftir, sadece veriyi tutar, tek bir aktif broker vardır. Lidere karar veren zookeeper'dır (2.8.0 versiyonu öncesi).
Kafka, replication factor N parametresi ile ayağa kaldırıldı ise, producer ve consumer’lar N-1 Kafka broker’a kalana kadar çalışmaya devam ederler.
REPLICATION_FACTOR 3 olduğu bir sistem düşünelim ve sistemde 5 broker olsun.
Broker 5'in çöktüğünü düşünelim.
Veriler diğer broker'lara aktarılarak devam eder. Broker 2 de çöksün.
Veriler kalan 1, 3 ve 4 numaralı broker'lara aktarılarak devam eder. Ancak bir broker daha çökerse sistem hata verir. Bu durumda;
brokers >= replication factor
Kafka broker ayarlarından default replication factor ve partititons verilirse, yeni oluşturulacak topicler bu ayarlarla oluşur.
KAFKA_DEFAULT_REPLICATION_FACTOR: 3
KAFKA_NUM_PARTITIONS: 3
- Eğer 2 brokerlı bir kafka cluster'ı varsa ve replicasız bir topic varsa, topic 1 broker'a bağlanır ve o broker çökerse kafkanın bağlı olduğu uygulamalar hata almaya başlar.
Kafka terminalinden topic replication factor güncelleme:
Terminal üzerinden replica assignment yaparak hangi broker'da hangi partition ve replicalarının hangi brokerlarda bulunduğunu spesifik olarak vererek replica ayarlarını değiştirmek mümkündür. Referans link