GH GambleHub

Strong Consistency: Երբ անհրաժեշտ է

Strong Consistency-ը (գծայնացումը) մոդել է, որտեղ բոլոր վիրահատությունները նման են, կարծես անմիջապես և հաջորդաբար կատարվում են մեկ համաշխարհային կարգով, որը համաձայն է իրական ժամանակի հետ։ Օգտագործողը կարդում է վերջին ապացուցված կարևորությունը, իսկ երկու զուգահեռ հաճախորդները չեն «թալանել» միմյանց տրամաբանորեն։

Խիստ համաձայնությունը տալիս է պարզ մտավոր մոդել և պաշտպանում է կոշտ ինվարանտները, բայց պահանջում է համակարգել (կվորումներ/առաջնորդ), որը բարձրացնում է ցանցային բաժանումների ուշացումը և զգայունությունը։

1) Երբ Strong-ը պարտական է

Ֆինանսներ և հաշվարկներ

Հավասարակշռությունները և ապամոնտաժումները. «Երկակի ծախսը» անընդունելի է։

Թարգմանություններ և փոխկապակցումներ. Նույն գումարը չի կարող երկու անգամ կատարվել։

Aleksard և limits

Ապրանքի/տեղերի մնացորդները հյուրանոցում/տոմսեր. Դուք չեք կարող բացասական արժեքներ թողնել։

Գործողության սահմանափակումները ժամանակի միավորում (վարկային լիմիտներ, API վարկեր)։

Եզակիությունը և ամբողջականությունը

Եզակի տրամաբանություններ/ազդանշաններ/դեդուպլիզացիայի կանոններ։

Invariants տիրույթի մակարդակում. <<գրասենյակում պետք է հերթապահի թիվ 1 բժիշկ>>, "հերթում չի կարող լինել> N ակտիվ խնդիրներ>։

Աուդիտ և անփոփոխ ամսագրեր

Ճշմարտության իրավաբանական աղբյուրը ծառայող իրադարձությունները քննադատական են։

Եթե ինվարիայի խախտումը անընդունելի բիզնես ռիսկ է կրում (փողի կորուստ, սանկցիաներ, վստահության կորուստ), ընտրեք Strong Consistency-ը։

2) Ի՞ նչ է «խիստ»

Linearizability (վիրահատական մակարդակը), կարդալը տեսնում է վերջին հաջողակ ձայնագրությունը։ ժամանակները հարգված են։

Serializable (գործարքային մակարդակը): արդյունքը համարժեք է գործարքների գործողություններին հաջորդաբար (միգուցե strong, բայց երբեմն իրականացվել է առանց կոշտ real-time)։

Կարևոր տարբերությունը 'Serializable-ը պաշտպանում է գործարքների մակարդակի անոմալիայից (phantom/write-skew), իսկ Linearizable-ը' մեկ վիրահատության ակնթարթության և կարգի մասին։ Հաճախ անհրաժեշտ են երկու հատկություններ (օրինակ, փողը BD + իրադարձությունների ամսագրում)։

3) Խստության գինը ՝ PACELC և CAP

PACELC 'ցանցի բաժանման ժամանակ (P) պետք է ընտրեք C (ստրկություն) կամ A (հասանելիություն)։ Strong www.CP 'ավելի լավ է հրաժարվել կամ արգելափակել, քան խախտել ինվարանտը։ Երբ բաժանումը չկա (EL), մենք վճարում ենք L-ը 'կոորդինացիան/քվորումը աճում է p95/p99։

Պրակտիկա 'strong-ի համար «invariants», շուրջը' արագ պրոյեկցիաներ/eventronics, որպեսզի UX-ը չվնասի։

4) Ինչպե՞ ս են հասնում Strong Consistency-ը

Առաջնորդություն և քվորումա

Միակ առաջնորդը վերցնում է գրառումները։ ընթերցանությունը առաջնորդի կամ կվորումի կրկնօրինակն է։

Cvorum 'W '-ը ձայնագրելու և «R» -ի համար կարդալու համար «R + W> N» -ը մեծացնում է «վերջին» կարդալու հավանականությունը։

Համաձայնեցման ալգորիթմներ

Raft/Paxos: Վերարտադրության լոգ, մեծամասնության հաստատում, տերմին/ինդեքսներ։

Սինխրոն կրկնօրինակումը 'ձայնագրությունը հաստատվում է միայն քվորումի վրա անձնավորությունից հետո։

Ժամացույց և կարգ

Windows Time/Hybrid Logical Clocks (HLC): Resinchron ժամացույցի սահմանափակումը անվտանգ գլոբալ շարադրության համար։

Fence-tocens/տարբերակումը 'պաշտպանություն «առավոտյան» առաջնորդներից և համախմբված բրեյնից։

Գործարքների մեկուսացում

Serializable (SI +) 'պաշտպանություն phantom/write-skew։

Strict-serializable: Սերիզացիա + գծայնացումը իրական ժամանակի հետ։

5) Multi-տարածաշրջանը 'տարբերակներ և փոխզիջումներ

Գլոբալ առաջնորդը (CP)

Գրառումները գնում են մեկ տարածաշրջանի առաջնորդի միջոցով։ ընթերցումները տեղական քեշներ/պրոյեկցիաներ են կամ առաջնորդի միջոցով։

Պլյուսներ ՝ պարզ մոդել։ Մինուսները ՝ p95/RTT մինչև առաջնորդը, P-ի դեպքում 'գրառումները։

Տարածաշրջանային առաջնորդներ + սինխրոն քվորում

Երկրագնդի կվորումը մի քանի տարածաշրջաններից։ յուրաքանչյուր գրառում սպասում է ապացույցների> 50 տոկոսը։

Պլյուսներ ՝ առանց «նեղ պարանոցի», բարձր կայունություն։ Մինուսներ 'միջմայրցամաքային լատենտ։

Geo-partitioning

«Տնային» տվյալները տարածաշրջանի համար (տենանտ/միգրացիա); գլոբալ վիրահատությունները սագայի/ագրեգատների միջոցով են։

Պլյուսներ 'տեղական գրառումների ցածր ուշացումներ։ Մինուսները 'տվյալների սահմանների պլանավորումը։

6) R/W և ընթերցումներ

Գրառումները ՝ «W = majority» - strong-ի համար։

Ընթերցումներ

«Ամենաերիտասարդ» '«R = majority» կամ կարդալը առաջնորդից։

L-ի նվազեցման համար «stale-ok» կարդալը երկրորդ էկրաններից (UX-ում ակնհայտ մակնշմամբ)։

Read-rep.ru/le.read: օպտիմիզացում առանց խստության կորցնելու առաջնորդի կարճ վարձույթներում։

7) Արտադրողականություն և UX

Լատենտ 'կենտրոնացեք RTT-ի վրա հաճախորդի և առաջնորդի/քվորումի միջև (միջտարածաշրջանային հարյուրավոր)։

Pattern «write-strong, read-fox»: strong + cash/prosports ընթերցանության վրա, RYW-ից հեղինակի համար։

Batch/փաթեթներ 'խմբավորում եք ձայնագրությունները, բայց հետևեք պոչի լատենտին։

Քայքայման ուրվագծերը 'պատահականության ժամանակ' read-only, ազնիվ արձաններ, վտանգավոր մուտացիաների արգելք։

8) Strict ճանապարհների դիտարկումը

Մետրիկները

p50/p95/p99 latency: write-kvorum, read-quorum, առաջնորդական ընթերցումներ։

Քվորումի հաջողությունը, կրկնությունները/արձագանքները, առաջնորդի փոփոխությունը։

Կրկնվող լագը (ակնկալվում է փոքր, բայց պետք է վերահսկել)։

«Սթեյլ» ընթերցումների մասնաբաժինը (եթե ներառված են)։

Թրեյսինգը

Սպանները ՝ «առաջնորդի ընդունումը», «կրկնօրինակումը», «քվորումա»։

Теги: `term`, `leader_id`, `quorum_size`, `region`.

Alerta

P95/p99 աճը, հաճախակի առաջնորդի վերընտրումը, quorum-timeouts, split-brain լուծիչները։

9) Թեստեր և քաոս

Jepsen-նման 'ցանցային բաժանումներ, ձգումներ, drops, clock-skew։

Safety-invariants 'կրկնակի ծախսերի/բացասական մնացորդների/երկակի ամրագրման անհնարինությունը։

Առաջնորդությունը 'առաջնորդի հրաժարվելը, բեռի տակ վերընտրվելը, fence-տոկենները։

Կարդալու համաձայն 'կարդալը գրելուց անմիջապես հետո պետք է տեսնի «նոր» (RYW/linearizable read)։

10) Պլեյբուկի

Քվորումի կորուստ 'անցնել read-only-ին, տեղեկացնել հաճախորդներին, ուղարկել «տնային» տարածք, եթե կա geo-partitioning։

Լատենտության աճը միջմայրցամաքային է 'ժամանակավորապես նվազեցնել խիստ գրառումների ծավալը (հոսքերի մի մասը հերթում/պրոյեկտում), տեղայնացնել լուծույթը։

Առաջնորդին 'ավելացնել ընտրությունների թայմաուտները, ստուգել ցանցերը/ժամացույցները/GC-դադարները։

Split-brain: ներառել fence-tocens/leport-ստուգումներ, կանգնեցնել հին առաջնորդները օպերատորի մակարդակում։

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

Պահանջել Strong «ամենուր» 'լատենտության և արժեքի պայթյունը փոխարենը կենտրոնացնել ինվարանտների վրա։

Փորձելով լինել CA իրական բաժանմունքում, P-ի պահին համակարգը դեռ ընտրություն է անում, հաճախ ակնհայտ չէ։

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

RYW-ի բացակայությունը 'օգտագործողը չի տեսնում իր նոր գրված էությունը' վստահության նվազումը։

Առանց HLC/Windows Time-սահմանների, հեշտ է ստանալ «ցատկող» ժամանակը և մրցավազքը։

Դեգրադացիայի պլան չկա. P-ում սկսվում են քաոսային մասնակի ձախողումներ։

12) Արագ լուծումներ (բաղադրատոմսեր)

Վճարումներ/հավասարակշռություններ ՝ առաջնորդ + majority-kvorum; գործարքները strict-serializable; կարճ թայմաուտներ, կոշտ մերժում P.

Ամրագրումը (տեղեր/արցունքներ) 'write-strong առաջնորդի միջոցով, կարդալը - cash RYW-ի հետ; TTL պահեստները + TCC։

Գլոբալ SaaS: geo-partium 'tenae/region'; խիստ վիրահատություններ տնային տարածքում, հաշվետվություններ/որոնում - նախագծման միջոցով։

Աուդիտ/ամսագիր 'append-only CP ամսագիր; ընթերցանությունը կարելի է քշել, բայց հավատալ վերահսկողական կետերին։

13) Չեկ թուղթ մինչև վաճառելը

  • Invariants, որոնք պահանջում են strong; մնացածը 'AR/պրոյեկտում։
  • Ընտրվել է ռեժիմը 'մեկ առաջնորդ/կվորում միջտարածաշրջանային/geo-part.ru։
  • Տրամադրված «W = majority», «R = leader 'majority» քննադատական ճանապարհների համար։
  • Ապահովված RYW/monotonic UX-ի համար; հստակ նշված են ընթերցանության «stale-ok» -ը։
  • Ներառված են քվորումի, բայերի, լատենտների փոխաբերությունները։ ալտերտերը p95/p99 և վերբեռնման վրա։
  • Կա degrade պլան 'read-only, անջատել վտանգավոր մուտացիաները, հերթերը «փոթորիկից հետո»։
  • Քաոս թեստեր 'բաժանումը, clock-skew, առաջնորդի հրաժարումը։ ստուգվում են safety-invariants-ը։
  • Lenta.ru: որ խիստ, որ «կարող է հետ մնալ», ապրանքի/աջակցության հաղորդակցությունը։

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

Strong Consistency-ը ճշմարտության պաշտպանության գործիք է, որտեղ սխալը անընդունելի է։ Կիրառիր այն կոշտ ինվարիատորների շուրջ, որոնք գիտակցաբար վճարում են մետաղալարերի և փոթորիկների առկայության համար։ Քրոնիկոն 'CP միջուկը կրիտիկական, AP-ընթերցանության և արագության պրոյեկցիայի համար։ Ճիշտ հեռուստատեսությամբ, դեգրադացիայով և թեստերով դուք կպահպանեք ճիշտ և օգտագործողի փորձը։

Contact

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

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

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

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

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

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