CAP teoremi nedir? Gerçek sistemlerde nasıl yorumlanır?

Cevap

CAP teoremine göre dağıtık bir veri sistemi, bir ağ bölünmesi (network partition) sırasında aşağıdaki iki özellikten yalnızca birini garanti edebilir:

  • Consistency (C): her okuma en son yazılan değeri döner (linearizability) ya da hata verir.
  • Availability (A): çalışan her düğüm her isteğe (hata olmadan) yanıt verir.
  • Partition tolerance (P): düğümler arası mesajlar kaybolsa da sistem çalışmaya devam eder.

Yaygın yanılgı: "3'ten 2'sini seç"

Dağıtık sistemde ağ bölünmesi kaçınılmazdır, yani P bir seçenek değildir. Asıl soru şudur: bölünme olduğunda sistem ne yapar?

  • CP: tutarsız veri döndürmektense bazı istekleri reddeder. Örnek: ZooKeeper, etcd, çoğunluk (quorum) gerektiren HBase. Kullanım: lider seçimi, kilitler, finansal kayıtlar.
  • AP: yanıt vermeye devam eder ama veri eski olabilir; bölünme bitince düğümler uzlaşır (eventual consistency). Örnek: Cassandra, DynamoDB (varsayılan ayarlarla), DNS. Kullanım: sepet, beğeni sayısı, sosyal akış.

Bölünme yokken C ve A birlikte sağlanabilir.

PACELC: daha gerçekçi bir model

Partition varsa A ile C arasında seç; Else (normal durumda) Latency ile C arasında seç. Bölünme olmasa da güçlü tutarlılık, replikalar arası senkron koordinasyon gerektirdiği için gecikmeyi artırır.

Ayarlanabilir tutarlılık

Cassandra ve DynamoDB'de tutarlılık istek bazında seçilebilir. N replika için okuma (R) ve yazma (W) quorum'ları R + W > N olacak şekilde seçilirse (ör. N=3, W=2, R=2) okumalar en son yazmayı görür.

Mülakatta nasıl kullanılır?

Sistemi tek etiketle (CP/AP) değil, her veri türü için değerlendirin: bir e-ticaret sisteminde ödeme ve stok rezervasyonu tutarlılık ister; ürün yorumları ve öneri listesi eventual consistency ile sorunsuz çalışır.

  1. Mesaj kuyruğu (RabbitMQ, Kafka) ne zaman kullanılır?ZorSistem TasarımıBackend
  2. Monolith ile mikroservis mimarisi arasındaki fark nedir? Mikroservislere ne zaman geçilmeli?ZorSistem TasarımıBackend
  3. Load balancer nedir? Yük dağıtım algoritmaları nelerdir?OrtaSistem TasarımıBackend
  4. Dikey ve yatay ölçekleme arasındaki fark nedir?KolaySistem TasarımıFull Stack
  5. Hangi cache stratejilerini biliyorsunuz?OrtaSistem TasarımıFull Stack
  6. REST ile GraphQL arasındaki farklar nelerdir?OrtaSistem TasarımıFull Stack

Bu konuda başka bir soru biliyor musun?

Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.

Soru ekle