🏗️ Kafka Mimarisi

Kafka Mimarisi: Kafka mimarisi, birden fazla şubesi olan dağıtık bir kütüphane sistemi gibi çalışır: her şube (broker) belirli bölümlerin (partition) bir kopyasını tutar, her böl

Kafka mimarisi, birden fazla şubesi olan dağıtık bir kütüphane sistemi gibi çalışır: her şube (broker) belirli bölümlerin (partition) bir kopyasını tutar, her bölümün numaralı rafları (offset) vardır ve her okuma grubunun şu anda hangi rafta olduğunu takip eden bir kütüphaneci (consumer offset) bulunur. Devam etmeden önce üzerinde durulması gereken kritik soru: neden tek bir büyük depolama alanı yerine partition'lara bölünmüş bir topic? Çünkü tek bir partition, tek bir sıralı yazma şerididir — yüksek hacimli bir topic'i 12 partition'a bölmek, 12 consumer'ın birbirini hiç bloklamadan paralel okuyabilmesi demektir, bu da throughput'u partition sayısıyla doğrusal olarak ölçekler. Java açısından, kilit çakışmasını önlemek için anahtarları bucket'lara dağıtan bir ConcurrentHashMap'i düşünün: Kafka da aynı şekilde event'leri consumer bottleneck'lerini önlemek için partition'lara dağıtır. QA mühendisleri için bu mimari kararın doğrudan bir test sonucu vardır: test consumer'ınız her zaman partition 0'a kendini atıyorsa, partition 7'ye inen event'leri kaçırır — partition key hash'lemesinin event'leri eşit olmayan şekilde dağıttığı gerçek production yükü altında görünen sessiz, yeniden üretilmesi güç bir boşluk.

Kafka Cluster Mimarisi

Temel Kafka Bileşenleri

🎬 Leader Çöktüğünde: Otomatik Failover

Bir "orders" partition'ı için Broker 1 leader'dır — tüm yazma ve okumaları o karşılar. Broker 2 ve 3 sadece kopyalayan follower'lardır.

Producer, Broker 1'e yazar. Broker 1, aynı byte'ları Broker 2 ve Broker 3'e de yansıtır — tıpkı bir RAID dizisinin her diski senkron tutması gibi.

Consumer da Broker 1'den okur — sistem sağlıklı çalışıyor, Broker 2 ve 3 sessizce senkron kalıyor.

Aniden Broker 1 çöker — donanım arızası, OOM, fark etmez. Producer ve Consumer'ın konuştuğu makine artık orada değil.

Controller, Broker 1'in kaybını saniyeler içinde tespit eder ve ISR (in-sync replica) listesindeki Broker 2'yi yeni leader olarak seçer.

Final — Producer ve Consumer, kafka client kütüphanesi sayesinde otomatik olarak yeni leader'a (Broker 2) yönlendirilir. Follower'lar in-sync olduğu için TEK BİR mesaj kaybolmaz.

Bir Broker Çöktüğünde Kim Devreye Girer?

Her partition'ın bir leader broker'ı vardır…

Her partition'ın bir leader broker'ı vardır — tüm okuma/yazma o brokerdan geçer, diğerleri sadece kopyalayan follower'dır.

Leader, her yazmayı ISR (in-sync replica) listesindeki follower'lara anında yansıtır.