GH GambleHub

Կոդավորման մոդելներ

Համաձայնությունը նկարագրում է, թե ինչ արժեքներ և ինչ չափով են ընթերցողները տեսնում մրցակցային փոփոխությունների ժամանակ։ Մոդելի ճիշտ ընտրությունը հավասարակշռությունն է ինվարանտների խստության, լատենտության, հասանելի և արժեքի միջև (PACELC)։ Ներքևում գտնվում է մոդելների և դրանց օգտագործման գործնական ուղեցույց։

1) «Խիստ» մոդելները

Linearizable (գծայնացում, Strong)

Վարքագիծը կարծես բոլոր վիրահատությունները կատարվում էին ակնթարթորեն որոշակի կարգով, որը հարգում էր իրական ժամանակը։

Պլյուսներ ՝ պարզ մտավոր մոդել, անվտանգ փողի և եզակի համար։

Մինուսները ՝ քվորումներ/առաջնորդը կանխատեսում է p95/p99 աճը, հատկապես միջտարածաշրջանային։

Յուզքեյսներ 'հավասարակշռություններ, կիսագնդեր, յուրահատուկ անուններ/բանալիներ։

Sequential consistency

Բոլոր հոսքերը տեսնում են նույն վիրահատությունը, բայց պարտադիր չէ, որ ռեալ-խաղային կարգուկանոնը։ Մի քիչ ավելի թույլ է, քան linearizable-ը, հազվադեպ է ցուցադրվում անմիջապես ապրանքներում։

Serializable (գործարքային սերիալիզացիա)

Գործարքների որոշ հետևողական կարգեր (ոչ թե առանձին վիրահատություններ)։

Պլյուսներ 'բարդ ինվարանտների ճկունությունը հարցումների/սեղանների մակարդակում։

Մինուսները ՝ ավելի թանկ (արգելափակումը/տարբերակումը/հակամարտությունների վալիդացիան)։

Յուզքեյսները 'բարդ ֆինոպացիաներ, կոնսիստենտային վերահաշվարկներ, կիսագնդեր։

Snapshot Isolation (SI)

Յուրաքանչյուր գործարք կարդում է ժամանակի անփոփոխ նկարը։ ձայնագրությունները բախվում են «նույն տողերի» վրա, բայց հնարավոր է write skew։

Պլյուսներ ՝ արագ ընթերցումներ առանց արգելափակումների, կայուն հաշվետվությունների։

Մինուսներ ՝ ոչ սերիզոեմո, թակարդը write skew (օրինակ 'հերթապահ բժիշկներ)։

Յուզքեյսները 'վերլուծություն, հաշվետվություններ, CRUD մեծամասնությունը առանց կոշտ ինվարանտների։

2) Per-session և պատճառական երաշխիքներ

Read-Your-Writes (RYW)

Հաճախորդը իր ձայնագրությունից հետո միշտ տեսնում է այն հետագա ընթերցումներում։

Պլյուսներ ՝ լավ UX (ձևը հաստատվում է)։

Մինուսներ 'տեղական երաշխիք, ոչ գլոբալ։

Monotonic Reads / Writes

Ընթերցանությունները «չեն արձագանքում» ետ. հաճախորդի ձայնագրությունները օգտագործվում են նույն ձևով, ինչ գնում էին։

Causal Consistency (պատճառահետևանքային)

Եթե վիրահատությունը կախված է մյուսից (A 35B), բոլորը տեսնում են A-ը B-ի առջև։

Պլյուսներ 'ինտուիտիվ ֆիդների, մեկնաբանությունների համար։

Մինուսներ 'ավելի բարդ է միկրոօրգանիզացումը և պատճառի բարձրացումը (վեկտորային ժամացույց)։

Յուզքեյսներ 'հաղորդակցություններ, միասին խմբագրում, իրադարձությունների ժապավեններ։

3) Թույլ և ստացիոնար մոդելներ

Bounded Staleness

Ընթերցումները կարող են ոչ ավելի, քան Prot կամ N տարբերակները։

Պլյուսներ ՝ կանխատեսելի UX, լավ փոխզիջում միջտարածաշրջանային։

Մինուսներ 'չի պաշտպանում ձայնագրման հակամարտություններից։

Eventual Consistency

Ժամանակի ընթացքում բոլոր օրինակները համընկնում են. կարգուկանոնը և ուշացումը երաշխավորված չեն։

Պլյուսներ ՝ նվազագույն լատենտ/արժեք, բարձր հասանելիություն (AP)։

Մինուսներ 'անհրաժեշտ է ակնհայտ merge (CRDT/տիրույթի կանոնները)։

Յուզքեյսները 'քեշներ, ֆիդներ, մետրիկներ, հավեր, նեն critical գրացուցակներ։

4) Տիպիկ անոմալիաներ, և ի՞ նչ է դրանք նշանակում

Disty Read-ը 'չամուսնացած տվյալների կարդալը։

Non-repeatable Read: Գործարքի ներսում նույն ընթերցումը տարբեր արժեքներ է տալիս։

Phantium: Երկրորդ խնդրանքով հայտնվում է/անհետանում է նախածննդյան տողը։

Write Skew (SI): Երկու գործարքներ կարդում են հատվող ինվարանտը և գրում տարբեր տողեր, խախտելով պայմանը «պետք է լինի 1»։

Lost Corate-ը 'ձայնագրությունը «փակում է» մրցակցային փոփոխությունները։

💡 բուժվում է մեկուսացման մակարդակի բարձրացմամբ (մինչև Serializable), արգելափակումներով նախատիպով, invarium ստուգումներով կամ ստացիոնար փոխհատուցիչներով/saga մոտեցմամբ։

5) Քվորումները և կարդալու/գրելու մակարդակը/

Շատ կոմպոզիցիաներ թույլ են տալիս տալ «R »/« W» մակարդակները (կարդալու/գրելու կրկնօրինակների քանակը)։

Քվորումը (R + W> N) տալիս է «խաչմերուկ» և վերջին գրելու կարդալու ուժեղ երաշխիքներ։

W = 1, R = 1-ը ցածր ուշացում է, բայց հնարավոր են հին տվյալները։

Թյունինգը 'կրիտիկական պաշտպանություն' բարձր 'W' (կամ առաջնորդը), մնացած 'ցածր' R 'արագության համար։

Read-rep.ru/Hinted handoff-ը օգնում է հասնել ֆոնի համաձայն։

6) Ժամացույցը և կարգը. Ինչպես ենք մենք «հասկանում» պատճառները

Lampional clocks 'իրադարձությունների մասնակի կարգը։

Vector clocks: Նրանք արձանագրում են պատճառները, թույլ են տալիս մանրամասն հակամարտություններ։

Hybrid/International Time-մոտեցումները սահմանափակում են ժամացույցը կլաստերում գործարքները և bound-staleness-ը։

Տարբերակումը '"version/ts + actor' merge; CRDT-ում փակ կիսագնդեր են (բաղադրիչություն/idempotenty)։

7) CRDT և կամերային merge

CRDT (փոխարկելի/կրկնվող տվյալների տեսակներ) երաշխավորում է առանց համակարգման 'G-Counter, OR-Line, LWW-Register, Map, տեքստային OT/WOOT տարբերակներ։

Երբ օգտակար է 'հավանումներ, բազմաթիվ թեգեր, զամբյուղներ, փաստաթղթեր։

Սահմանափակումները հետևյալն են ՝ ստեղծել ճիշտ սեմանտիկա «միաձուլման» որոշակի հիբրիդային էության համար։

8) Կապ CAP/PACELC հետ

Խիստ մոդելները (Linearizable/Serializable) multi-տարածաշրջանում ww.CP-ն են լատենտության աճի հետ (PACELC 'ընտրում ենք C և վճարում L)։

Թույլ/ստացիոնար մոդելները wwww.AP և/կամ ցածր L, բայց անհրաժեշտ է merge/հակամարտություն-ռեզոլվ։

Հիբրիդ 'CP միջուկը ինվարանտների համար + AP պրոյեկցիաներ/ընթերցումներ։

9) Մոդելի ընտրությունը 'չեկ թերթ

1. Invariants: Ի՞ նչ չի կարելի խախտել։ (եզակի, հավասարակշռություն, սահմաններ)։

2. Հավատարմություն 'որտե՞ ղ են կատարվում ձայնագրություններ/ընթերցումներ։ (տեղական/գլոբալ)։

3. SLO լատենտ ՝ p95/p99 քննադատական ճանապարհների համար։

4. Համակարգման գինը 'պատրաստ եք վճարել միջտարածաշրջանային քվորումներով։

5. Կոնֆլիկտներ. Կա դետերմինացված merge, թե՞ կարիք։

6. UX սպասումները ՝ RYW/monotonic/causal հաճախորդի համար կարևոր են։

7. Դիտարկելով 'ի՞ նչ եք չափում լագը/կոնֆլիկտությունը/հնացած աստիճանը։

8. Ֆոլբեքի 'ի՞ նչ է տեղի ունենում ցանցի բաժանման ժամանակ (P)։ read-only/տեղական ձայնագրությունը/հերթը։

10) Արագ բաղադրատոմսեր

Express/հավասարակշռություն: Linearizable/Serializable, առաջնորդ + kvorum, կարճ թայմաուտներ; RYW-ի ընթերցումները։

Պրոֆիլի/ֆիդ ՝ Causal/Bounded staleness + kash; CRDT հավանումների/հաշվիչների համար; RYW հեղինակի համար։

Որոնում/վերլուծություն ՝ SI/Read Committed, ասինխրոն պրոյեկտներ, eventae ինդեքսների համար։

Գլոբալ SaaS: Geo-partitioning; «Տնային գրառումներ» - CP, հաշվետվություններ/2019 և - AP։

Համատեղ խմբագրում 'պատճառահետևանքային/eventa.ru + CRDT/OT; «պատմության» պահպանումը։

11) Դիտողություններ

Lag metriks: «replection _ lag», «staleness _ age _ 24» (p50/p95/p99)։

Հակամարտությունը հակամարտությունների մասն է, լուծման միջին ժամանակը։

Քվորումները 'հաջողությունը' R/W 'kvorum, միջտարածաշրջանային ճանապարհների թայմաուտները։

Հաճախորդների երաշխիքները ՝ RYW/monotonic - treis-2019։

12) Տիպիկ սխալներ

Պահանջել Strong-ը «ամենուր» առանց բիզնեսի հիմքի բացատրում է լատենտության և արժեքի պայթյունը։

Dance-write-ը տարբեր տարածաշրջաններում առանց սագի/CRDT-ի ֆանտոմայի և ինվարանտների կորստի։

Անտեսել RYW/monotonicy UX-ում նոր ուղարկված տվյալները։

Մի հետևեք քեշի/պրոյեկտների հնացած հնազանդությանը։

Անհավասարակշիռ merge-ը կանխատեսում է անսպասելի կորուստներ/արժեքների դուբլ։

13) Ճարտարապետության մինի-ստանդարտը

Write-2019 (CP) 'առաջնորդ, քվորումային գրառումներ, SLO և թայմաուտներ, ամսագրեր։

Read-plane (AP) 'նյութականացված ներկայացումներ, TTL-kashi, read-rep.ru։

Հաճախորդը ՝ sticky-session/նստաշրջանի երաշխիքներ (RYW/monotonic), ռուսական տարբերակները։

Կոնֆլիկտային շարժիչ ՝ CRDT/կարգապահական կանոնները, ձեռքի շարժիչի հերթը։

Տե՛ ս ՝ ճամբարներ, հակամարտություններ, հնացած ընթերցումներ։

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

Մրցույթի մոդելը ինժեներական պայմանագիր է տվյալների, ուշացման և հասանելի միջև։ Սկսեք ինվարանտներից և SLO-ից, ընտրեք խիստ այնտեղ, որտեղ անհրաժեշտ է, և ավելի թույլ այնտեղ, որտեղ դուք կարող եք առանց մոռանալու հաճախորդների երաշխիքների, քվորումի, ժամացույցի և դիտարկման մասին։ Մոդելների գրագետ համադրությունը տալիս է մասշտաբը, կանխատեսելիությունը և կայունությունը 'առանց զոհաբերելու բիզնես ճշմարտությունը և օգտագործողի վստահությունը։

Contact

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

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

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

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

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

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