Örnek sorular
St Kafka Broker Storage ReplicationZorluk 1
Bir Kafka broker'ının diskinde tek bir partition fiziksel olarak nasıl saklanır?
- aVeri hacminden bağımsız, sürekli büyüyen tek bir dosya olarak
- bBroker'ın yönettiği ilişkisel bir veritabanı tablosundaki satırlar olarak
- cBir tanesi aktif olan bir log segment dosyaları dizisi olarak✓
- dTamamen bellekte; diske yalnızca broker kapanışında yazılarak
Açıklama:Bir partition'ın log'u diskte segment dosyalarına bölünür. Aynı anda yalnızca bir segment (aktif segment) yeni append kabul eder; eski segment'ler kapatılır (roll edilir) ve silinene ya da compact edilene kadar salt-okunur kalır.
St Kafka Broker Storage ReplicationZorluk 1
Kafka'yı bir partition'ın aktif log segment'ini roll etmeye (kapatıp yenisini başlatmaya) ne tetikler?
- a
segment.bytes boyutuna ulaşmak ya da segment.ms yaşına gelmek, hangisi önce olursa✓ - bBir consumer group'un aktif segment'teki tüm okumaları bitirmesi
- cBroker'ın JVM'inin bir garbage collection döngüsü çalıştırması
- dPartition lider'inin başka bir broker'a taşınması
Açıklama:Segment roll etme yalnızca aktif segment'in boyutu (segment.bytes) ve yaşı (segment.ms) tarafından tetiklenir; hangi eşik önce dolarsa roll o an gerçekleşir. Consumer ilerlemesi ya da lider değişimi segment roll'unu tetiklemez.
St Kafka Broker Storage ReplicationZorluk 3
Bir topic-partition'da segment.bytes=1073741824 (1 GiB) ve segment.ms=604800000 (7 gün) ayarlı. Partition günde yaklaşık 50 MB veri alıyor. 20 günlük kesintisiz üretimden sonra aktif segment kabaca kaç kez roll edilmiştir ve her roll'u hangi eşik tetiklemiştir?
- aYaklaşık 20 roll, hepsini günlük dolan
segment.bytes tetikler - b2 roll; ikisini de
segment.ms tetikler, boyut değil✓ - cTam 1 roll, 20. günde
segment.bytes tarafından tetiklenir - dSıfır roll, çünkü segment'ler yalnızca broker restart'ında roll olur
Açıklama:Günde 50 MB ile 7 günlük yazım yalnızca ~350 MB birikir, bu da 1 GiB'lık segment.bytes sınırının çok altındadır; bu yüzden önce segment.ms dolar. Roll'lar 7. ve 14. günlerde gerçekleşir; üçüncüsü 21. günde olur. Dolayısıyla 20 günde zaman eşiğinin tetiklediği 2 roll vardır.
St Kafka Broker Storage ReplicationZorluk 1
Her Kafka log segment'i (.log dosyası) bir .index ve bir .timeindex dosyasıyla eşleştirilir. Bunlar ne için kullanılır?
- aPartition'ın replika atamasını saklamak için
- bConsumer group'un commit edilmiş offset'lerini saklamak için
- cSegment'in sıkıştırılmış bir yedek kopyasını tutmak için
- dOffset/zaman damgalarını yaklaşık byte konumlarına eşlemek için✓
Açıklama:.index dosyası offset'leri byte konumlarına, .timeindex ise zaman damgalarını offset'lere seyrek (sparse) şekilde eşler. Kafka bunları hedef konuma yakın bir yere atlayıp ardından küçük bir aralığı taramak için kullanır; segment'i baştan okumaz.
St Kafka Broker Storage ReplicationZorluk 2
Bir topic'te cleanup.policy=delete ve retention.ms=604800000 (7 gün) ayarlı. Bir log segment'i 8 gün önce kapatıldı (roll edildi) ve içindeki en yeni mesaj 7.5 gün yaşında. Daha yeni, hâlâ aktif olan bir segment ise yalnızca son birkaç saati tutuyor. Kapalı segment'e ne olur?
- aKapalı segment'in tamamı segment-bazlı silme için uygun hale gelir✓
- bYalnızca 7 günden eski bireysel mesajlar kaldırılır
- cAktif segment de eskiyene kadar hiçbir şey silinmez
- dSegment, her key için son değeri tutacak şekilde compact edilir
Açıklama:cleanup.policy=delete altında silme mesaj bazında değil, segment bazında çalışır. Kapalı bir segment'teki bütün mesajlar retention eşiğinden eski hale geldiğinde segment uygun olur ve sonraki bir retention kontrolünde seçilir; fiziksel dosya silme ayrıca gecikebilir. Aktif segment yazım kabul ederken uygun değildir.
St Kafka Broker Storage ReplicationZorluk 2
Bir topic cleanup.policy=compact ile yapılandırılmış. Log compaction temelde ne yapar?
- aDelete gibi, belirli bir yaşın üzerindeki her mesajı kaldırır
- bHer farklı mesaj key'i için en azından son değeri korur✓
- cHiçbir kaydı silmeden payload'ları gzip/zstd ile sıkıştırır
- dTopic'in tüm partition'larını tek bir partition'da birleştirir
Açıklama:Compaction, zaman bazlı silme ya da payload sıkıştırma değil, key bazlı bir saklama biçimidir: log cleaner segment'leri yeniden yazarak her key için yalnızca en son kaydın (artı henüz temizlenmemiş yakın kayıtların) hayatta kalmasını sağlar; bu da topic'in güncel durumun bir changelog'u gibi davranmasına izin verir.