---
title: "Chapter 03: Log-Merkezli Akış: Bölümleme, Sıfır-Kopyalama I/O & Tüketici Grubu Protokolleri | TinyCTO Distributed Systems Canon"
description: "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."
image: "https://tinycto.tv/assets/distributed-systems/distributed_systems_manuals_og.jpg"
canonicalUrl: "https://tinycto.tv/tr/distributed-systems/manuals/03-kafka-log-mimarisi-bolumleme"
locale: "tr"
---

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

> **Kanonik Dağıtık Sistemler Mühendislik Kılavuzu**
> **Teorem Referansı**: Jay Kreps (The Log 2013) / Apache Kafka Architecture | **Okuma Süresi**: 24 min read | **Olgunluk Seviyesi**: INITIAL

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.

# 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:
```mermaid
flowchart LR
    Disk["NVMe Disk Segmentleri"] -->|DMA Kopyalama| PageCache["Linux OS PageCache"]
    PageCache -->|DMA Transferi (sendfile)| NIC["Ağ Arabirim Kartı (NIC)"]
    PageCache -.->|Bellek Kopyası Atlandı| App["Kafka Broker (JVM)<br/>[Sıfır Bellek Yükü]"]
    
    style App stroke-dasharray: 5 5
```
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.


### Temel Kavramlar & Modeller

- `Commit Log Internals`
- `Zero-Copy sendfile()`
- `Partition Key Hashing`
- `Cooperative Sticky Assignor`
- `KRaft Quorum`

### Kanon Yüzeyleri & Bağlantılar

- **Kılavuzlar Kütüphanesi**: https://tinycto.tv/tr/distributed-systems/manuals
- **18 Referans Mimarisi**: https://tinycto.tv/tr/distributed-systems/architectures
- **Topoloji & Boyutlandırma Sihirbazı**: https://tinycto.tv/tr/distributed-systems/wizard
- **Teknoloji & Konsensüs Matrisi**: https://tinycto.tv/tr/distributed-systems/matrix

```json
{
  "@context": "https://schema.org",
  "@type": "TechArticle",
  "headline": "Log-Merkezli Akış: Bölümleme, Sıfır-Kopyalama I/O & Tüketici Grubu Protokolleri",
  "description": "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.",
  "inLanguage": "tr",
  "educationalLevel": "Advanced",
  "proficiencyLevel": "Expert",
  "url": "https://tinycto.tv/tr/distributed-systems/manuals/03-kafka-log-mimarisi-bolumleme"
}
```
