Tizim dizayni kursi · 11-mavzu
TuzdiDinMuhammad

CAP Theorem — izchillik vs mavjudlik

Taqsimlangan tizimlarning asosiy qonuni: tarmoq bo‘linganda izchillik (C) yoki mavjudlik (A)ni tanlashga majbursan — chunki bo‘linishga chidamlilik (P) muqarrar. Noldan boshlab uch xususiyat, CP vs AP, amaliy misollar va PACELC kengaytmasi orqali arxitektura qarorlarining nazariy poydevorini o‘rganamiz.

Xususiyat: nazariy poydevorMavzular: C/A/P · CP vs AP · PACELCBog‘liq: 7-mavzu (Replikatsiya), 9 (CQRS)

Bu darsda nima bor

1–4-qismlar CAP’ni noldan quradi: nega kerak, uch xususiyat (C, A, P), P nega majburiy va CP vs AP tanlovi. 5–6-qismlar — amaliy misollar (qaysi baza qaysi lager), biznes tanlovi va PACELC kengaytmasi. 7-qism arxitektura qarorini qanday qilishni hal qiladi. Bu mavzu kursning ko‘p qismini (replikatsiya, CQRS) bog‘laydi.

01
CAP · qism 1

Nega kerak — bo‘linish paytidagi tanlov

📞

Oddiy o‘xshatish: ikki filialdagi omborchi bir-biriga telefon qila olmay qoldi (aloqa uzildi). Mijoz mahsulot so‘rayapti. Ikki yo‘l: yo "hozir aniq ayta olmayman, kuting" (aniqlik), yo "menda 5 dona bor deb bilaman, oling" (xizmat davom etadi, lekin boshqa filial allaqachon sotgan bo‘lishi mumkin).

Butun kurs davomida taqsimlangan tizimlar qurdik: mikroservis (1), sharding (6), replikatsiya (7). Ularning hammasi bir necha node’ga tarqalgan. Va node’lar orasidagi tarmoq ishonchsiz — u uzilishi mumkin (partial failure — asosiy tushuncha).

Fundamental savol

Tarmoq bo‘linganda (partition — node’lar bir-biriga yeta olmay qolganda), tizim ikki yomon variant oldida qoladi:
1. Eng so‘nggi ma’lumotga kafolat berolmasa — so‘rovni rad et (izchil, lekin ishlamaydi)?
2. Yoki eskirgan bo‘lishi mumkin bo‘lgan ma’lumot bilan javob ber (ishlaydi, lekin noto‘g‘ri bo‘lishi mumkin)?

CAP teoremasi shu tanlovni nomlaydi

CAP teoremasi (Brewer): taqsimlangan tizimda uch xususiyatdan — Consistency (izchillik), Availability (mavjudlik), Partition tolerance (bo‘linishga chidamlilik) — bir vaqtda faqat ikkitasini to‘liq kafolatlash mumkin. Bu — arxitektura qarorlaringizning nazariy poydevori.

02
CAP · qism 2

Asosiy g‘oya — C, A, P

Avval uch xususiyatni aniq tushunamiz:

C A P Consistencyhar o‘qish eng so‘nggiyozuvni ko‘radi Availabilityhar so‘rov javob oladi Partition tol.tarmoq uzilsa ham ishlaydi
Uch xususiyat — bir vaqtda faqat ikkitasi to‘liq kafolatlanadi
  • Consistency (izchillik): har bir o‘qish eng so‘nggi yozuvni qaytaradi — barcha node’lar bir xil ma’lumotni ko‘radi. (Bu ACID’dagi "C" emas — bu linearizability, ya’ni butun tizim bitta nusxadek ko‘rinadi.)
  • Availability (mavjudlik): har bir so‘rov (xato bo‘lmagan) javob oladi — hatto u eng so‘nggi bo‘lmasa ham.
  • Partition tolerance (bo‘linishga chidamlilik): node’lar orasidagi tarmoq uzilsa ham tizim ishlashda davom etadi.
03
CAP · qism 3

P majburiy — asl tanlov C yoki A

💡

Eng keng tarqalgan tushunmovchilik: "uchtadan ikkitasini tanla". Aslida to‘g‘riroq talqin bor — va u hammasini o‘zgartiradi.

Haqiqat — P tanlov emas

Taqsimlangan tizimda tarmoq bo‘linishi (partition) muqarrar — kabellar uziladi, paketlar yo‘qoladi, node’lar sekinlashadi. Sen "bo‘linish bo‘lmasin" deb tanlay olmaysan. Demak P doim kerak.

Haqiqiy tanlov — bo‘linish paytida C yoki A

Shuning uchun asl savol: tarmoq bo‘linganda nimani qurbon qilasan — izchillikni (C) yoki mavjudlikni (A)?
• Bo‘linish yo‘q paytda — ikkalasiga ham ega bo‘lasan.
• Bo‘linish bor paytda — bittasini tanlashga majbursan.

Node A Node B ✂ bo‘linish (partition) A: eskirgan javob berasanmi? · C: rad etasanmi?
Bo‘linish paytida: izchillikni yoki mavjudlikni tanlaysan
04
CAP · qism 4

CP vs AP — ikki lager

CP · AP · CA

Shunday qilib, taqsimlangan tizimlar amalda ikki lagerga bo‘linadi: CP va AP.

CP — izchillikni saqlaydi so‘rov ✕ rad etadi(kafolat yo‘q) ma’lumot doim to‘g‘ri,lekin ishlamay qolishi mumkin AP — xizmatni saqlaydi so‘rov ✓ javob beradi(eskirgan bo‘lishi mumkin) doim javob beradi,lekin eskirgan bo‘lishi mumkin
Bo‘linish paytida: CP rad etadi (to‘g‘rilik), AP javob beradi (mavjudlik)
CP (Consistency + Partition)AP (Availability + Partition)
Bo‘linishdaSo‘rovni rad etadi/bloklaydiJavob beradi (eskirgan bo‘lishi mumkin)
Ma’lumotDoim izchilPirovard izchil (eventual)
XavfVaqtincha ishlamay qolishiEskirgan/noto‘g‘ri o‘qish
Misoletcd, ZooKeeper, an’anaviy RDBMS (sync)Cassandra, DynamoDB, Riak
"CA" nima bo‘ldi?

Uchinchi kombinatsiya — CA (izchillik + mavjudlik, bo‘linishga chidamsiz) — amalda taqsimlangan tizim uchun mavjud emas. U faqat bitta nodeli tizimda bo‘ladi (bo‘linish umuman yo‘q). Bir necha node bo‘ldimi — P majburiy, demak tanlov CP yoki AP.

05
Chuqurlashtirilgan mavzu

Amaliy misollar va bazalar

biznes tanlovi
🏦

CAP mavhum emas — u har kungi arxitektura qaroringizga ta’sir qiladi. Tanlovni biznes belgilaydi: sizning ma’lumotingiz eskirishga qanchalik chidamli?

Biznes tanlovni belgilaydi

  • CP — to‘g‘rilik birinchi: pul, balans, inventar, identifikatsiya. Bank o‘tkazmasida "eskirgan balans" — halokat. Bo‘linsa — rad etib, keyin urinish afzal.
  • AP — mavjudlik birinchi: ijtimoiy lenta, layklar, kataloglar, analitika. Instagram feed’ida bitta post biroz kech ko‘rinsa — hech kim sezmaydi. Doim ishlashi muhimroq.

Kurs mavzulari bilan bog‘lanish

Aslida biz bu tanlovni allaqachon ko‘rgandik:

MavzuCAP tanlovi
Sinxron replikatsiya (7-mavzu)CP tomonga — replikani kutadi, izchillik; bo‘linsa yozuv bloklanadi
Asinxron replikatsiya (7-mavzu)AP tomonga — darhol javob, lag/eskirish mumkin
Eventual consistency (9-mavzu CQRS)AP — read model biroz orqada
Quorum/konsensus (7-mavzu Patroni)CP — ko‘pchilik rozi bo‘lmasa, yozmaydi
Falsafiy bo‘linish

Bu — taqsimlangan tizimlardagi "to‘g‘rilik birinchi" vs "mavjudlik birinchi" falsafiy bo‘linishning aniq ko‘rinishi. Har bir taqsimlangan ma’lumotlar bazasi bu qarorni o‘z dizayniga singdirgan — va uni tanlaganingda, aslida bu falsafani tanlaysan.

06
Chuqurlashtirilgan mavzu

Nuanslar va PACELC

tunable · PACELC
🎚️

CAP ko‘pincha haddan tashqari soddalashtiriladi. Senior darajada uch nuansni bilish kerak.

Nuans 1 · Bu spektr, ikkilik emas

C va A — "bor/yo‘q" emas, balki daraja. Izchillikning turli kuchlari bor (kuchli → pirovard). Aksariyat real tizimlar orasida — mutlaq CP yoki AP emas.

Nuans 2 · Ko‘p tizim sozlanadi (tunable)

Cassandra, DynamoDB kabi tizimlar har amal uchun izchillik darajasini tanlashga ruxsat beradi — kvorum orqali:

// TUNABLE CONSISTENCY (Dynamo/Cassandra): N replika, W yozuv kvorumi, R o'qish kvorumi
//   Agar R + W > N  ->  KUCHLI izchillik (o'qish har doim eng so'nggini ko'radi)
//   Agar R + W <= N ->  yuqori mavjudlik, lekin eskirish mumkin (AP)
// Misol: N=3
//   W=3, R=1 -> yozuv sekin (hammani kutadi), o'qish tez, izchil
//   W=1, R=1 -> ikkalasi tez, lekin eskirish mumkin (AP)
//   W=2, R=2 -> muvozanat: R+W=4 > 3 -> izchil, lekin bittasi o'lsa ham ishlaydi

Nuans 3 · PACELC — to‘liqroq manzara

CAP’dan keyin — PACELC

CAP faqat bo‘linish paytini tasvirlaydi. Lekin PACELC to‘liqroq: agar bo‘linish (P) bo‘lsa — A yoki C; Else (bo‘linish yo‘q, normal holat) — Latency (kechikish) yoki Consistency. Ya’ni: hatto tarmoq soppa-sog‘ bo‘lsa ham, izchillikni oshirsang (masalan, hamma replikani kutsang) — kechikish ortadi. Izchillik bepul emas — bo‘linishda mavjudlikka, normal holatda tezlikka to‘laysan.

07
Qaror

Qanday qaror qilish

🧭

CAP’ni bilishning maqsadi — ongli qaror qabul qilish. "Eng yaxshi baza" degani yo‘q; sizning ma’lumotingizga eng mos tanlov bor.

Qanday qaror qilish

1. Savol ber: "tarmoq bo‘linganda, bu ma’lumot uchun eskirgan javob berilsa — nima bo‘ladi?"

— Halokat (pul, balans, inventar band qilish, noyoblik) → CP: to‘g‘rilik birinchi, kerak bo‘lsa rad et.

— Muammo yo‘q (lenta, layk, ko‘rishlar, katalog, tavsiya) → AP: mavjudlik birinchi, keyin moslashtir.

2. Bu — tizim emas, use-case qarori: bitta ilovaning turli qismlari turlicha bo‘lishi mumkin. To‘lov moduli — CP; mahsulot ko‘rishlar hisoblagichi — AP. Bir baza bo‘lishi shart emas.

3. Sozlanadigan tizimlarda (Cassandra, Dynamo) — har amalga mos izchillik darajasini tanla (kvorum bilan).

4. Ko‘r-ko‘rona tanlama: ma’lumoting eskirishga qanchalik chidamli ekanini tushunib, shunga qarab.

Amaliy haqiqat

Ko‘pchilik ilovalar aslida ikkala turdagi ma’lumotga ega. Yetuk arxitektura — kritik qismni CP, qolganini AP qilib, har biriga mos ombor/sozlamani tanlaydi (masalan, balans → kuchli izchil SQL; sessiya/kesh → Redis; feed → eventual).

08
Yakuniy

Eslab qolish kerak bo‘lgan 5 jumla

  • CAP teoremasi: taqsimlangan tizimda Consistency, Availability, Partition tolerancedan bir vaqtda faqat ikkitasini to‘liq kafolatlash mumkin.
  • Haqiqiy talqin: bo‘linish (P) muqarrar — shuning uchun asl tanlov bo‘linish paytida C yoki A. Bo‘linish yo‘q paytda — ikkalasiga ham ega bo‘lasan.
  • CP — bo‘linishda rad etadi (to‘g‘rilik birinchi: etcd, sync RDBMS). AP — bo‘linishda javob beradi (mavjudlik birinchi: Cassandra, DynamoDB). CA — faqat bitta node.
  • Tanlovni biznes belgilaydi: pul/inventar → CP; lenta/layk → AP. Bu tizim emas, use-case qarori.
  • Nuanslar: C/A — spektr; ko‘p tizim sozlanadi (kvorum R+W>N); PACELC — bo‘linish yo‘q paytda ham kechikish vs izchillik tanlovi bor.

Bu mavzuning Deep/Senior qatlami (izchillik modellari spektri — linearizability/sequential/causal/eventual, kvorum matematikasi R+W+N, PACELC chuqur, Spanner/Dynamo/Cassandra qanday ishlashi, CRDT bilan AP konflikt yechish, consensus va CAP) kerak bo‘lsa — ayting.

Yoki keyingi mavzu: “12-mavzu: Observability” — taqsimlangan tizimda nima bo‘layotganini ko‘rish.