CAP va muhandislik murosalari
CAP: tarmoqni ajratish (Partition, P) sharoitida taqsimlangan tizim bir vaqtning o’zida kuchli muvofiqlikni (Consistency, C) va foydalanish imkoniyatini (Availability, A) kafolatlay olmaydi. Agar P mavjud boʻlsa, CP yoki AP ni tanlashingiz kerak. Bo’linishlar mavjud bo’lmaganda, cheklov amal qilmaydi, lekin boshqa murosalar paydo bo’ladi - eng avvalo kechikish (latency) va qiymat.
Amaliy muhandislik CAP doirasidan tashqarida: PACELC muhim (agar P - C yoki A ni tanlasak; aks holda - Latency va Consistency), muvofiqlik modellari, SLA/SLO, yuzkeyslar va biznes xavflarini tanlaymiz.
1) Bazaviy ta’riflar (falsafasiz)
Muvofiqlik (C): barcha mijozlar bir xil natijani «go’yo» operatsiyalar ketma-ket bajarilayotgandek ko’rishadi (lineirlash/strong consistency).
Foydalanish imkoniyati (A): yiqilmagan tugunga har bir so’rov hatto bo’linganda ham oqilona vaqtda javob berish bilan tugaydi.
Ajratish (P): uzellar/mintaqaviy klastyerlar o’rtasidagi aloqaning yo’qolishi yoki sezilarli darajada buzilishi; aslida - katta miqyosda «muqarrar».
PACELC: Pda C yoki A ni tanlaymiz; else (P bo’lmaganda) L (past kechikish) yoki C (kuchli kelishuv) ni tanlaymiz.
2) Intuitiv tanlov surati
CP (muvofiqlik muhimroqdir): ajratishda ba’zi so’rovlarni rad etamiz/blokirovka qilamiz. Pul, tranzaksiyalar, qoldiqlarni hisobga olish uchun mos keladi.
AP (foydalanish muhimroq): biz doimo javob beramiz, lekin vaqtinchalik kelishmovchilikka yo’l qo’yamiz, so’ngra mojarolarni (CRDT/merj qoidalari) buzamiz. Soc-fid, layk hisoblagichlari, keshlangan profillar uchun mos keladi.
CA (bir vaqtning o’zida C va A): faqat P yo’qligida, ya’ni tarmoq sog’lom bo’lganda mumkin. «CA» ning haqiqiy ekspluatatsiyasi dizaynning xususiyati emas, balki vaqtinchalik holatdir.
3) PACELC: kechikish haqida unutmang
P boʻlmaganda, tanlash koʻpincha past latentlik (L) va kuchli muvofiqlik (C) oʻrtasida boʻladi:- Mintaqalar o’rtasidagi kuchli mutanosiblik = qit’alararo kvorumlar ⇒ p95 ga o’nlab-yuzlab ms.
- Lokal o’qish (past L) = zaif kafolatlar (read-my-writes, bounded staleness, eventual).
- PACELC nima uchun «tez va qat’iy» global miqyosda kamdan-kam uchraydigan narsalarni tushuntirishga yordam beradi: yorug’lik bir lahzada emas, balki kvorumlar tarmoqning kattaligi bilan o’sadi.
4) Muvofiqlik modellari (tezkor spektr)
Linearizable/Strong: xuddi bitta ketma-ket tartib.
Serializable: tranzaksiyalarning muayyan ketma-ket tartibiga teng (yozuvlar darajasidan yuqori).
Read-your-writes/Monotonic reads: mijoz o’z yozuvidan keyin yangi qiymatni o’qiydi.
Bounded staleness: oʻqish N/ Δ t dan ortda qolmaydi.
Eventual consistency: vaqt oʻtishi bilan barcha nusxalar birlashadi; mojarolarni hal qilish kerak.
5) CP va AP patternlari mahsulotlar va protokollarda (konseptual jihatdan)
CP yondashuvlari: kvorum jurnallari/yetakchilik (Raft/Paxos), qatʼiy tranzaksiyalar, global yetakchi joylar, sinxron replikatsiya. Narx - P da so’rovlarning bir qismini rad etish va kechikishlarning ko’payishi.
AP yondashuvlar: multi-master/multi-lider, CRDT, gossip-tarqatish, asinxron replikatsiya, mojarolarni hal qilish (LWW, vektor soatlar, domen merj funksiyalari). Narx - domen qoidalarining vaqtinchalik nomuvofiqligi va murakkabligi.
6) Ko’p mintaqadagi murosalar
Global yetakchi (CP): oddiy mantiq, ammo «uzoq» hududlar yashirin to’lovlarni amalga oshiradi; P - yozuvlarni bloklash.
Lokal yetakchilar + asinxron (AP): yozuv tezkor lokal, so’ngra replikatsiya; ziddiyatli o’zgarishlar merjni talab qiladi.
Geo-partitioning: ma’lumotlar foydalanuvchi/yurisdiksiyaga yaqinroq «yashaydi»; kross-mintaqa - faqat agregatlar.
Dual-write saqsiz taqiqlangan/CRDT: aks holda fantomlar va ikki marta hisobdan chiqariladi.
7) Muhandislik invariantlari va biznes yechimlari
Birinchidan, invariantlar: hech qachon buzmaslik kerak bo’lgan narsa (ikki marta sarflash, salbiy qoldiq, kalitning o’ziga xosligi) va eventual (ko’rish hisoblagichi, tavsiyalar) nimani «boshdan kechirmoqda».
Keyin tanlash:- Tegishli operatsiyalar uchun «qattiq» → CP invarianti.
- «Yumshoq» → AP invarianti, keyinchalik qulab tushadi.
8) Murosalarni yumshatish texnikasi
Kesh va CQRS: yaqin kesh/proyeksiya (AP) orqali oʻqish, qattiq jurnalga (CP) yozish.
RPO/RTO murosa tili sifatida: qancha ma’lumotlarni yo’qotish (RPO) va qanday tez tiklash (RTO).
Kelishilgan ID va soatlar: monoton taymstamplar (Hybrid/TrueTime-yondashuvlar), ULID/Snowflake.
Sagi/TSS: global blokirovkalar o’rniga biznes kompensatsiyalar.
CRDT va domen merj: kolleksiyalar, hisoblagichlar, «oxirgi g’alabalar» uchun.
Bounded staleness: UX va aniqlik balansi.
9) Kuzatish, SLO va hodisalarni boshqarish
SLO latentlik bo’yicha (p50/p95/p99) alohida o’qish/yozish va mintaqalar uchun.
Mintaqa feyloverini hisobga olgan holda foydalanish imkoniyati boʻyicha SLO.
Lag replikatsiyalar/ziddiyatlar: nizolar ulushi, o’rtacha hal qilish vaqti.
P belgisi bo’yicha alertlar: mintaqalararo kanallar vaqtining ko’payishi, kvorum xatolarining ko’payishi.
Degrade-rejalar: read-only rejim, keyinchalik merj bilan mahalliy xizmat ko’rsatish, «qimmat» funksiyalarni o’chirish.
10) Strategiyani tanlash chek-varaqasi
1. Qanday invariantlarni buzmaslik kerak? Eventual nimaga yoʻl qoʻyadi?
2. Past yashirin kross-mintaqaviy yozuv kerakmi?
3. Maqsadli SLO (yashirin/arzon) va qiymati (egress/replikatsiyalar) qanday?
4. Manual merge yoki faqat avtomat (CRDT/qoidalar) ga ruxsat beriladimi?
5. Tarmoq nosozligi: chastotasi, davomiyligi, blast radius?
6. Maʼlumotlarning huquqiy lokalizatsiyasi (residency) bormi?
7. Ma’lumotlar/operatsiyalarning har bir turi uchun qaysi muvofiqlik modeli maqbuldir?
8. Laglar, mojarolar, kvorumlarning holatini qanday kuzatasiz?
9. P tizimida nima qiladi: bloklaydi, buzadi, trafikni ajratadi?
10. P dan keyin ma’lumotlarni tiklash va repatriatsiya qilish rejasi qanday?
11) Tipik xatolar
«CA» ni abadiy ta’qib qilish. Birinchisida P ni oldindan tanlash kerak.
Merj qoidalarisiz global ko’p usta. Mojarolar ma’lumotlar va ishonchni yo’qotadi.
Kuchli konsistentsiya «hamma joyda». Ortiqcha kvorumlar p95/p99 va byudjetga tushadi.
Dual-write tranzaksiyasiz/saqsiz. Yo’qolgan invariantlar va fantomlar.
PACELC’ni eʼtiborsiz qoldirish. Tinchlik davrida yashirin, bo’ronda esa ochiq.
Nizolar va laglarning nol telemetriyasi. Muammolar faqat foydalanuvchiga koʻrinadi.
12) Tezkor retseptlar
To’lov/balans: kvorumli CP-saqlash joyi; yozuvlar faqat rahbar orqali; o’qishlar keshga o’tkazilishi mumkin, ammo tanqidiy UX - o’qish-your-writes.
Kontent/fid: AP-replikatsiya + CRDT/merj qoidalari; P - mahalliy xizmat ko’rsatish, so’ngra urish.
Global SaaS: geo-partitioning po’tenant/region’; «uy» mintaqasidagi qat’iy operatsiyalar (CP), hisobotlar/qidiruv - asinxron proyeksiyalar (AP) orqali.
Real-taym signaling: Anycast/edge + AP-shina; tanqidiy buyruqlar tasdiqlangan kanal (CP) orqali o’tadi.
Audit/jurnal: CP kafolatli yagona haqiqat manbai (append-only), atrofda - keshlar va proyeksiyalar.
13) Arxitekturaning mini-etaloni (so’zma-so’z)
Write-core (CP): etakchi + kvorum replikatsiyasi, qattiq invariantlar, xizmatlararo effektlar uchun saga.
Read-plane (AP): materiallashtirilgan tasavvurlar, keshlar, search indekslari, asinxron yangilanishlar.
Geo-routing: foydalanuvchilar «uy» hududiga tushadi; P - lokal rejim + keyingi replikatsiya.
Mojaro dvigateli: CRDT/qoidalar; nizolar jurnali va qo’lda hal etish vositalari.
Kuzatish darajasi: kvorumlar treysingi, laglar, tarmoq hodisalari xaritasi.
14) Kechikishlarning amaliy matematikasi (oddiy baho)
Optika ≈ 1000 km uchun 5 ms (RTT bundan ham katta). Qit’alararo kvorumlar → p95 oson> 150-250 ms.
Yozish uchun har qanday «global Strong» - bu qimmat so’rov. Agar UX <100-150 ms talab qilsa, mahalliy write-home + asinxron oqibatlari haqida o’ylab ko’ring.
15) Bo’linishlar bo’yicha siyosatlar
CP-yo’l: kvorumdan tashqari yozuvlarni bloklash; read-only qo’shish; foydalanuvchiga halol maqomlar berish.
AP-yo’l: mahalliy xizmat ko’rsatish; versiyalarni markalash; qayta tiklashda - determinizatsiya qilingan merj; nizolarni tahlil qilish navbatiga qo’yish.
Xulosa
CAP - bu dogma emas, balki eslatma: tarmoqni ajratish muqarrar va loyiha bo’ronda nimani qurbon qilishni oldindan tanlashi kerak - kirish yoki qat’iy muvofiqlashtirish. PACELC ochiq havoda kechikishning asosiy oʻqini qoʻshadi. Strategiyalarni birlashtiring: CP yadrosini invariantlar muqaddas bo’lgan joyda va AP tekisligini tezlik va barqarorlik muhimroq bo’lgan joyda saqlang. Telemetriya, degradatsiya rejalari va merj jarayonlarini qo’ying - tizim ham ma’lumotlarni, ham foydalanuvchi ishonchini saqlaydi.