Replikasiýa we eventual consistency
Replikasiýa we eventual consistency
1) Näme üçin eventual consistency
Ulgam zolaklar/sebitler boýunça paýlananda, sinhron ýazgy hemme ýerde ýokary gizlinlik we tor şowsuzlyklarynda pes elýeterlilik berýär. Eventual consistency (EC) şu sözler üçin wagtlaýyn sinhronlaşdyrmaga mümkinçilik berýär:- ýazgynyň gijikdirilmegi (ýerli kabul),
- tor bölünende has gowy elýeterlilik,
- gorizontal masştabda.
Esasy wezipe gözegçilikde saklanmaýan sazlaşykdyr: ulanyjy "gaty täze" maglumatlary görýär, domeniň üýtgemegi saklanýar, gapma-garşylyklar ýüze çykarylýar we çak edilip bilner.
2) Ylalaşygyň modelleri - müşderä näme wada berýäris
Strong: okamak iň soňky ýazgyny derrew görýär.
Bounded stale/read-not-older-than (RNOT): okamak bellikden köne däl (LSN/wersiýa/wagt).
Causal: "sebäp-netije" gatnaşyklary saklanýar (A-dan B-e çenli).
Read-Your-Writes: Müşderi soňky ýazgylaryny görýär.
"Monotonic Reads": indiki okalýan her bir okalýan "yza" gaýdyp gelmeýär.
Session: bir sessiýanyň çäginde kepillikler toplumy.
Eventual: Täze ýazgylar ýok bolsa, ähli bellikler birleşýär.
Amal: Möhüm ýollarda Session + RNOT we penjirelerde/keşlerde Eventual birleşdiriň.
3) Replikasiýa: mehanika we anti-entropy
Sinhron (kworum/RAFT): ýazgy N düwünler bilen tassyklanylandan soň üstünlikli hasaplanýar; iň az RPO, p99-dan ýokary.
Asinhron: jemleýji lider lokal, soňra magazineurnaly paýlaýar; pes gizlinlik, RPO> 0.
Fiziki (WAL/binlog): çalt, birmeňzeş.
Logic/CDC: setirler/wakalar derejesinde üýtgeşmeler akymy, çeýe marşrut, süzgüçler.
Anti-entropy: wagtal-wagtal barlamak we bejermek (Merkle-agaçlar, eşi deňeşdirmek, fon re-sync).
4) Wersiýanyň kesgitleýjileri we sebäpleriň sargytlary
Monoton wersiýalary: increment/LSN/epoch; ýönekeý, ýöne parallelizmi kodlamaýarlar.
Lamport timestamp: logiki sagatlar boýunça bölekleýin tertip.
Vector clock: paralel şahalary düzedýär we gapma-garşylykly täzelenmeleri (concurrent) kesgitlemäge mümkinçilik berýär.
Hybrid/TrueTime/Clock-SI: global tertip üçin "T-den öň däl" logikasy.
Maslahat: CRDT/konflikt täzelenmeleri üçin - vector clock; "garry däl" üçin - LSN/GTID.
5) Gapma-garşylyklar: ýüze çykarmak we çözmek
Adaty ýagdaýlar: iki sebitden bir obýekti ýazmak.
Strategiýalar:1. Sagat/logiki möhür boýunça Last-Write-Wins (LWW) - ýönekeý, ýöne täzelenmeleri "ýitirip" biler.
2. Domen logikasy boýunça merge funksiýalary:- hasaplaýjy meýdanlar bukulýar (G-Counter/PN-Counter),
- köplükler "add-wins/remove-wins",
- summalar/balanslar - ýönekeý LWW arkaly däl-de, diňe geleşik žurnallary arkaly.
- 3. CRDT (konwergent görnüşleri): Sanawlar üçin G-Counter, OR-Set, LWW-Register, RGA.
- 4. Operasiýa üýtgeşmeleri (DB üçin seýrek, köplenç redaktorlar üçin).
- 5. Manual resolution: "inbox" -da gapma-garşylyk, ulanyjy dogry wersiýany saýlaýar.
Düzgün: domeniň üýtgemegi strategiýany kesgitleýär. Pul/galyndy üçin - LWW-den gaça duruň; öwezini dolmak bilen amallardan/wakalardan peýdalanyň.
6) Ýazgylaryň kepillikleri we idempotentlik
Toparlarda idempotent açarlary (payment, withdraw, create) → gaýtalamak howpsuz.
Idempotentlik açary/seriýa belgisi boýunça "giriş" (inbox) we "çykyş" (outbox) -da duplikasiýa.
Exactly-once güýçli şertler bolmazdan elýeterli däl; at-least-once + idempotentlik bilen meşgullanyň.
Outbox/Inbox-pattern: DB-e ýazmak we wakany atomarny (lokal geleşik) çap etmek, alyjy idempotency-key boýunça gaýtadan işleýär.
7) "X-den uly däl" okalýar (RNOT)
Usullar:- LSN/GTID-gate: müşderi iň az wersiýany (ýazgynyň jogabyndan) iberýär, router/proxy LSN ≥ X-den geçen göçürmä, ýogsam - lidere iberýär.
- Time-bound: "2 sekuntdan uly däl" - wersiýasyz ýönekeý SLA.
- Session pinning: N saniye ýazylandan soň diňe lider okaýarys (Read-Your-Writes).
8) Üýtgeşmeleriň akymlary we nagt pullary utgaşdyrmak
CDC → wakalaryň tekeri (Kafka/Pulsar) → sarp edijiler (nagt pullar, indeksler, penjireler).
Keshiň maýyplygy: topiki 'invalidate: {ns}: {id}'; idempotent gaýtadan işlemek.
Rebuild/Backfill: Rebuild/Backfill: Wakalar magazineurnalyndan proýeksiýalary gözden geçiriň.
9) Saglar we kompensasiýalar (hyzmatara amallar)
EC-dünýäde uzak möhletli amallar öwezini dolmak çäreleri bilen ädimlere bölünýär:- Orkestr: koordinator ädimleri we olaryň öwezini dolmagy talap edýär.
- Horeografiýa: ädimler wakalara reaksiýa bildirýärler we özleri aşakdakylary çap edýärler.
Inwariantlar (mysal): "balans ≥ 0" - ädimiň çäklerinde barlamak + ýüz dönderilende öwezini dolmak.
10) Köp sebit we tor bölünişikleri
Local-write, async-replicate: ýerli sebitde ýazgy + başgalara eltip bermek (EC).
Geo-fencing: Maglumatlar sebite "ýapyşýar" (pes gizlinlik, az gapma-garşylyklar).
CP-maglumatlar üçin kworum DB (Raft); keşler/penjireler - AP/EC.
Split-brain meýilnamasy: aragatnaşyk ýitirilen halatynda sebitler domen çäkleriniň (write fencing, kwota), soňra - reconcile çäginde işlemegini dowam etdirýärler.
11) Synlamak we SLO
Metrikler:- Replica lag: wagt/LSN-aralyk/offset (p50/p95/p99).
- Staleness: bosagadan uly jogaplaryň paýy (mysal üçin> 2s ýa-da LSN
- Conflict rate: konfliktleriň ýygylygy we üstünlikli merge.
- Convergence time: iň ýokary derejeden soň gaýtalanýan wagt.
- Reconcile backlog: yzda galan partiýanyň göwrümi/wagty.
- Maglumat kategoriýalary boýunça RPO/RTO (CP/AP).
- Lag> maksat, konfliktleriň köpelmegi, "uzyn" gabat gelmeýän penjireler.
12) EC üçin maglumat shemasynyň dizaýny
Her ýazgyda aýdyň wersiýa/wektor ('version', 'vc' sütünleri).
Append-only kritiki üýtgeşmeler üçin žurnallar (balanslar, hasaplamalar).
Sargyt we data üçin wakalaryň kesgitleýjileri (snowflake/ULID).
Kommutatiw tebigaty bolan meýdanlar (hasaplaýjylar, köplükler) → CRDT dalaşgärleri.
API dizaýny: if-match/etag bilen PUT, precondition bilen PATCH.
13) Saklamak we okamak patternleri
Read model/CQRS: "çeşmä" ýazmak, proýeksiýalardan okamak (yza galyp biler → "täzelenýär"...).
Stale-OK marşrutlary (katalog/lenta) vs Strict (gapjyk/çäkler).
"Sticky/Bounded-stale" (sözbaşy 'x-read-consistency').
14) Giriş çek-sanawy (0-45 gün)
0-10 gün
Maglumatlary kategoriýalaşdyrmak: CP-kritiki (pul, sargytlar) vs EUB/stale-OK (kataloglar, gözleg indeksleri).
Stiliň SLO-ny (mysal üçin "2s-den garry däl"), maksatly laglary kesgitlemek.
API-de obýektleriň we idempotency-keysleriň wersiýalaryny açyň.
11-25 gün
CDC we outbox/inbox, kesh maýyplyk ýollaryny girizmek.
RNOT (LSN-gate) we session pinning bellik-kritiki ýollara goşuň.
Iň azyndan bir merge strategiýasyny (LWW/CRDT/domen) we gapma-garşylyklar magazineurnalyny durmuşa geçiriň.
26-45 gün
Anti-entropy (barlamak/düzetmek) we stil hasabatlaryny awtomatlaşdyrmak.
Game-day geçiriň: toruň bölünmegi, gapma-garşylyklaryň köpelmegi, dikeldiş.
Dashbordlarda wizuallaşdyrmak: lag, staleness, conflict rate, convergence.
15) Anti-patternler
Möhüm üýtgemeler üçin kör LWW (pul/bal ýitirmek).
Retrada idempotency → dubly amallaryň ýoklugy.
Hemme zatda "güýçli" model → p99-yň aşa guýruklary we şowsuzlyklarda gowşaklygy.
RNOT/Session kepillikleri ýok → UX "ýalpyldawuk", ulanyjylar üýtgeşmelerini "görmeýärler".
Keshiň we çeşmäniň gizlin sinhronizasiýasy (CDC/maýyplyk ýok).
Reconcile/anti-entropy guralynyň ýoklugy - maglumatlar "asyrlar boýy" tapawutlanýar.
16) Kämillik ölçegleri
Replica lag p95 maksatly ≤ (mysal üçin, sebitiň içinde ≤ 500 ms, ≤ 2 s sebitler).
Staleness SLO "berk" ugurlarda haýyşlaryň 99% ≥ ýerine ýetirilýär.
Conflict resolution success ≥ 99. 9%, çözmegiň ortaça wagty ≤ 1 minut.
Iň ýokary derejeden soň üýtgetmek wagty - minut, sagat däl.
"Pul" amallarynyň 100% -i idempotency-açarlary we outbox/inbox bilen örtülendir.
17) Reseptler (snippetler)
If-Match/ETag (HTTP)
PUT /profile/42
If-Match: "v17"
Body: { "email": "new@example.com" }
Eger wersiýa üýtgese - '412 Precondition Failed' → müşderi gapma-garşylygy çözýär.
"LSN-den garry däl" (psevdo)
x-min-lsn: 16/B373F8D8
Router 'replay _ lsn ≥ x-min-lsn' -den göçürme saýlaýar, ýogsam - lider.
CRDT G-Counter (pikir)
Her sebit öz hasaplaýjysyny saklaýar; jemleýji - ähli komponentleriň jemi; replikasiýa - kommutatiw amal.
18) Netijenama
"Eventual consistency" hil taýdan eglişik däl-de, aňly şertnama: bir ýerde tizlik we elýeterlilik üçin täzelik töleýäris, ýöne möhüm üýtgemeleri domen strategiýalary we gurallary bilen goraýarys. Wersiýalary, idempotency, RNOT/Session kepillikleri, CDC we anti-entropy giriziň, lag/staleness/conflicts ölçäň - paýlanan ulgamyňyz hatda şowsuzlyklar we iň ýokary ýükler bilen hem çalt, durnukly we öňünden aýdyp boljak bolar.