Uyğunluq modelləri
Uyğunluq oxucuların rəqabət dəyişikliklərində hansı dəyərləri və hansı qaydada gördüklərini təsvir edir. Düzgün model seçimi invariantların sərtliyi, gecikmə, əlçatanlıq və dəyər (PACELC) arasındakı balansdır. Aşağıda - modellər və onların tətbiqi üzrə praktiki bələdçi.
1) «Sərt» modellər
Linearizable (lineer, güclü)
Davranış sanki bütün əməliyyatlar bir anda real zamana hörmət edən vahid qaydada həyata keçirilmişdir.
Üstünlüklər: sadə zehni model, pul və unikallıq üçün təhlükəsizdir.
Mənfi cəhətləri: kvorumlar/lider → böyümə p95/p99, xüsusilə regionlararası.
Yüzkeys: balans, sərt limitli inventar, unikal adlar/açarlar.
Sequential consistency
Bütün axınlar eyni əməliyyat prosedurunu görür, lakin real vaxt proseduru tələb olunmur. Bir az zəif linearizable, nadir hallarda birbaşa məhsullarda sərgilənir.
Serializable (tranzaksiyalı serializasiya)
Bəzi ardıcıl əməliyyatlar proseduruna bərabərdir (ayrı-ayrı əməliyyatlar deyil).
Üstünlüklər: sorğular/cədvəllər səviyyəsində mürəkkəb invariantların düzgünlüyü.
Mənfi cəhətləri: daha bahalı (bloklama/versiyalaşdırma/münaqişələrin təsdiqlənməsi).
Yüzkeys: mürəkkəb maliyyə əməliyyatları, konsistent yenidən hesablamalar, inventar.
Snapshot Isolation (SI)
Hər bir əməliyyat zamanla dəyişməz şəkil oxuyur; qeydlər «eyni sətirlərdə» ziddiyyət təşkil edir, lakin write skew mümkündür.
Üstünlüklər: kilidsiz sürətli oxunmalar, sabit hesabatlar.
Dezavantajları: serial deyil, write skew tələsi (misal: növbətçi həkimlər).
Yüzkeys: analitika, hesabatlar, CRUD-ların əksəriyyəti sərt invariantlar olmadan.
2) Per-session və səbəb zəmanətləri
Read-Your-Writes (RYW)
Müştəri qeyd etdikdən sonra onu həmişə sonrakı oxunuşlarda görür.
Üstünlüklər: yaxşı UX (forma → təsdiq).
Mənfi cəhətləri: yerli zəmanət, qlobal deyil.
Monotonic Reads / Writes
Oxu geri dönmür; bir müştərinin qeydləri göndərildiyi qaydada tətbiq olunur.
Causal Consistency (səbəb)
Əməliyyat başqasından asılıdırsa (A → B), hamı B. qarşısında A görür
Üstünlüklər: Sosial fayda, şərhlər üçün intuitivdir.
Mənfi cəhətləri: daha çətin marşrutlaşdırma və səbəbiyyət işarələri (vektor saatı).
Yüzkeys: rabitə, birgə redaktə, hadisə lentləri.
3) Zəif və hibrid modellər
Bounded Staleness
Oxu Δ t və ya N versiyalarından çox ola bilməz.
Üstünlüklər: proqnozlaşdırıla bilən UX, regionlararası yaxşı kompromis.
Mənfi cəhətləri: qeyd konfliktlərindən qorunmur.
Eventual Consistency
Zaman keçdikcə bütün nüsxələr birləşir; sifariş və gecikmə təmin edilmir.
Üstünlüklər: minimum gizlilik/dəyər, yüksək mövcudluq (AP).
Dezavantajları: açıq merge (CRDT/domen qaydaları) lazımdır.
Caches: caches, fid, metrik, bəyənmə, nen critical kataloqlar.
4) Tipik anomaliyalar və onlar nə deməkdir
Dirty Read: qeyri-müəyyən məlumatların oxunması.
Qeyri-repeatable Read: əməliyyat daxilində eyni oxumaq müxtəlif dəyərlər verir.
Phantom: Təkrar sorğu zamanı predikata uyğun bir sətir görünür/yox olur.
Write Skew (SI ilə): iki əməliyyat kəsişən invariant oxuyur və «cəmi 1 ≥ olmalıdır» şərtini pozaraq müxtəlif sətirlər yazır.
Lost Update: Rekor rəqib dəyişikliklərini «silir».
5) Oxu/yazma kvorumları və səviyyələri
Bir çox anbar «R »/« W» (oxu/yazma üçün replikaların sayı) səviyyələrini təyin etməyə imkan verir.
Kvorum (R + W> N) son yazının oxunması üçün «keçid» və güclü zəmanət verir.
W = 1, R = 1 → aşağı gecikmə, lakin köhnə məlumatlar mümkündür.
Tuning: kritik əməliyyatlar - yüksək 'W' (və ya lider), qalanları - aşağı 'R' sürət üçün.
Read-repair/Hinted handoff fonda uyğunluq əldə etməyə kömək edir.
6) Saat və sifariş: səbəbini necə «başa düşürük»
Lamport clocks: hadisələrin qismən qaydası.
Vector clocks: səbəbləri qeyd, konfliktlərin aşkarlanmasına imkan verir.
Hybrid/TrueTime-yanaşmalar: əməliyyatları və bound-staleness nizamlamaq üçün bir klasterdə saatların yayılmasını məhdudlaşdırır.
Version: merge üçün 'version/ts + actor'; CRDT-də - qapalı yarımqruplar (kommutativlik/idempotentlik).
7) CRDT və domen merge
CRDT (convergent/replicable data növləri) koordinasiya olmadan yaxınlaşma təmin edir: G-Counter, OR-Set, LWW-Register, Map, mətn OT/WOOT variantları.
Faydalı olduqda: bəyənmə, etiketlər, səbətlər, sənədlər.
Məhdudiyyətlər: müəyyən bir domen mahiyyəti üçün düzgün «birləşmə» semantikası ilə gəlin.
8) CAP/PACELC ilə əlaqə
Çox bölgədə ciddi modellər (Linearizable/Serializable) → Gecikmə artımı ilə CP (PACELC: C seçin və L ödəyin).
Zəif/hibrid modellər → AP və/və ya aşağı L, lakin merge/konflikt-qətnamə lazımdır.
Hibrid: İnvariantlar üçün CP nüvəsi + AP proyeksiyası/oxumaq üçün cache.
9) Model seçimi: çek siyahısı
1. İnvariantlar: nə pozulmamalıdır? (unikallıq, balans, limitlər).
2. Regionallıq: yazılar/oxunmalar harada yerinə yetirilir? (yerli/qlobal).
3. SLO gizli: kritik yollar üçün p95/p99?
4. Koordinasiya qiyməti: regionlararası kvorumlarla ödəməyə hazırsınız?
5. Konfliktlər: müəyyən edilmiş bir tədbir var və ya koordinator lazımdır?
6. UX-gözləntilər: RYW/monotonic/causal müştəri üçün vacibdir?
7. Müşahidə: Lag/konflikt/köhnəlmə dərəcəsini necə ölçürsünüz?
8. Fallback: (P) şəbəkəsinin bölünməsi zamanı nə baş verir? read-only/yerli qeyd/növbə?
10) Sürətli reseptlər
Ödəniş/balans: Linearizable/Serializable, lider + kvorum, qısa vaxt; RYW oxu.
Profillər/fid: Causal/Bounded staleness + cache; CRDT bəyənmə/sayğaclar üçün; Müəllif üçün RYW.
Axtarış/analitika: SI/Read Committed, asenxron proyeksiyaları, indekslər üçün eventual.
Global SaaS: Geo-partitioning; «ev qeydləri» - CP, hesabatlar/kataloqlar - AP.
Birgə redaktə: səbəb/eventual + CRDT/OT; «tarixin» qorunması.
11) Uyğunluq müşahidə
Lag metrika: 'replication _ lag', 'staleness _ age _ ms' (p50/p95/p99).
Münaqişə: münaqişələrin payı, orta həll müddəti.
Kvorumlar: 'R/W' kvorumlarının müvəffəqiyyəti, regionlararası yolların taymautları.
Müştəri zəmanəti: RYW/monotonic - seanslar üzrə treys-etiketlər.
12) Tipik səhvlər
Strong «hər yerdə» biznes əsası olmadan tələb → gizli və dəyəri partlayış.
Dual-write/CRDT olmadan müxtəlif bölgələrdə → Fantoms və invariant itkisi.
RYW/monotonikliyi UX → yeni göndərilən məlumatların «itməsi».
Cache/proyeksiyaların köhnəlməsini izləməyin → «əbədi» uyğunsuzluqlar.
Qeyri-düşünülmüş ölçü → gözlənilməz itkilər/dəyərlərin dublları.
13) Mini memarlıq etalonu
Write-core (CP): lider, kvorum qeydləri, SLO və taymautlar, jurnallar.
Read-plane (AP): materiallaşdırılmış performans, TTL caches, read-repair.
Müştəri: sticky-session/sessiya zəmanət (RYW/monotonic), versiyası işarələri.
Münaqişə mühərriki: CRDT/domen qaydaları, manual həll növbəsi.
Monitorinq: lağlar, münaqişələr, köhnəlmiş oxunuşların payları.
Nəticə
Uyğunluq modeli verilənlər, gecikmə və əlçatanlıq arasında mühəndislik müqaviləsidir. İnvariantlar və SLO ilə başlayın, müştərilərin zəmanətlərini, kvorumlarını, saatlarını və müşahidə qabiliyyətini unutmadan istədiyiniz yerdə və mümkün olan yerdə daha zəif seçin. Modellərin səriştəli birləşməsi iş həqiqəti və istifadəçi etibarını qurban vermədən miqyas, proqnozlaşdırıla bilən və sabitlik verir.