Strong Consistency: qachon kerak
Strong Consistency - barcha operatsiyalar real vaqt bilan kelishilgan yagona global tartibda bir zumda va ketma-ketlikda bajarilayotgandek ko’rinadigan model. Foydalanuvchi oxirgi tasdiqlangan qiymatni o’qib chiqadi va ikkita parallel mijoz mantiqan bir-birini «ortda qoldirmaydi».
Qat’iy muvofiqlik oddiy aqliy modelni beradi va qattiq invariantlarni himoya qiladi, lekin muvofiqlashtirishni talab qiladi (kvorumlar/rahbar), bu esa tarmoqdagi bo’linishlarga nisbatan kechikish va sezgirlikni oshiradi.
1) Strong - majburiy bo’lganda
Moliya va hisob-kitoblar
Balanslar va hisobdan chiqarishga yo’l qo’yilmaydi.
O’tkazmalar va o’zaro hisob-kitoblar: bir xil summa ikki marta o’tkazilishi mumkin emas.
Inventar va limitlar
Tovar qoldiqlari/mehmonxonadagi joylar/chiptalar: salbiy qiymatlarga o’tish mumkin emas.
Vaqt birligidagi operatsiyalar limitlari (kredit limitlari, API-kreditlar).
O’ziga xoslik va yaxlitlik
Noyob loginlar/identifikatorlar/deduplikatsiya qoidalari.
Domen darajasidagi invariantlar: «bo’limda 1 ≥ shifokor navbatchilik qilishi kerak», «navbatda N aktiv vazifalar bo’lishi mumkin emas».
Audit va o’zgarmas jurnallar
Haqiqatning yuridik manbai bo’lgan voqealar: tartib va to’liqlik juda muhim.
Agar invariantning buzilishi nomaqbul biznes-xavf tug’dirsa (pul yo’qotish, sanksiyalar, ishonchni yo’qotish) - Strong Consistency-ni tanlang.
2) Aynan «qat’iy» nima
Linearizability (operatsion daraja): oʻqish eng soʻnggi muvaffaqiyatli yozuvni koʻradi; vaqt hurmatga sazovor.
Serializable (tranzaksiya darajasi): natija tranzaksiyalarni ketma-ket bajarishga teng (strong bo’lishi mumkin, lekin ba’zan qattiq real-time tartibsiz amalga oshiriladi).
Muhim farq: Serializable tranzaksiya darajasidagi anomaliyalardan (phantom/write-skew) himoya qiladi, Linearizable esa bitta operatsiyaning tezligi va tartibi haqida. Ko’pincha ikkala xususiyat ham kerak bo’ladi (masalan, DB + voqealar jurnalidagi pul).
3) Qattiqlik narxi: PACELC va CAP
PACELC: tarmoqni ajratishda (P) C (qattiqlik) yoki A (foydalanish imkoniyati) ni tanlash kerak. Strong → CP: invariantni buzishdan koʻra, rad etish yoki blokirovka qilish yaxshiroqdir. Bo’linish (EL) bo’lmaganda, L - muvofiqlashtirish/kvorumlar bilan p95/p99 o’sadi.
Amaliyot: «invariantlar yadrosi» uchun strong, uning atrofida - UX azob chekmasligi uchun eventual tezkor proyeksiyalar/keshlar.
4) Qanday qilib Strong Consistency
Yetakchilik va kvorumlar
Yagona rahbar yozuvlarni qabul qiladi; o’qish - rahbarda yoki kvorum bo’yicha replikalar.
’W’ kvorumi va’R’bilan oʻqish uchun’R + W> N’kvorumi «oxirgi» ni oʻqish imkoniyatini oshiradi.
Kelishish algoritmlari
Raft/Paxos: log replikatsiyalari, koʻpchilikni tasdiqlash, atama/indekslar.
Sinxron replikatsiya: yozuv faqat kvorumdagi persistentlikdan keyin tasdiqlanadi.
Soatlar va tartib
TrueTime/Hybrid Logical Clocks (HLC): xavfsiz global seriallashtirish uchun soatlar sonini cheklash.
Fence-tokenlar/versiyalash: «ertalabki» yetakchilar va split-breyndan himoya qilish.
Tranzaksiyalarni izolyatsiya qilish
Serializable (SI + mojarolarni tekshirish/predikatlar boʻyicha loklar): phantom/write-skew himoyasi.
Strict-serializable: seriyalanish + real vaqtga nisbatan liniyalanish.
5) Ko’p mintaqa: variantlar va murosalar
Global yetakchi (CP)
Yozuvlar bitta yetakchi mintaqadan o’tadi; oʻqish - mahalliy keshlar/proyeksiyalar yoki rahbar orqali.
Afzalliklari: oddiy model. Kamchiliklar: p95/RTT peshqadamgacha, P bilan - yozuvlarni blokirovka qilish.
Mintaqaviy yetakchilar + sinxron kvorum
Bir necha mintaqalardan geologik kengaytirilgan kvorum; har bir yozuv tasdiqlashni kutmoqda> 50%.
Afzalliklari: bitta «ensiz bo’yin», yuqori barqarorlik. Kamchiliklar: qit’alararo yashirin.
Geo-partitioning
Mintaqa uchun «uy» ma’lumotlari (tenant/yurisdiksiya); global operatsiyalar - sage/agregatlar orqali amalga oshiriladi.
Ijobiy tomonlari: lokal yozuvlar uchun past kechikishlar. Kamchiliklar: ma’lumotlar chegaralarini rejalashtirish.
6) R/W va oʻqishni moslash
Yozuvlar:’W = majority’- strong uchun standart.
Oʻqish:- «Eng yangi» -’R = majority’yoki rahbarning o’qishi.
- L - ikkinchi darajali ekranlar uchun replikalardan «stale-ok» oʻqishni kamaytirish uchun (UXda aniq markirovkalangan holda).
- O’qish-repair/lease o’qish: etakchining qisqa arenalarida qattiqlikni yo’qotmasdan optimallashtirish.
7) Unumdorlik va UX
Yashirin: mijoz va yetakchi/kvorum o’rtasidagi RTTga yo’naltiring (mintaqalararo yuzlab ms).
Pattern «write-strong, read-fast»: yozuvdagi strong + o’qishdagi kesh/proyeksiyalar, muallif uchun RYW bilan.
Batch/paketlar: yozuvlarni guruhlang, lekin quyruq latentligiga rioya qiling.
Degradatsiya konturlari: hodisada - read-only, halol maqomlar, xavfli mutatsiyalarni taqiqlash.
8) Strict-yo’lning kuzatilishi
Metrika
p50/p95/p99 latency: write-kvorum, read-kvorum, yetakchi o’qishlar.
Kvorumlar, takrorlar/qaytishlar, rahbar almashinuvining muvaffaqiyati.
Replikatsion lag (kutilayotgan kichik, lekin monitoring qilish shart).
«Steyl» oʻqish ulushi (agar kiritilgan boʻlsa).
Treysing
Spanlar: «rahbar qabul qilish», «replikatsiya», «kommit kvorum».
Теги: `term`, `leader_id`, `quorum_size`, `region`.
Alertlar
O’sish p95/p99, liderning tez-tez qayta saylanishi, kvorum-timeouts, split-brain indikatorlari.
9) Testlar va tartibsizlik
Jepsen kabi: tarmoq bo’linishlari, kechikishlar, to’siqlar, clock-skew.
Safety-invariantlar: ikki marta sarflash/salbiy qoldiqlar/ikki marta bron qilish imkonsizligi.
Yetakchilik: yetakchining rad etilishi, yuklama ostida qayta saylovlar, fence-tokenlar.
Oʻqish mosligi: yozilgandan soʻng darhol «yangi» (RYW/linearizable read) koʻrinishi kerak.
10) Hodisalar pleybuklari
Kvorumni yo’qotish: read-only-ga o’tkazish, mijozlarni xabardor qilish, geo-partitioning mavjud bo’lganda «uy» hududiga yozuv yuborish.
Latentlikning mintaqalararo o’sishi: qat’iy yozuvlar hajmini vaqtincha kamaytirish (navbat/proyeksiyadagi oqimlarning bir qismi migratsiyasi), trafikni mahalliylashtirish.
Etakchi flapi: saylov vaqtini ko’paytirish, tarmoqlarni/soatlik driftlarni/GC pauzalarini tekshirish.
Split-brain: fence-tokenlarni/lease-tekshirishlarni yoqish, eski rahbarlarni operator darajasida toʻxtatish.
11) Tipik xatolar
Strong «hamma joyda» ni talab qilish: invariantlarga fokuslash oʻrniga latentlik va qiymatni portlatish.
Haqiqiy bo’linishda CA bo’lishga harakat qilish: P paytida tizim hali ham tanlov qiladi, ko’pincha noaniq.
Dual-write turli mintaqalarga saga/koordinatorsiz: fantomlar va invariantlarni yo’qotish.
RYW yo’qligi: foydalanuvchi o’zining yangi yozilgan mohiyatini - ishonchning pasayishini ko’rmaydi.
Soatni eʼtiborsiz qoldirish: HLC/TrueTime chegaralarisiz «sakrash» vaqti va poygasini olish oson.
Tanazzul rejasi yoʻq: P xaotik qisman nosozliklarni boshlaydi.
12) Tez yechimlar (retseptlar)
To’lovlar/balanslar: yetakchi + majority-kvorum; strict-serializable tranzaksiyalari; qisqa taymautlar, P.da qattiq nosozlik.
Bron qilish (joylar/slotlar): write-strong yetakchi orqali, o’qish - RYW bilan kesh; TTL-zaxiralar + TCC.
Global SaaS: geo-partition po’tenant/region’; uy hududida qattiq operatsiyalar, hisobotlar/qidiruv - proyeksiyalar orqali amalga oshiriladi.
Audit/jurnal: append-only CP-jurnal; oʻqishni keshlash mumkin, lekin nazorat nuqtalari bilan tekshirish mumkin.
13) Sotishdan oldingi chek-varaq
- Strong talab qiladigan invariantlar yozilgan; qolganlari - AR/proyeksiyada.
- Tanlangan rejim: yagona yetakchi/mintaqalararo kvorum/geo-partition.
- ’W = majority’,’R = leader’majority’uchun moslashtirilgan.
- UX uchun RYW/monotonic bilan ta’minlangan; «stale-ok» deb aniq belgilangan.
- Kvorum, lag, latentlik metrikalari kiritilgan; p95/p99 ga alertlar va qayta saylanish.
- Degrade-reja bor: o’qish-only, xavfli mutatsiyalarni o’chirish, «bo’rondan keyin» navbatlar.
- Xaos-testlar: bo’linishlar, clock-skew, rahbarning rad etishi; safety invariantlar tekshirildi.
- Kontraktlar hujjatlari: qat’iy, «orqada qolishi» mumkin bo’lgan narsa, mahsulot/qo’llab-quvvatlash uchun aloqa.
Xulosa
Strong Consistency - xato qabul qilinmaydigan joyda haqiqatni himoya qilish vositasi. Uni qattiq invariantlar atrofida aniq qo’llang, qasddan bo’ron paytida yashirin va kirish imkoniyatini muvofiqlashtirish uchun pul to’lang. Qo’shing: tanqidiy, AP o’qish va tezlik proyeksiyalari uchun CP yadrosi. To’g’ri telemetriya, degradatsiya va testlar bilan siz to’g’ri va foydalanuvchi tajribasini saqlab qolasiz.