« Tüm yayınlar

Dağıtık Sistemlerde 'Şimdi' Diye Bir Şey Yoktur

Einstein'ın görelilik kuramından ilhamla: NTP saat senkronizasyonu bir yanılsamadır. Mantıksal saatler, CAP teoremi ve TrueTime ile doğru sıralama nasıl sağlanır?

Bu yazı, Einstein'ın özel görelilik kuramındaki 'evrensel şimdi yoktur' fikrini dağıtık sistem mühendisliğine taşıyor. NTP ile senkronize edilen saatler aslında sadece birbirine 1-100 milisaniye yakınlıktadır; bu da 'timestamp A küçükse A önce olmuştur' varsayımını çoğu senaryoda geçersiz kılar. Servisler arası olay sıralaması, dağıtık kilitler, event sourcing replay'leri ve log korelasyonu gibi pek çok pratik durum bu yanlış varsayım yüzünden bozulabilir.

Çözüm, Lamport'un 1978'de önerdiği mantıksal saatler ve bunların genişletilmiş hali olan vektör saatlerdir; bunlar saat zamanına değil nedensellik ilişkisine dayanır. DynamoDB, Riak ve CRDT'ler gibi sistemler çakışan yazmaları bu şekilde yönetir. CAP teoremi de aslında ağ bölünmesi sırasında tutarlılık ile kullanılabilirlik arasında fiziksel bir seçim zorunluluğunu ifade eder — üçüncü bir yol yoktur.

Gerçek saat zamanının kaçınılmaz olduğu finansal işlemler, denetim kayıtları gibi durumlarda ise Google'ın Spanner'da kullandığı TrueTime API örnek alınabilir: zaman noktası yerine belirsizlik aralığı döndürülür. Yazının pratik önerisi net: nedensellik için mantıksal saatler kullanın, dağıtık durumlar için tutarlılık seviyesini veri türüne göre belirleyin, ve zaman damgalarını her zaman bir nokta değil bir aralık olarak düşünün.

» KaynakDev.to