GH GambleHub

Վերափոխում և eventium consistency

Վերափոխում և eventium consistency

1) Ինչու՞ eventium consistency

Երբ համակարգը բաշխվում է գոտիներով/տարածաշրջաններով, համաժամանակյա ձայնագրությունը ամենուր տալիս է բարձր լատենտ և ցածր հասանելիություն ցանցային ձախողումների ժամանակ։ Eventium consistency (EC) թույլ է տալիս կրկնությունների ժամանակավոր ռասինխրոնիզացիան հանուն

ձայնագրման ցածր ուշացում (տեղական ընդունելություն),

ցանցի բաժանման լավագույն հասանելիությունը,

հորիզոնական մասշտաբով։

Հիմնական խնդիրն այն է, որ վերահսկվող ոչ խիստ համաձայնությունը, օգտագործողը տեսնում է «բավականին թարմ» տվյալներ, տիրույթի ինվարիտներ, հակամարտությունները դեգրադացվում են և լուծվում են կանխատեսելի։


2) Մրցույթի մոդելները 'ինչ ենք խոստանում հաճախորդին

Strong: Կարդալը անմիջապես տեսնում է վերջին գրառումը։

Bounded stale/read-entt-older-than (RNOT) 'կարդալ ոչ թե նշանի (LSN/տարբերակը/ժամանակը)։

Causal: Ռուսական «պատճառահետևանքային» հարաբերություններ (A մինչև B)։

Read-Your-Writes: Հաճախորդը տեսնում է իր վերջին գրառումները։

Monotonic Reads: Յուրաքանչյուր հաջորդ ընթերցում չի «ետ»։

Session 'երաշխիքների մի շարք մեկ նստաշրջանի ընթացքում։

Eventium: նոր ձայնագրությունների բացակայության դեպքում բոլոր կրկնությունները համընկնում են։

Պրակտիկա 'Session + RNOT-ը քննադատական ճանապարհների վրա և Eventium-ը վիտրիններով/խցիկներով։


3) Կրկնօրինակումը 'մեխանիկա և anti-entropy

Սինխրոն (kvorum/RAFT), ձայնագրությունը համարվում է հաջողակ N հանգույցների հաստատումից հետո։ Նվազագույն RPO, p99-ից բարձր։

Ասինխրոն 'առաջնորդը տեղական է, ամսագիրը ավելի ուշ է բաժանում։ ցածր լատենտ, RPO> 0։

Ֆիզիկական (WAL/binlog) 'արագ, հոմոգեն։

Տրամաբանական/CDC 'փոփոխությունների հոսքը տողերի/իրադարձությունների մակարդակում, ճկուն միկրոօրգանիզացիան, ֆիլտրերը։

Anti-entropy: պարբերական ծալքեր և երիկամներ (Merkle-ծառեր, հեշի համեմատություն, ֆոնային re-nc)։


4) Տարբերակների և պատճառի պատվերների ցուցիչները

Մոնոտոնային տարբերակները ՝ increme/LSN/epoch; պարզապես, բայց չեն կոդավորում զուգահեռականությունը։

Lampions timestamp-ը տրամաբանական ժամացույցի մասնակի կարգ է։

Vector clock: ամրագրում է զուգահեռ ճյուղերը և թույլ է տալիս գտնել հակամարտական ապդեյտներ (concurrent)։

Hybrid/Windows Time/Clock-SI: տրամաբանությունը «նախկինում T» գլոբալ կարգի համար։

Առաջարկություն ՝ CRDT/կոնֆլիկտային ապդեյտների համար 'vector clock; «ծերության» համար - LSN/GTID։


5) Հակամարտություններ 'հայտնաբերություն և թույլտվություն

Տիպիկ իրավիճակներ 'երկու տարածաշրջաններից գրառում նույն օբյեկտի մեջ։

Ռազմավարություններ

1. Last-Write-International (LWW) ժամացույցի/տրամաբանական շտամով պարզ է, բայց կարող է «կորցնել» ապդեյտները։

2. Merge-ֆունկցիաները հիբրիդային տրամաբանության վրա

հաշվարկային դաշտերը (G-Counter/PN-Counter),

հավաքածուները միավորվում են «add-enss/remove-enss» -ի հետ,

գումարը/հավասարակշռությունը միայն գործարքային ամսագրերի միջոցով է, ոչ թե պարզ LWW-ի միջոցով։

3. CRDT (փոխարկելի տեսակներ) 'G-Counter, OR-International, LWW-Register, RGA ցուցակների համար։

4. Վիրահատական փոխակերպումները (հազվադեպ BD-ի համար, ավելի հաճախ խմբագիրների համար)։

5. Manault resolution: «inbox» -ի հակամարտությունը, օգտագործողը ընտրում է ճիշտ տարբերակը։

Կանոնն այն է, որ տիրույթի ինվարանտները թելադրում են ռազմավարությունը։ Փողի/մնացորդների համար խուսափեք LWW-ից։ օգտագործեք գործարքներ/փոխհատուցման իրադարձություններ։


6) Ձայնագրությունների և գաղափարախոսության երաշխիքները

Idempotent բանալիները թիմերում (payme, withdrance, create) պաշտպանված են։

«Մուտքի» վրա (inbox) և «ելքը» (www.box) impotenty/սերիական համարով։

Exactly-once-ը անհասանելի է առանց ուժեղ նախադրյալների։ կիրառեք at-least-once + idempotent։

Medibox/Inbox-pattern: BD-ում ձայնագրումը և ատոմային իրադարձությունների հրապարակումը (տեղական գործարքը), ստացողը մշակում է idempotency-key-key-ով։


7) Ընթերցումներ «X» (RNOT)

Տեխնիկան

LSN/GTID-գեյթ. Հաճախորդը փոխանցում է նվազագույն տարբերակը (ձայնագրման պատասխանից), ռոտեր/2019 ուղղում է LSN no X-ի կրկնօրինակին, հակառակ դեպքում առաջնորդի վրա։

Time-bound: «2 վայրկյան» - պարզ SLA առանց տարբերակների։

Session pinning: N վայրկյանից հետո կարդում ենք միայն առաջնորդը (Read-Your-Writes)։


8) Փոփոխությունների հոսքերը և փամփուշտները

CDC-ն (Kafka/Pulsar) ռուսական սպառողներ (քեշներ, ինդեքսներ, վիտրիններ)։

Քեշի հաշմանդամություն 'տեղանուններ' www.alidate: w.ns _: ww.id +; idempotent վերամշակում։

Rebuild/Backfill: Recinchrone-ում վերափոխեք նախագծերը իրադարձությունների ամսագրից։


9) Սագին և փոխհատուցումը (միջին վիրուսային գործարքները)

EC-աշխարհում երկարատև վիրահատությունները բաժանվում են փոխհատուցող գործողությունների հետ

Orcestration: Ռուսական առաջացնում է քայլեր և նրանց փոխհատուցում։

Խորեոգրաֆիա 'քայլերը արձագանքում են իրադարձություններին և հրապարակում են հետևյալը։

Invariants (օրինակ): «Հավասարակշռություն 240» - ստուգում 112 սահմաններում + փոխհատուցումը շեղման ժամանակ։


10) Multi-տարածաշրջանը և ցանցային տարանջատումը

Altal-write, async-replicate: Տեղական տարածքում ձայնագրությունը + փոխանցումը մյուսներին (EC)։

Geo-fencing: տվյալները «սոսնձված» են տարածաշրջանի հետ (ցածր լատենտ, ավելի քիչ հակամարտություններ)։

Cvorum BD (Raft) CP տվյալների համար; kashi/vitrins - AP/EC։

Split-brain պլանը 'կապի կորստի ժամանակ տարածաշրջանները շարունակում են աշխատել մետրոպոլիտենի սահմանների (write fencing, քվոտաներ), ապա reconcile-ում։


11) Դիտարկումը և SLO-ն

Մետրիկները

Replica lag: ժամանակ/LSN հեռավորություն/www.set (p50/p95/p99)։

Staleness: ավելի մեծ պատասխանների մասը (օրինակ ՝> 2s կամ LSN

Sylict rate-ը հակամարտությունների հաճախությունն է և հաջողակ merge-ը։

Convergence Time: կրկնօրինակման ժամանակը գագաթից հետո։

Reconcile backlog: Հետ գնացող կուսակցության ծավալը/ժամանակը։

RPO/RTO տվյալների կատեգորիաներով (CP/AP)։

Ալերտա

Լագ> 2019, հակամարտությունների աճը, «երկար» պատուհանները։


12) Տվյալների սխեմայի նախագծումը EC-ի տակ

Ակնհայտ տարբերակը/վեկտորը յուրաքանչյուր գրառման մեջ («version», «vc»)։

Append-only ամսագրերը կրիտիկական ինվարանտների համար (հավասարակշռություններ, հաշվարկներ)։

Իրադարձությունների բաղադրիչները (www.owflake/ULID) կարգի և պապի համար։

Դաշտերը, որոնք ունեն բաղադրիչ բնություն (հաշվիչներ, շատ), մեջբերում են CRDT-ի թեկնածուները։

API: PUT-ից if-match/etag, PATCH precond.ru-ից։


13) Պահեստավորման և ընթերցանության արտոնագրեր

Read model/CQRS: Գրառումը «աղբյուրի» մեջ, պրոյեկցիաներից կարդալը (կարող է հետ կանգնել)։

Stale-OK երթուղիները (գրացուցակ/ժապավեն) vs Strict (դրամապանակ/լիմիտներ)։

Sticky/Bounded-stale դրոշները խնդրանքով (վերնագիր 'x-read-consistency ")։


14) Ներդրման թուղթ (0-45 օր)

0-10 օր

Դասակարգել տվյալները ՝ CP քննադատական (գումար, պատվերներ) vs ES/stale-OK (օրինակ, որոնողական ինդեքսներ)։

Որոշեք SLO steila (օրինակ, «ոչ ծերություն 2s»), ռուսական ճամբարներ։

Ներառել օբյեկտների տարբերակումը և idempotency-keys-ը API-ում։

11-25 օր

Ներդրել CDC-ը և www.box/inbox-ը, քեշի հաշմանդամության երթուղիները։

Ավելացնել RNOT (LSN գեյթ) և session pinning-ը կրիտիկական ճանապարհների վրա։

Իրականացնել առնվազն մեկ merge ռազմավարություն (LWW/CRDT/հիբրիդային) և հակամարտությունների ամսագիր։

26-45 օր

Ավտոմատիզացնել anti-entropy (ծակոտներ/երիկամներ) և սթեյլի հաշվետվությունները։

Անցկացնել game-day 'ցանցի բաժանումը, հակամարտությունների աճը, վերականգնումը։

Տեսողություններ դաշբորդների վրա 'lag, staleness, www.lict rate, convergence։


15) Anti-patterna

Կույր LWW-ը կրիտիկական ինվարանտների համար (փողի/կետերի կորուստ)։

Idempotency-ի բացակայությունը բացատրում է վիրահատությունների կրկնապատկումը։

«Ուժեղ» մոդելը բոլոր ուղղություններով ավելցուկային p99 պոչերը և ձախողումների ժամանակ փխրունությունը։

Ոչ RNOT/Session երաշխիքներ ունեն UX-ը «գաղթում», օգտագործողները «չեն տեսնում» իրենց փոփոխությունները։

Թաքնված քեշի և աղբյուրի (ոչ CDC/հաշմանդամություն)։

Reconcile/anti-entropy գործիքի բացակայությունը, «դարի» տվյալները տարբերվում են։


16) Հասունության մետրերը

Replica lag p95 հազար ռուբլիներ (օրինակ ՝ 500 ռուբլիներ տարածաշրջանի ներսում, 242 s միջռեգիոններ)։

Staleness SLO-ն կատարվում է «խիստ» երթուղիների հարցումների 99 տոկոսը։

Conflict resolution success ≥ 99. 9 տոկոսը, միջին ժամանակը 351 ռուբլիներ է։

Convergence time-ը գագաթներից հետո րոպե, ժամացույց չէ։

100 տոկոսը «դրամական» վիրահատությունները ծածկված են idempotency-բեկորներով և www.box/inbox-ով։


17) Բաղադրատոմսեր (չիպետներ)

If-Match/ETag (HTTP)


PUT /profile/42
If-Match: "v17"
Body: { "email": "new@example.com" }

Եթե տարբերակը փոխվել է, «412 Precondom Failed» հաճախորդը լուծում է հակամարտությունը։

Հարցումը «LSN ծերություն չէ» (կեղծ)


x-min-lsn: 16/B373F8D8

Ռոուտերը ընտրում է «replay _ lsn nox-min-lsn» -ի կրկնօրինակը, հակառակ դեպքում 'առաջնորդը։

CRDT G-Counter (գաղափարը)

Յուրաքանչյուր տարածք պահպանում է իր հաշվարկը։ արդյունքը բոլոր բաղադրիչների գումարն է։ կրկնօրինակումը վիրահատություն է։


18) Եզրակացություն

Eventium consistency-ը որակի փոխզիջում չէ, այլ գիտակցված պայմանագիր, ինչ-որ տեղ մենք թարմ ենք վճարում արագության և հասանելիության համար, բայց պաշտպանում ենք կրիտիկական ինվարանտները հիբրիդային ռազմավարություններով և գործիքներով։ Մուտքագրեք տարբերակները, idempotency, RNOT/Session երաշխիքները, CDC և anti-entropy, չափեք lag/staleness/wwww.lic.ru, և ձեր բաշխված համակարգը կլինի արագ, կայուն և կանխատեսելի համընկնում է նույնիսկ ձախողումների և պինդ բեռների տակ։

Contact

Կապ հաստատեք մեզ հետ

Կապ հաստատեք մեզ հետ ցանկացած հարցի կամ աջակցության համար։Մենք միշտ պատրաստ ենք օգնել։

Սկսել ինտեգրացիան

Email-ը՝ պարտադիր է։ Telegram կամ WhatsApp — ըստ ցանկության։

Ձեր անունը ըստ ցանկության
Email ըստ ցանկության
Թեմա ըստ ցանկության
Նամակի բովանդակություն ըստ ցանկության
Telegram ըստ ցանկության
@
Եթե նշեք Telegram — մենք կպատասխանենք նաև այնտեղ՝ Email-ի дополнение-ով։
WhatsApp ըստ ցանկության
Ձևաչափ՝ երկրի կոդ և համար (օրինակ՝ +374XXXXXXXXX)։

Սեղմելով կոճակը՝ դուք համաձայնում եք տվյալների մշակման հետ։