Skip to main content

> CHAPTER 03 // INITIAL // 24 MIN READ

Log-Merkezli Akış: Bölümleme, Sıfır-Kopyalama I/O & Tüketici Grubu Protokolleri

Yüksek verimli dağıtık commit loglarının mimarisi: sıralı disk erişim mekaniği, Linux çekirdeği sendfile() sıfır-kopyalama ağ transferi, bölüm anahtarı hashleme ve kooperatif rebalance.

Tüm Kılavuzlara Dön (10 Bölüm)📜 Jay Kreps (The Log 2013) / Apache Kafka Architecture
CHAPTER 0324 min readJay Kreps (The Log 2013) / Apache Kafka Architecture

Log-Merkezli Akış: Bölümleme, Sıfır-Kopyalama I/O & Tüketici Grubu Protokolleri

Yüksek verimli dağıtık commit loglarının mimarisi: sıralı disk erişim mekaniği, Linux çekirdeği sendfile() sıfır-kopyalama ağ transferi, bölüm anahtarı hashleme ve kooperatif rebalance.

Temel Kavramlar:Commit Log InternalsZero-Copy sendfile()Partition Key HashingCooperative Sticky AssignorKRaft Quorum

Log-Merkezli Akış: Bölümleme, Sıfır-Kopyalama I/O & Tüketici Grubu Protokolleri

Yönetici Özeti

Modern dağıtık akış platformları, geçici bellek içi kuyruklar yerine kalıcı ve yalnızca-eklenebilir (append-only) commit loglarını temel alır. Veri akışlarını diske sıralı olarak yazılan, değişmez ve tamamen sıralı olay dizileri olarak modelleyen Apache Kafka ve Redpanda gibi sistemler, deterministik yeniden oynatma imkanı ile saniyede milyonlarca mesaj işleme kapasitesine ulaşır.

1. Çekirdek Sıfır-Kopyalama (Zero-Copy) I/O Avantajı

Geleneksel mesaj kuyrukları veriyi kullanıcı alanı (user-space) bellek tamponları üzerinden kopyalar: $$\text{Disk} \rightarrow \text{İşletim Sistemi PageCache} \rightarrow \text{Uygulama Belleği} \rightarrow \text{Soket Tamponu} \rightarrow \text{Ağ Kartı (NIC)}$$ Bu işlem 4 bağlam değişimi (context switch) ve 3 gereksiz bellek kopyalaması yaratır.

Kafka, Linux çekirdeğinin `sendfile()` sistem çağrısını (Zero-Copy) kullanarak kullanıcı alanını tamamen atlar:

ARCHITECTURE FLOWCHARTLog-Merkezli Akış: Bölümleme, Sıfır-Kopyalama I/O & Tüketici Grubu Protokolleri
⚡ TinyCTO.tv

Sonuç: CPU yükü %80 azalır ve ağ çıkışı, işletim sistemi disk önbelleğinden doğrudan 100 Gbps ağ hatlarını doyurabilir.

2. Bölüm Anahtarı Hashleme ve Sıralama Garantisi

Bir Kafka konusu (topic), $P$ adet fiziksel bölümden (partition) oluşur. Katı toplam sıralama yalnızca tek bir bölüm sınırları içinde garanti edilir. Aynı bölüm anahtarına sahip mesajlar MurmurHash2 ile deterministik olarak aynı bölüme atanır: $$\text{Bölüm ID} = |\text{MurmurHash2}(\text{key})| \pmod P$$

3. Kooperatif Yapışkan (Cooperative Sticky) Tüketici Rebalance Protokolü

Eski rebalance protokolleri (Eager Rebalance), bir tüketici gruba katıldığında veya ayrıldığında gruptaki tüm tüketicilerin işleme durdurup bölümlerini bırakmasına neden oluyordu (stop-the-world gecikme fırtınası). Cooperative Sticky Assignor protokolü bu sorunu çözer:

  1. Yalnızca başka bir tüketiciye taşınması gereken belirli bölümler iptal edilir.
  2. Etkilenmeyen tüketiciler mevcut bölümlerini kesintisiz olarak işlemeye devam eder.