GH GambleHub

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».

💡 İzolyasiya səviyyəsinin artırılması (Serializable qədər), predikat kilidləri, invariant yoxlamaları və ya domen kompensatorları/saga yanaşması ilə müalicə olunur.

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.

Contact

Bizimlə əlaqə

Hər hansı sualınız və ya dəstək ehtiyacınız varsa — bizimlə əlaqə saxlayın.Həmişə köməyə hazırıq!

İnteqrasiyaya başla

Email — məcburidir. Telegram və ya WhatsApp — istəyə bağlıdır.

Adınız istəyə bağlı
Email istəyə bağlı
Mövzu istəyə bağlı
Mesaj istəyə bağlı
Telegram istəyə bağlı
@
Əgər Telegram daxil etsəniz — Email ilə yanaşı orada da cavab verəcəyik.
WhatsApp istəyə bağlı
Format: ölkə kodu + nömrə (məsələn, +994XXXXXXXXX).

Düyməyə basmaqla məlumatların işlənməsinə razılıq vermiş olursunuz.