Dağıtık kilitlemeyi uygulamak
- Redis web sitesinde Redlock algoritması keşfediliyor ve bu algoritmanın Redis üzerinde hataya dayanıklı dağıtık kilitleme uyguladığı iddia ediliyor.
- Redlock için birden fazla bağımsız uygulama zaten mevcut ve bu algoritmaya güvenen kişiler olabileceği için yazar notlarını paylaşmaya karar veriyor.
- Redis, geçici ve hızla değişen verileri sunucular arasında paylaşmak için faydalı olsa da, güçlü tutarlılık ve kalıcılık gerektiren veri yönetimi alanına genişletilmesi endişe verici.
Kilidin amacı
- Kilit, birden fazla düğüm arasından yalnızca birinin belirli bir işi yapmasını garanti etmeye yarar.
- Kilit verimlilik için kullanılıyorsa, tek bir Redis instance'ı kullanmak daha iyi olabilir.
- Kilit doğruluk için kullanılıyorsa, Redlock uygun değildir.
Kaynağı kilitle korumak
- Dağıtık sistemlerdeki kilitler, çok iş parçacıklı uygulamalardaki mutex'ten farklıdır.
- Bir istemci dosyayı okuyup değiştirip yeniden yazarken, başka bir istemcinin aynı işlemi yapmasını engeller.
Fencing ile güvenli kilit uygulamak
- Fencing token'ları yazma isteklerine dahil ederek güvenli bir kilit uygulanabilir.
- Redlock, fencing token'ı üretme özelliğine sahip olmadığı için güvenli değildir.
Uzlaşma için zamanı kullanmak
- Redlock, asenkron modeldeki algoritmaların aksine zamanla ilgili birçok varsayıma dayanır.
- Sistem saati anormal çalışırsa, anahtarın süresi beklenenden daha erken ya da daha geç dolabilir.
Redlock'un zaman varsayımlarını bozmak
- Redlock, senkron sistem modelini varsayar ve yalnızca ağ gecikmesi, süreç duraklaması ve saat hataları sınırlı olduğunda doğru çalışır.
- GitHub'daki 90 saniyelik paket gecikmesi olayı gibi vakalar Redlock'un güvenliğini tehdit edebilir.
Sonuç
- Redlock, verimlilik optimizasyonu amaçlı kilitler için gereksiz derecede ağır, doğruluk gerektiren durumlar içinse yeterince güvenli değildir.
- Doğruluk için kilide ihtiyaç varsa, ZooKeeper gibi uygun bir uzlaşma sistemi kullanmak daha iyidir.
GN⁺ özeti
- Redlock algoritması, dağıtık sistemlerde kilit uygulaması konusunda önemli bir tartışma sunar.
- Bu yazı, dağıtık sistemlerde zaman varsayımları ve güvenlik sorunlarını vurgulayarak doğru kilit uygulamasının önemini açıklar.
- ZooKeeper gibi alternatif sistemleri önerir ve dağıtık sistemlerin karmaşıklığını anlamaya yardımcı olur.
1 yorum
Hacker News görüşleri