CAP Teoremi, PACELC Ödünleşimleri & Resmi Tutarlılık Modelleri
Dağıtık uzlaşmanın derin matematiksel temelleri: Brewer’ın CAP teoremi, Abadi’nin PACELC sınıflandırması ve Lineerleştirilebilirlikten Nihai Tutarlılığa uzanan tutarlılık modelleri hiyerarşisi.
CAP Teoremi, PACELC Ödünleşimleri & Resmi Tutarlılık Modelleri
Yönetici Özeti
Dayanıklı dağıtık sistemler tasarlamak, temel fiziksel sınırları kabul etmekle başlar: ağ gecikmesi sıfır olamaz, paket kaybı kaçınılmazdır ve mutlak senkronize küresel fiziksel saatler yoktur. Eric Brewer’ın CAP Teoremi ve Daniel Abadi’nin PACELC Teoremi, dağıtık sistemlerin normal çalışma ve ağ bölünmesi (partition) anlarında vermesi gereken ödünleşimleri matematiksel olarak modeller.
1. Brewer’ın CAP Teoreminin Resmi Tanımı
Brewer’ın CAP Teoremi, dağıtık bir veri deposunun aynı anda şu üç özellikten en fazla ikisini sağlayabileceğini belirtir:
- Consistency (Linearizability - Tutarlılık): Her okuma işlemi en güncel yazma sonucunu veya bir hata döndürür.
- Availability (Erişilebilirlik): Çökmeyen her düğüm, her isteğe hatasız bir yanıt döndürür (en son yazmayı içerme garantisi olmadan).
- Partition Tolerance (Bölünme Toleransı): Düğümler arasındaki ağ paketleri kaybolsa veya gecikse bile sistem çalışmaya devam eder.
Fiziksel bir ağda ağ bölünmeleri ($P$) kaçınılmaz olduğundan, mimarlar temelde CP (Bölünme anında Tutarlılık) ile AP (Bölünme anında Erişilebilirlik) arasında seçim yapmak zorundadır.
2. Abadi’nin PACELC Teoremi
PACELC Teoremi, CAP teoremini ağ normal çalıştığında (bölünme yokken) ortaya çıkan gecikme ve tutarlılık ödünleşimini kapsayacak şekilde genişletir: $$\text{Eğer } P \text{ (Bölünme)} \rightarrow [A \lor C] \text{ seç}; \quad \text{YOKSA (Else)} \rightarrow [L \lor C] \text{ seç}$$
- PC/EC: Bölünmede Tutarlılık; Normalde Tutarlılık (örn. Apache Kafka KRaft, CockroachDB, Google Spanner).
- PA/EL: Bölünmede Erişilebilirlik; Normalde Düşük Gecikme (örn. DynamoDB eventual read, Cassandra, Couchbase).
- PA/EC: Bölünmede Erişilebilirlik; Normalde Tutarlılık (örn. MongoDB primary reads).
- PC/EL: Bölünmede Tutarlılık; Normalde Gecikme Önceliği (örn. PostgreSQL sync replica).
3. Tutarlılık Modelleri Hiyerarşisi
- Strict Serializability (Dışsal Tutarlılık): Altın standart. İşlemler fiziksel zaman sırasına göre lineerize edilmiş olarak yürütülür.
- Linearizability (Atomik Tutarlılık): Tek-nesne, tek-işlem gerçek zamanlı sıralama güvencesi.
- Sequential Consistency (Ardışık Tutarlılık): İşlemler tüm düğümler tarafından aynı sırada gözlemlenir ve program sırasına uyar.
- Causal Consistency (Nedensel Tutarlılık): Nedensel ilişkili işlemler tüm düğümlerde aynı sırada görünür; bağımsız işlemler farklı sırada görülebilir.
- Eventual Consistency (Nihai Tutarlılık): Yeni güncelleme yapılmadığı sürece tüm kopyalar eninde sonunda aynı duruma ulaşır.
4. Üretim Mimarisi Yönergeleri
- Finansal Bakiyeler ve Stok Yönetimi: Raft quorum ile CP / PC/EC zorunlu kılınmalıdır. Bakiye defterlerinde asla çift taraflı bölünmüş yazmaya izin verilmez.
- Telemetri ve Sosyal Akışlar: CRDT yapıları ile AP / PA/EL mimarisi seçilmelidir. Anlık tutarlılık yerine yüksek verim ve sıfır kesinti hedeflenir.
