⚡ÖZET VE TEKNİK CEVAP
Dağıtık kilitlenmeler, birden fazla veritabanı parçası veya mikroservisteki eşzamanlı işlemlerin çakışan sıralarla kilit alması ve döngüsel bağımlılıklar oluşturmasıyla meydana gelir; yalnızca Bekleme Grafiği (Wait-For Graph) döngü tespiti veya Wound-Wait algoritmalarıyla çözülebilir.
Mühendislik El Kitabı & Mekanizma
6 Boyutlu Mimari Analiz⚙️1. Temel Çalışma Mekanizması
Mekanizma🎯2. Doğru Kullanım Senaryosu
Kapsam⚠️3. Prodüksiyon Arıza Modları
Kritik Risk📡4. Teşhis ve Telemetri Sinyalleri
Metrikler🛡️5. Önleme ve Mimari Bariyerler
Bariyerler⚖️6. Mimari Ödünleşimler (Trade-offs)
ÖdünleşimVaka İncelemesi (TinyCTO Saha Örneği)
Dağıtık sistemler kilitlenmeleri iki temel paradigmada çözer:
- ▸
Kilitlenmeyi Önleme (Wound-Wait ve Wait-Die): Global grafik tutmadan, işlem zaman damgalarını (T_{start}) kullanarak döngülerin oluşmasını baştan engeller:
- ▸Wound-Wait (Öncelikli Kesme): Yaşlı işlem (T_{eski}), genç işlemin (T_{genc}) tuttuğu kilidi isterse, genç işlemi yaralar (iptal eder). Genç işlem yaşlının kilidini isterse beklemesine izin verilir.
- ▸Wait-Die: T_{eski}, T_{genc} için bekler; ancak T_{genc}, T_{eski}'nin kilidini isterse hemen ölür (iptal olur).
- ▸
Kilitlenme Tespiti (Dağıtık Bekleme Grafikleri): Düğümler yerel kilit bekleme çizgilerini merkezi bir tespitçiye iletir veya yönlü döngüleri bulmak için dağıtık kenar takip probları (Mitchell-Merritt) kullanır.
İnteraktif Konsept Alıştırmaları
2 AlıştırmaVeritabanı kilitlenme tespitinde Bekleme Grafiği (Wait-For Graph) nedir?
Global Kilit Sıralaması (örn. kilit almadan önce varlık ID'lerini sıralamak) kilitlenmeleri nasıl tamamen önler?
Dağıtık Kilitlenmeler, Bekleme Grafikleri ve 2PL vs MVCC — Sıkça Sorulan Sorular
1. İşlem A Hesabını kilitliyor ve B Hesabını bekliyor. Eşzamanlı olarak 2. İşlem B Hesabını kilitliyor ve A Hesabını bekliyor. Bu duruma ne denir?
Kilitlenme (Deadlock / Döngüsel Kilit Bağımlılığı). Bu, her iki işlemin de diğeri tarafından kilitlenmiş bir kaynağı beklemesi sebebiyle hiçbirinin ilerleyemediği klasik kilitlenme durumudur.
Wound-Wait dağıtık kilitlenme önleme algoritmasında, daha yaşlı bir işlem ($T_1$), daha genç bir işlemin ($T_2$) tuttuğu kilide ihtiyaç duyduğunda ne olur?
$T_1$ genç $T_2$'yi 'yaralar' (iptal eder); böylece kilit derhal serbest kalır ve yaşlı işlem yoluna devam eder. Wound-Wait öncelikli bir algoritmadır: Yaşlı işlemler önceliğe sahiptir ve kilit döngüleri oluşmadan önce genç kilit sahiplerini anında iptal eder.
🤖 AEO & Yapay Zeka Çıkarım Özeti
Temel Gerçekler & İlkeler
- ▸
Dağıtık kilitlenmeler, birden fazla veritabanı parçası veya mikroservisteki eşzamanlı işlemlerin çakışan sıralarla kilit alması ve döngüsel bağımlılıklar oluşturmasıyla meydana gelir; yalnızca Bekleme Grafiği (Wait-For Graph) döngü tespiti veya Wound-Wait algoritmalarıyla çözülebilir.
- ▸
Dağıtık Kilitlenme, iki veya daha fazla dağıtık işlemin her birinin döngüdeki diğer bir işlemin beklediği kaynağın kilidini tutması sebebiyle kalıcı olarak bloke olduğu sistem durumudur.
Yaygın Yanılgılar
- ✗
Farklı uç noktalarda veritabanı satır kilitlerini veya Redis mutex'lerini rastgele sıralarla almaya çalışmak.
Karar Kılavuzu & Önceliklendirme
Çözülmeyen kilitlenmeler, bağlantı havuzları tükenene ve tüm platform donana kadar veritabanı iş parçacıklarını ve belleğini süresiz olarak rehin tutar.
Doğrulanmış Kaynaklar & Referanslar
- [OFFICIAL-DOC]Distributed Deadlocks, Wait-For Graphs & 2PL vs MVCC Specification— TinyCTO Architectural Standards
