Lease — resource, lock, leadership yoki huquqni cheklangan vaqt uchun beradigan distributed systems mexanizmi. Lease egasi faqat muddati tugamaguncha resource ustida amal qilish huquqiga ega. Huquqni davom ettirish uchun lease yangilanadi.
Oddiy lock egasi yo‘qolsa cheksiz qolib ketishi mumkin. Lease esa vaqt tugagach avtomatik yaroqsiz bo‘ladi.
Lease egasi
Client yoki node lease olish uchun coordinator yoki storage’ga murojaat qiladi.
Lease record:
saqlashi mumkin.
Bir vaqtda faqat bitta active owner bo‘lishi talab qilinishi mumkin.
Expiration
Lease ma’lum muddatgacha amal qiladi.
Masalan:
lease duration = 30 soniya
Owner 30 soniya ichida yangilamasa boshqa node lease olishi mumkin.
Expiration coordinatorning ishonchli vaqtiga asoslanadi.
Renewal
Owner lease tugashidan oldin heartbeat yoki renew request yuboradi.
Renew muvaffaqiyatli bo‘lsa expiration oldinga suriladi.
Network muammosida owner renew javobini ololmasligi mumkin.
U lease hali active deb taxmin qilmasligi kerak.
TTL
Lease Time To Live bilan bog‘liq.
TTL tugashi ownership tugaganini bildiradi.
Cleanup darhol fizik recordni o‘chirmasligi mumkin.
Authorization har operationda current lease holatini tekshiradi.
Distributed lock
Lease distributed lock sifatida ishlatilishi mumkin.
Masalan:
Critical section lease durationdan uzun davom etsa renewal kerak.
Leader election
Node’lardan biri leader lease oladi.
Leader:
- schedule;
- partition assignment;
- metadata update;
- coordination
vazifasini bajaradi.
Lease tugasa boshqa node leader bo‘lishi mumkin.
Split-brain xavfi
Eski leader network partition sabab renew qila olmaydi, ammo o‘zini leader deb o‘ylashda davom etishi mumkin.
Yangi leader lease oladi.
Ikkalasi bir vaqtda write qilsa split-brain yuz beradi.
Faqat expiration yetarli himoya emas.
Fencing token
Har yangi lease uchun monoton oshuvchi token beriladi.
Masalan:
lease A → token 41
lease B → token 42
Storage faqat eng katta valid tokenli write’ni qabul qiladi.
Eski owner token 41 bilan kech request yuborsa rad etiladi.
Clock muammosi
Client local soati noto‘g‘ri yoki sakrashi mumkin.
Lease expirationini faqat client wall clock bilan baholash xavfli.
Coordinator server va monotonic timer ishlatadi.
Client renew muvaffaqiyatsiz bo‘lsa xavfsiz tomonni tanlaydi.
Lease duration
Juda qisqa lease:
- ko‘p renewal traffic;
- vaqtinchalik network kechikishida leadership almashishi;
- thrashing.
Juda uzun lease:
Duration network va operation latency’siga mos tanlanadi.
Safety margin
Owner lease tugashiga juda yaqin critical operation boshlamaydi.
Masalan, 30 soniyalik lease’da qolgan 1 soniya bilan 10 soniyalik write boshlash xavfli.
Renew oldindan bajariladi yoki operation deadline lease’dan qisqa bo‘ladi.
Session
Lease client session yoki ephemeral membership sifatida ishlatilishi mumkin.
Heartbeat yo‘qolsa:
- service instance registry’dan chiqadi;
- lock bo‘shaydi;
- temporary node o‘chadi;
- task qayta taqsimlanadi.
Session va network partition semantikasi bir xil emas.
Resource cleanup
Lease tugaganda reservation yoki temporary resource tozalanadi.
Ammo egasi hali ishlayotgan bo‘lishi mumkin.
Cleanup operationlari fencing token bilan himoyalanadi.
Lease va lock
Oddiy lock explicit release talab qiladi.
Lease vaqt bilan avtomatik tugaydi.
Lease availabilityni yaxshilaydi, ammo time va stale owner muammosini kiritadi.
Ikkalasi local transaction lockidan farq qiladi.
Lease va heartbeat
Heartbeat owner tirikligini taxmin qiladi.
Lease esa heartbeat kelmasa ownershipni tugatish qoidasi beradi.
Pause, overload yoki network delay tirik nodeni o‘lik deb baholashi mumkin.
Failure detector perfect emas.
Garbage collection pause
Runtime uzoq pause qilsa owner renewal yubora olmaydi.
Lease boshqa node’ga o‘tadi.
Pause tugagach eski node critical sectionni davom ettirishi mumkin.
Fencing token aynan shu holatdan himoya qiladi.
Persistent task
Worker task lease oladi.
Agar worker crash qilsa lease tugagach boshqa worker taskni oladi.
Task qayta bajarilishi mumkin.
Handler idempotent va checkpointli bo‘lishi kerak.
Storage
Lease state strong consistencyga ega coordinator’da saqlanishi kerak.
Eventual replicated cache ikki ownerga bir vaqtda lease berishi mumkin.
Consensusga asoslangan key-value store yoki database conditional update ishlatilishi mumkin.
Observability
Kuzatiladi:
- active lease;
- owner;
- expirationgacha vaqt;
- renewal failure;
- leadership change;
- token;
- expired task;
- split-brain rad etilgan write.
Tez-tez lease almashishi network yoki resource muammosini ko‘rsatadi.
Monotonic vaqt
Lease durationni o‘lchash uchun wall clockdan ko‘ra monotonic clock xavfsizroq.
Wall clock administrator yoki synchronization sabab orqaga sakrashi mumkin.
Distributed expirationning authoritative qiymati baribir coordinator tomonida saqlanadi.
Lease transfer
Ba’zan owner lease’ni muddat tugashini kutmasdan boshqa node’ga topshiradi.
Transfer eski ownerni fencing qilib, yangi token yaratadi.
Faqat “release” message’iga ishonish network delay sabab xavfli bo‘lishi mumkin.
Quorum
Lease coordinator replicated bo‘lsa ownership qarori majority orqali commit qilinadi.
Minority partition yangi lease bera olmaydi.
Bu availabilityni kamaytiradi, ammo ikki active owner xavfini cheklaydi.
Bog‘liq tushunchalar
Distributed lock, Leader election, TTL, Heartbeat, Fencing token, Split-brain, Consensus, Session, Failure detector, Idempotency