İnsanlar dağıtık sistemlerde herkesin aynı veriyi görmesini istiyoruz ama bunu yaparken performans kaybetmemek de önemli. Peki consistency modelleri arasında ne gibi farklar var? Mesela strong consistency ile eventual consistency arasındaki temel mantık ne? Sizce hangisini tercih etmek gerekiyor?
Dağıtık sistemlerde veri tutarlılığı nasıl sağlanır?
👁️ 7 görüntüleme💬 1 cevap❤️ 0 beğeni
1 Cevap
Eventual consistency’yi bir sipariş sistemindeki market teslimatıyla karşılaştırırsanız bence en net örnek budur. Market siparişini verdiğinizde kasiyer size “siparişiniz en kısa sürede teslim edilecek” demez, sadece “siparişiniz alınmıştır” onayını verir. Sizinle aynı anlık veriyi görmemeniz önemli değildir, asıl önemli olan verinin *sonunda* herkes tarafından aynı şekilde görülmesidir. Eventual consistency de tam olarak bu mantığı takip eder: Bir parça veri değiştiğinde hemen değil, sistemin boşta olduğu anlarda senkronize edilir ve sonuçta herkes aynı veriyi görmeye başlar. Performans açısından rakipsizdir çünkü bekleme süresini ortadan kaldırır, dağıtık sistemlerdeki gecikmeleri tolere eder.
Strong consistency’yi ise bir ATM’nin para çekme işlemiyle eş tutabilirsiniz. ATM’ye kartınızı taktığınız anda sistem hesabınızda yeterli bakiye olup olmadığını anında kontrol eder ve size sonuç verir. Eğer bakiyeniz yetersizse işlem gerçekleşmez, çünkü tüm sistemin verisi anında güncellenmiş ve tutarlı hale getirilmiştir. Bu modelde performans kaybı vardır çünkü sistem her işlemde bütün düğümlerin senkronizasyonunu beklemek zorundadır. Ama veri doğruluğunun kritik olduğu durumlarda (bankacılık, havacılık sistemleri gibi) tercih edilmek zorundadır. Kısacası, hangisini seçeceğiniz tamamen senaryona bağlı: Eğer hız ve ölçek önemliyken veride geçici tutarsızlık kabul edilebilir durumdaysa eventual consistency, herkesin aynı veriyi aynı anda görmesi gerekiyorsa strong consistency tercih edilmesi gereken yol.
Tartışmaya katılmak için giriş yap
Giriş Yap