Eventual consistency, dağıtık sistemlerde sıkça karşımıza çıkan ama ilk başta kafa karıştıran bir kavramdır.
Basitçe şunu söyler:
“Veri her yerde aynı anda tutarlı olmak zorunda değil, zamanla tutarlı olur.”
Bu yaklaşım, özellikle büyük ve ölçeklenebilir sistemlerin temel taşlarından biridir.
Klasik Tutarlılık Mantığı (Strong Consistency)
Geleneksel sistemlerde:
-
Bir veri güncellenir
-
Herkes aynı anda güncel veriyi görür
Bu güvenlidir ama pahalıdır:
-
Yavaşlar
-
Ölçeklenmesi zorlaşır
-
Dağıtık sistemlerde sorun çıkarır
Eventual Consistency Mantığı
Eventual consistency’de:
-
Veri güncellenir
-
Güncelleme sistemin farklı parçalarına zamanla yayılır
-
Kısa bir süre tutarsızlık olabilir
-
Ama sonunda herkes aynı veriye ulaşır
Yani:
“Şu an farklı olabilir ama birazdan aynı olacak.”
Neden Böyle Bir Şeye İhtiyaç Var?
Dağıtık sistemlerde:
-
Birden fazla servis
-
Birden fazla veritabanı
-
Farklı coğrafi bölgeler
Her şeyi aynı anda senkron tutmak:
-
Performansı düşürür
-
Sistemi kırılgan yapar
Eventual consistency burada sistemi rahatlatır.
Gerçek Hayat Örneği
Bir e-ticaret sitesi düşün:
-
Sipariş verdin
-
Stok hemen düşmeyebilir
-
Bildirim biraz gecikebilir
Ama birkaç saniye sonra:
-
Stok güncellenir
-
Bildirim gider
-
Sistem tutarlı hâle gelir
Bu eventual consistency’dir.
Event-Driven Sistemlerle İlişkisi
Event-driven mimarilerde:
-
Bir olay yayınlanır
-
Servisler bu olaya tepki verir
Her servis kendi hızında güncellenir.
Bu yüzden anlık tutarlılık beklenmez.
Eventual consistency bu yapının doğal sonucudur.
Avantajları
-
Yüksek performans
-
Kolay ölçeklenebilirlik
-
Servisler arası bağımlılığın azalması
-
Sistem dayanıklılığının artması
Büyük sistemler için büyük avantajdır.
Dezavantajları
-
Anlık tutarsızlıklar olabilir
-
Debug daha zordur
-
İş kuralları iyi tasarlanmazsa hatalar çıkar
Bu yüzden herkes için uygun değildir.
Ne Zaman Kullanılmalı?
-
Mikroservis mimarilerinde
-
Event-driven sistemlerde
-
Yüksek trafik alan uygulamalarda
-
Anlık tutarlılığın kritik olmadığı durumlarda
Banka bakiyesi gibi kritik alanlarda genelde tercih edilmez.
Junior ve Senior Farkı
Junior:
-
“Neden hemen güncellenmedi?” diye düşünür
Senior:
-
“Bu tutarsızlık kabul edilebilir mi?” diye sorar
Eventual consistency, sistem seviyesinde düşünmeyi gerektirir.
Benim Net Görüşüm
Eventual consistency:
-
Bir eksiklik değil
-
Bilinçli bir tercihtir
Doğru yerde kullanılırsa sistemi büyütür,
yanlış yerde kullanılırsa sorun üretir.
Bir Cevap Yaz
E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir.