CAP və mühəndislik kompromisləri
CAP iddia edir: Şəbəkənin bölünməsi şəraitində (Partition, P) paylanmış sistem eyni zamanda güclü uyğunluğa (Consistency, C) və əlçatanlığa (Availability, A) zəmanət verə bilməz. Əgər P varsa, ya CP, ya da AP seçməlisiniz. Bölünmələr olmadıqda, məhdudiyyət tətbiq edilmir, lakin digər kompromislər meydana çıxır - ilk növbədə gecikmə (latency) və dəyər.
Praktik mühəndislik CAP-dən kənara çıxır: PACELC vacibdir (əgər P - C və ya A seçirsinizsə; əks halda - Latency və Consistency arasında seçin), uyğunluq modelləri, SLA/SLO, cases və biznes riskləri.
1) Əsas təriflər (fəlsəfəsiz)
Uyğunluq (C): bütün müştərilər eyni nəticəni görürlər «sanki» əməliyyatlar ardıcıl olaraq (lineer/strong consistency).
Əlçatanlıq (A): Düşməmiş qovşağa edilən hər bir sorğu, hətta ayrıldıqda da, ağlabatan vaxtda cavab ilə başa çatır.
Bölmə (P): qovşaqlar/regional klasterlər arasında əlaqənin itirilməsi və ya əhəmiyyətli dərəcədə pozulması; əslində - böyük miqyasda «qaçılmazdır».
PACELC: P ilə C və ya A seçin; else (P olmadıqda) L (aşağı gecikmə) və ya C (güclü uyğunluq) seçin.
2) Intuitiv seçim şəkli
CP (uyğunluq daha vacibdir): ayrıldıqda bəzi sorğuları rədd edirik/invariantları pozmamaq üçün bloklayırıq. Pul, əməliyyatlar, qalıqların uçotu üçün uyğundur.
AP (əlçatanlıq daha vacibdir): həmişə cavab veririk, lakin müvəqqəti uyğunsuzluğa icazə veririk, sonra münaqişələri (CRDT/merj qaydaları) çökdürürük. Soc-fid, layk sayğacları, cached profillər üçün uyğundur.
CA (eyni zamanda C və A): yalnız P olmadıqda mümkündür - yəni şəbəkə sağlam olarkən. Real istismarda «CA» - dizayn xassəsi deyil, müvəqqəti vəziyyətdir.
3) PACELC: gecikməni unutmayın
P olmadıqda, seçim tez-tez aşağı gecikmə (L) və güclü uyğunluq (C) arasında olur:- Bölgələr arasında güclü sabitlik = qitələrarası kvorumlar ⇒ p95 üçün on-yüzlərlə ms.
- Lokal oxunmalar (aşağı L) = daha zəif zəmanət (read-my-writes, bounded staleness, eventual).
- PACELC niyə «sürətli və ciddi» qlobal olaraq nadir olduğunu izah etməyə kömək edir: işıq ani deyil və kvorumlar şəbəkənin sərtliyi ilə böyüyür.
4) Uyğunluq modelləri (sürətli spektr)
Linearizable/Strong: bir ardıcıl sifariş kimi.
Serializable: müəyyən ardıcıl əməliyyat proseduruna bərabərdir (qeydlər səviyyəsindən yuxarı).
Read-your-writes/Monotonic reads: müştəri öz girişindən sonra yeni bir məna oxuyur.
Bounded staleness: oxu N/ Δ t-dən çox deyil.
Eventual consistency: zamanla bütün nüsxələr birləşir; münaqişələr həll edilməlidir.
5) Məhsul və protokollarda CP və AP nümunələri (konseptual)
CP yanaşmaları: kvorum jurnalları/liderlik (Raft/Paxos), ciddi əməliyyatlar, qlobal lider yerləri, sinxron replikasiya. Qiymət - P-də bəzi sorğuların rədd edilməsi və gecikmələrin artması.
AP yanaşmaları: multi-master/multi-lider, CRDT, gossip-paylama, asenxron replikasiya, münaqişə həlli (LWW, vektor saatlar, domen merj funksiyaları). Qiymət - müvəqqəti uyğunsuzluq və domen qaydalarının mürəkkəbliyi.
6) Multi-regionda kompromislər
Qlobal Lider (CP): sadə məntiq, lakin «uzaq» bölgələr gecikmə ilə ödəyir; P - qeydlərin bloklanması.
Lokal Liderlər + Asinxron (AP): qeyd sürətli lokal, sonra replikasiya; ziddiyyətli dəyişikliklər merj tələb edir.
Geo-partitioning: məlumatlar istifadəçi/yurisdiksiyaya daha yaxın «yaşayır»; cross-region - yalnız aqreqatlar.
Dual-write/CRDT olmadan qadağandır: əks halda fantomlar və ikiqat silinmələr alınır.
7) Mühəndislik invariantları və biznes həlləri
Əvvəlcə invariantlar: heç vaxt pozulmamalıdır (ikiqat xərcləmə, mənfi balans, açarın unikallığı) və eventual (baxış sayğacı, tövsiyələr) nə «yaşayır».
Sonra seçim:- Müvafiq əməliyyatlar üçün invariant «sərt» → CP.
- «Yumşaq» invariant → AP sonrakı çöküş ilə.
8) Kompromislərin yumşaldılması texnikaları
Cache və CQRS: yaxın cache/proyeksiyaları (AP) vasitəsilə oxumaq, qeydlər - ciddi jurnal (CP).
RPO/RTO kompromis dili kimi: nə qədər məlumat itirilə bilər (RPO) və necə tez bərpa olunur (RTO).
Razılaşdırılmış ID və saat: monoton vaxt tamponları (Hybrid/TrueTime-yanaşmalar), ULID/Snowflake.
Saqi/TSS: qlobal bloklama əvəzinə biznes kompensasiyası.
CRDT və domen merj: kolleksiyalar, sayğaclar, «son qələbələr» üçün.
Bounded staleness: balans UX və dəqiqlik.
9) Müşahidə, SLO və hadisələrin idarə edilməsi
SLO latentlik (p50/p95/p99) oxu/qeydlər və regionlar üçün ayrıca.
Bölgənin feyloverini nəzərə alaraq SLO mövcuddur.
Lag replikasiyalar/münaqişə: münaqişələrin payı, orta həll müddəti.
P əlamətinə görə alertlər: regionlararası kanalların vaxtında artım, kvorum səhvlərinin artması.
Degrade planları: read-only rejimi, sonrakı merj ilə yerli xidmət, «bahalı» funksiyaları söndürmək.
10) Strategiya seçimi çek siyahısı
1. Hansı invariantlar pozulmamalıdır? eventual imkan verir?
2. Aşağı gecikmə ilə cross-regional qeyd lazımdır?
3. Hədəf SLO (gizli/əlçatanlıq) və dəyəri (egress/replikasiyalar) hansılardır?
4. manual merge və ya yalnız avtomat icazə (CRDT/qaydaları)?
5. Şəbəkə uğursuzluğu profili nədir: tezlik, müddət, blast radius?
6. Hüquqi məlumat lokalizasiyası (residency) varmı?
7. Hər bir data/əməliyyat növü üçün hansı uyğunluq modeli məqbuldur?
8. Necə müşahidə edəcəksiniz: lağlar, münaqişələr, kvorumların vəziyyəti?
9. Sistem P ilə nə edir: bloklayır, deqradasiya edir, trafiki bölür?
10. P sonra məlumat bərpa və repatriasiya planı nədir?
11) Tipik səhvlər
«CA əbədi» təqibi. Birincidə P seçmək lazımdır - əvvəlcədən daha yaxşıdır.
Merj qaydaları olmadan qlobal multi-master. Münaqişələr məlumat və etimadı «yeyir».
Güclü sabitlik «hər yerdə». Artıq kvorumlar p95/p99 və büdcəyə vurulur.
Əməliyyatsız Dual-write/saqa. İtirilmiş invariantlar və fantomlar.
PACELC görməməzlik. Sülh dövründə gecikmə, fırtınada əlçatanlıq əziyyət çəkir.
Münaqişə və laqların sıfır telemetri. Problemlər yalnız istifadəçiyə görünür.
12) Sürətli reseptlər
Ödəniş/balans: Kvorumlarla CP saxlama; yalnız lider vasitəsilə qeydlər; oxu cached edilə bilər, lakin kritik UX - read-your-writes.
Məzmun/fid: AP replikasiyası + CRDT/merj qaydaları; P ilə - yerli olaraq xidmət edin, sonra vurun.
Global SaaS: geo-partitioning by 'tenant/region'; «ev» bölgəsində ciddi əməliyyatlar (CP), hesabatlar/axtarışlar - asinxron proyeksiyalar (AP) vasitəsilə.
Real vaxt siqnalizasiya: Anycast/edge + AP-şina; kritik komandalar təsdiqlənmiş kanaldan (CP) keçir.
Audit/jurnal: CP zəmanətləri ilə həqiqətin yeganə mənbəyi (append-only), ətrafında - caches və proyeksiyalar.
13) Arxitekturanın mini-etalonu (sözlü)
Write-core (CP): lider + kvorum replikasiyası, ciddi invariantlar, xidmətlərarası effektlər üçün dastanlar.
Read-plane (AP): materiallaşdırılmış təqdimatlar, caches, search indeksləri, asenxron yeniləmə.
Geo-routing: istifadəçilər «ev» regiona düşür; P - lokal rejim + sonrakı replikasiya.
Münaqişə mühərriki: CRDT/qaydalar; münaqişə jurnalı və əl ilə həll vasitələri.
Müşahidə: kvorumların treysinqi, lağlar, şəbəkə hadisələrinin xəritəsi.
14) Praktik gecikmə riyaziyyatı (sadə qiymətləndirmə)
Optika ≈ 5 ms 1000 km (RTT daha çox). Qitələrarası kvorumlar → p95 asandır> 150-250 ms.
Qeyd üçün hər hansı bir «qlobal Strong» bahalı bir sorğudur. UX <100-150 ms tələb edirsə, yerli write-home + asenkron nəticələrini düşünün.
15) Bölünmə siyasətləri
CP-yol: kvorum xaricində qeydləri bloklamaq; read-only daxil edin; istifadəçiyə dürüst statuslar vermək.
AP-yol: yerli xidmət; versiyaları etiketləmək; bərpa edildikdə - determinik merj; münaqişələr təhlil sırasına qaldırmaq.
Nəticə
CAP bir dogma deyil, bir xatırlatmadır: şəbəkənin bölünməsi qaçılmazdır və layihə fırtınada nə qurban verməyi əvvəlcədən seçməlidir - əlçatanlıq və ya ciddi uyğunluq. PACELC açıq havada əsas gecikmə oxu əlavə edir. Strategiyaları birləşdirin: CP nüvəsini invariantların müqəddəs olduğu yerdə və AP müstəvisini sürət və sabitliyin daha vacib olduğu yerdə saxlayın. Telemetriya, deqradasiya planları və merj proseslərini qoyun - sistem həm məlumatları, həm də istifadəçi etibarını qoruyacaq.