Yazılım Notları

Mimari ve Dağıtık Sistemler

Biraz Dağıtık Düşünelim: Dağıtık Sistemlerin Teorik Temelleri

Biraz Dağıtık Düşünelim: Dağıtık Sistemlerin Teorik Temelleri

CAP, PACELC, FLP ve mantıksal saatler dağıtık sistemde neyin imkânsız olduğunu söyler; iyi mimari bu sınırları bilerek seçim yapmaktır ve 2025-2026'nın büyük kesintileri bunu yeniden gösterdi.

Kabul görüyor

Ağ bölünmesi ve gecikme kaçınılmaz olduğundan dağıtık sistem tutarlılığı bedavaya veremez; iyi mimari, her veri için hangi bedeli ödeyeceğini bilinçli seçer.

CAP, PACELC ve FLP kanıtlanmış sonuçlar; tartışma yalnızca CP/AP etiketlerinin gerçek sistemlere ne kadar oturduğunda.

Zihinsel model

Dağıtık sistem, telefonu bazen çekmeyen iki muhasebecidir: ya hat gelene kadar işlemi durdurursunuz ya da defterleri sonradan uzlaştırırsınız.

Neden

  • Bölünme bir tercih değil olaydır; o anda sistem ya isteği reddeder ya eski veriyle yanıt verir.
  • Bölünme yokken de güçlü tutarlı yazma replika onayını bekler; her yazma gecikme bedeli öder.
  • Asenkron ağda yavaş düğüm ile çökmüş düğüm ayırt edilemez; zaman aşımı bu yüzden bir risk tercihidir.

Kanıt

Dokümantasyonu hem linearizable hem her zaman erişilebilir olduğunu söyleyen NATS JetStream, çoğunluk yokken erişilemez hale geldi.

Jepsen, NATS 2.12.1 (2025)

AWS'nin yaklaşık 14,5 saat süren bölge kesintisinin kök nedeni, DynamoDB DNS yönetiminde eski planı yenisinin üstüne yazan bir yarış durumuydu.

AWS, Summary of the Amazon DynamoDB Service Disruption (2025)

MariaDB Galera Cluster'da hiçbir arıza yokken bile Lost Update ve stale read görüldü.

Jepsen, MariaDB Galera Cluster 12.1.2 (2026)

Karşı görüş

Bölünme pratikte nadirdir ve iyi yönetilen ağda CP bir sistem çok yüksek erişilebilirlik sunar; CP/AP etiketi gerçek sistemleri tarif etmekte yetersiz kalır. Spanner gibi tasarımlar saati belirsizlik aralığıyla yöneterek sınırı pahalı altyapıyla esnetir.

Kavramlar

CAPBölünme anında linearizable tutarlılık ile tam erişilebilirlikten birinin feda edilmesi.
PACELCNormal işleyişte de gecikme ile tutarlılık arasında seçim yapıldığını ekleyen genişletme.
FLP impossibilityAsenkron ağda her zaman sonlanan deterministik consensus'un olamayacağını gösteren sonuç.
QuorumKararın geçerli sayılması için gereken düğüm çoğunluğu; arıza toleransını belirler.
LinearizabilitySistemin tek bir kopya varmış gibi davrandığı en güçlü tutarlılık modeli.

Pratikte

  • Veritabanı seçerken normal gündeki yazma gecikmesini hangi tutarlılık seviyesi için ödediğinizi sorun.
  • Duvar saatiyle last-write-wins yerine mantıksal saat ve idempotency key kullanın.
  • Tutarlılık iddiasına güvenmeden önce fsync varsayılanını ve bağımsız Jepsen analizini okuyun.
Önce bunu okuCAP Twelve Years Later: How the "Rules" Have ChangedCAP'i ortaya atanın 'üçten ikisini seç' okumasını neden düzelttiğini anlatıyor.