Modern yazılım sistemleri artık tek bir sunucuda değil;
dağıtık, ölçeklenebilir ve yüksek erişilebilir yapılarda çalışıyor.
Bu noktada kritik bir soru ortaya çıkar:
“Veri her zaman %100 tutarlı mı olmalı?”
Bunu da okuyun
R ile E-Ticaret ve Satış Analizi
Cevap çoğu zaman: Hayır.
İşte burada Eventual Consistency devreye girer.
🧠 Eventual Consistency Nedir?
Eventual Consistency, dağıtık bir sistemde:
Eğer sisteme yeni bir yazma işlemi gelmezse, zamanla tüm kopyaların aynı veriye ulaşacağını garanti eden tutarlılık modelidir.
Yani:
-
Anlık olarak tutarsızlık olabilir
-
Ama bir süre sonra veri senkronize olur
Bu “bilinçli bir ödün”dür.
⚖️ Strong Consistency vs Eventual Consistency
| Özellik | Strong Consistency | Eventual Consistency |
|---|---|---|
| Veri anında tutarlı mı? | ✅ Evet | ❌ Hayır |
| Gecikme (latency) | Yüksek | Düşük |
| Ölçeklenebilirlik | Sınırlı | Çok yüksek |
| Sistem karmaşıklığı | Düşük | Daha yüksek |
| Hata toleransı | Zayıf | Güçlü |
📐 CAP Teoremi ile İlişkisi
CAP Teoremi der ki:
Bir dağıtık sistem aynı anda Consistency, Availability ve Partition Tolerance özelliklerinin üçünü birden tam sağlayamaz.
Eventual Consistency:
-
Availability (A)
-
Partition Tolerance (P)
özelliklerini önceliklendirir.
Consistency’den bilinçli olarak ödün verir.
✅ Eventual Consistency Ne Zaman Kullanılır?
1️⃣ Yüksek Trafikli Sistemler
-
Sosyal medya
-
E-ticaret
-
Streaming platformları
Örnek:
Bir gönderinin like sayısının 2–3 saniye geç güncellenmesi sorun değildir.
2️⃣ Global Dağıtık Sistemler
Veri birden fazla kıtada tutuluyorsa:
-
Senkron replikasyon çok yavaştır
-
Network gecikmesi kaçınılmazdır
➡ Eventual Consistency zorunlu hâle gelir
3️⃣ Read-Heavy Sistemler
Okuma sayısı yazmadan fazlaysa:
-
Cache
-
Replica DB
-
CDN
kullanımı gerekir. Bunlar zaten eventual çalışır.
4️⃣ Mikroservis Mimarileri
Her servis kendi veritabanına sahipse:
-
Anlık tutarlılık mümkün değildir
-
Event tabanlı senkronizasyon gerekir
Örnek:
-
Sipariş servisi
-
Ödeme servisi
-
Kargo servisi
Hepsi aynı anda güncellenmez.
5️⃣ Asenkron Event-Driven Sistemler
Kafka, RabbitMQ, Pub/Sub gibi yapılar:
-
Mesajlar gecikmeli işlenir
-
Sistem eventual consistency varsayar
Bu, sistemin dayanıklı olmasını sağlar.
❌ Ne Zaman Kullanılmamalı?
Eventual Consistency her yerde doğru değildir.
🚫 Kullanılmaması gereken yerler:
-
Bankacılık transferleri
-
Finansal muhasebe
-
Stok sayımı (kritik senaryo)
-
Kimlik doğrulama sistemleri
Örnek:
“Parayı gönderdim ama 5 saniye sonra düşer”
➡ Kabul edilemez.
🧩 Gerçek Dünya Örnekleri
🟢 Amazon
-
Sepet
-
Öneri sistemi
-
Ürün görüntülenme sayısı
Eventual consistency kullanır.
🟢 Twitter / X
-
Like
-
Retweet
-
Follower sayısı
Anlık tutarlılık yoktur.
🟢 NoSQL Veritabanları
-
Cassandra
-
DynamoDB
-
Couchbase
Default olarak eventual consistency sunar.
⚠️ Riskler ve Dikkat Edilmesi Gerekenler
-
Stale data (eski veri) riski
-
Race condition ihtimali
-
Idempotent işlemler şart
-
Conflict resolution stratejileri gerekir
Yani:
Eventual Consistency = plansızlık değil
bilinçli mimari karardır
Bir Cevap Yaz
E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir.