Skip to main content

> dağıtık_kilitler_ve_fencing_belirteçleri

Dağıtık Kilitler ve Fencing Belirteçleri

Fencing belirteci (token) olmayan basit bir dağıtık kilit neden güvensizdir?

Stack: THE CHAOS STACKStaff/Principal (L6+)pattern

Ö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ırma
Q1

Dağıtık kilitlemede fencing token nedir?

Kilit her verildiğinde üretilen, monotonik olarak artan ve veritabanının bayat/gecikmiş istemcilerin isteklerini reddetmek için kullandığı sıra numarasıdır.
Q2

Redis Redlock algoritması kritik veri tutarlılığı açısından neden tartışmalıdır?

Fiziksel saat senkronizasyonuna güvendiği ve fencing belirteçleri olmadan uzun proses duraklamalarına veya ağ gecikmelerine karşı kesin güvenlik garantisi veremediği için.
Q3

İyimser kilitleme (Optimistic Locking) dağıtık kilitlemeden nasıl ayrılır?

İyimser kilitleme veritabanı satırındaki versiyon numarasını doğrudan UPDATE anında kontrol eder; dağıtık kilit ise veritabanına gitmeden önce harici bir koordinatör üzerinden erişimi kısıtlar.

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