Ana içeriğe geç

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