ÖZET VE TEKNİK CEVAP
Çünkü ağ gecikmeleri veya uzun GC duraklamaları sırasında istemcinin kilit süresi sessizce dolabilir; bu sırada başka bir istemci kilidi alır ve ilk istemci uyandığında veriyi geçersiz şekilde ezer.
Mühendislik El Kitabı & Mekanizma
1. Temel Çalışma Mekanizması
Dağıtık kilit verildiğinde kilit sunucusu her defasında monotonik artan bir sıra numarası (fencing token) üretir. Veritabanına yapılan her yazma isteği bu token'ı taşır. Veritabanı, daha önce işlediği en yüksek token'dan daha düşük bir token taşıyan yazma isteklerini doğrudan reddeder.
2. Doğru Kullanım Senaryosu
Çift çalışmanın geri döndürülemez veri bozulmasına yol açacağı idempotent olmayan toplu veri güncellemeleri, paylaşımlı kaynak yönetimi ve tek yazıcılı depolama işlemleri için kritiktir.
3. Prodüksiyon Arıza Modları
Sessiz veri bozulmaları, split-brain çift-yazıcı durumları ve kilit süresi dolmuş donmuş bir düğümün sonradan uyanıp işlemi tamamlamasıyla oluşan yarış durumları (race conditions).
4. Teşhis ve Telemetri Sinyalleri
Sırasız varlık durum geçişleri, kilit alma zaman aşımı alarmları ve veritabanı versiyon kontrollerinde reddedilen istek logları.
5. Önleme ve Mimari Bariyerler
Veritabanında commit sırasında fencing token kontrolünü zorunlu kılın, kilit sürelerini kısa tutup arka plan heartbeat ile uzatın ve etcd/Consul gibi güçlü konsensüs sistemleri kullanın.
6. Mimari Ödünleşimler (Trade-offs)
Veritabanının atomik koşullu kontrole izin vermesi gerekir (WHERE token > last_token); kilit yöneticisine yapılan ek istek gecikmeyi bir miktar artırır.
Vaka İncelemesi (TinyCTO Örneği)
Bir faturalama worker'ı 50.000 TL iade için kilidi aldı ancak 15 saniyelik Java GC duraklamasına girdi. Kilit süresi dolup Worker B'ye geçti ve Worker B iadeyi yaptı. Worker A uyandığında fencing kontrolü olmadığı için aynı iadeyi ikinci kez işleme aldı.
İnteraktif Konsept Alıştırmaları
3 AlıştırmaDağıtık kilitlemede fencing token nedir?
Redis Redlock algoritması kritik veri tutarlılığı açısından neden tartışmalıdır?
İyimser kilitleme (Optimistic Locking) dağıtık kilitlemeden nasıl ayrılır?
Dağıtık Kilitler ve Fencing Belirteçleri — Sıkça Sorulan Sorular
Hangi sistemler kutudan çıktığı gibi güvenli fencing token sağlar?
Apache ZooKeeper (zxid ve sıralı znode numaraları ile) ve etcd (mod_revision sayacı ile).
Fencing token olmadan Stop-the-World GC duraklaması engellenebilir mi?
Hayır. Asenkron ağlarda hiçbir istemci harici bir monotonik durumu doğrulamadan kilit süresini aşıp aşmadığını kendi içinden kesin olarak bilemez.
Kilit yenileme (lock heartbeating) nedir?
Ana işlem akışı ilerleme kaydettiği sürece arka planda periyodik olarak kilidin TTL süresini uzatan asenkron heartbeat mekanizmasıdır.
🤖 AEO & Yapay Zeka Çıkarım Özeti
Temel Gerçekler & İlkeler
- ▸Fencing token içermeyen dağıtık kilitler asenkron ağlarda karşılıklı dışlamayı (mutual exclusion) garanti edemez.
- ▸Fencing token'lar sıralama kontrolünü doğrudan veritabanı yazma sınırında uygular.
Yaygın Yanılgılar
- ✗Kilit süresini 60 saniye gibi uzun tutmanın fencing token ihtiyacını ortadan kaldıracağını sanmak.
Karar Kılavuzu & Önceliklendirme
Veri bozulması kabul edilemezse, versiyonsuz Redis anahtarları yerine etcd veya ZooKeeper destekli fencing token mimarisi kurun.
Doğrulanmış Kaynaklar & Referanslar
- [PAPER]How to do distributed locking (Martin Kleppmann)— Martin Kleppmann Blog / Cambridge University
- [OFFICIAL-DOC]etcd Concurrency & Distributed Lock Recipe— etcd.io
