CAP և ինժեներական փոխզիջումներ
CAP-ը ասում է, որ ցանցի բաժանման պայմաններում (Partrone, P) բաշխված համակարգը չի կարող միաժամանակ ապահովել և ուժեղ համակարգումը (Consistency, C) և հասանելիությունը (Availability, A)։ Եթե P-ն կա, դուք պետք է ընտրեք կամ CP, կամ AP-ը։ Բաժանումների բացակայության դեպքում սահմանափակումը չի գործում, բայց հայտնվում են այլ փոխզիջումներ, առաջին հերթին ուշացումը (latency) և արժեքը։
Գործնական ճարտարագիտությունը դուրս է գալիս CAP-ից. Կարևոր է PACELC (եթե P-ն ընտրում ենք C կամ A; հակառակ դեպքում, մենք ընտրում ենք Latency-ի և Consistency-ի միջև), մոդելը, SLA/SLO մոդելները, Յուզքեյզները և բիզնեսի ռիսկերը։
1) Հիմնական սահմանումները (առանց փիլիսոփայության)
Համաձայն (C), բոլոր հաճախորդները տեսնում են նույն արդյունքը «կարծես» վիրահատությունները կատարվում էին հետևողականորեն (գծայնություն/strong consistency)։
Հասանելիությունը (A) 'չընկնող հանգույցի յուրաքանչյուր հարցումը ավարտվում է խելացի ժամանակում, նույնիսկ բաժանվելիս։
Բաժանումը (P) 'հանգույցների միջև կապի կորուստ կամ զգալի քայքայում։ իրականում «անխուսափելի» է մեծ մասշտաբով։
PACELC 'P-ում ընտրում ենք C կամ A; Էլսե (երբ P ոչ) ընտրում ենք L (ցածր ուշացում) կամ C (ուժեղ համաձայնություն)։
2) Ընտրության ինտուիտիվ պատկերը
CP (համաձայնությունը ավելի կարևոր է), երբ որոշ հարցումներ բաժանելիս շեղվում ենք/արգելափակում, որպեսզի չխախտենք ինվարանտները։ Հարմար է փողի, գործարքների, մնացորդների հաշվարկման համար։
AP (հասանելիությունը ավելի կարևոր է), մենք միշտ պատասխանում ենք, բայց թույլ ենք տալիս ժամանակավոր անհամաձայնություն, ապա բախումներ ենք անում (CRDT/merja կանոնները)։ Հարմար է սոճու ֆիդների, հավանումների հաշվիչների, կեշանավորված մետաղների համար։
CA (միաժամանակ C և A), հնարավոր է միայն P-ի բացակայության դեպքում, այսինքն, մինչ ցանցը առողջ է։ «CA» իրական գործողության մեջ ժամանակավոր վիճակ է, ոչ թե դիզայնի հատկություն։
3) PACELC 'մի մոռացեք ուշացման մասին
Երբ P-ն ոչ, ընտրությունը հաճախ ցածր լատենտության (L) և ուժեղ համաձայնեցման միջև (C)
Տարածաշրջանների միջև ուժեղ կոնսիստենցիան = միջմայրցամաքային քվորումները տասնյակ-հարյուր ms մինչև p95։
Տեղական ընթերցումները (ցածր L) = ավելի թույլ երաշխիքներ (read-my-writes, bounded staleness, eventae)։
PACELC-ն օգնում է բացատրել, թե ինչու «արագ և խստորեն» գլոբալ հազվադեպ է 'լույսը ոչ թե ակնթարթային է, այլ կվորումները աճում են ցանցի ծալվածությամբ։
4) Կոդավորման մոդելները (արագ սպեկտրը)
Linearizable/Strong: Կարծես մեկ հաջորդական կարգ է։
Serializable: համարժեք է գործարքների հաջորդական կարգին (ձայնագրությունների մակարդակի)։
Read-your-writes/Monotonic reads-ը իր ձայնագրությունից հետո կարդում է նոր նշանակություն։
Bounded staleness: Ընթերցումները հետ են մնում ոչ ավելի, քան N տարբերակները/Delt։
Eventium consistency: Ժամանակի ընթացքում բոլոր օրինակները համընկնում են. հակամարտությունները պետք է լուծվեն։
5) CP-ի և AP-ի պատրանքները ապրանքներում և արձանագրություններում (հայեցակարգային)
CP մոտեցումները 'քվորումային ամսագրեր/առաջնորդություն (Raft/Paxos), խիստ գործարքներ, առաջնորդի գլոբալ դիրքերը, սինխրոն կրկնօրինակումը։ Գինը P-ում հարցումների մի մասը մերժելն է և ուշացման աճը։
AP մոտեցումները 'մուլտֆիլմի վարպետը/մուլտֆիլմի առաջնորդը, CRDT, gossip-տարածումը, ասինխրոն կրկնօրինակումը, կոնֆլիկտների լուծումը (LWW, վեկտորային ժամացույցներ, հիբրիդային գործառույթներ)։ Գինը ժամանակավոր անհամաձայնություն է և կանոնների բարդությունը։
6) Փոխզիջումներ մուլտֆիլմի ոլորտում
Գլոբալ առաջնորդը (CP) 'պարզ տրամաբանություն, բայց «հեռավոր» տարածքները վճարում են լատենտով։ P-ն ձայնագրությունների արգելափակում է։
Տեղական առաջնորդները + asinhron (AP), նախկին տեղական ձայնագրությունը, հետո կրկնօրինակումը։ հակամարտող փոփոխությունները պահանջում են մերջ։
Geo-partitioning: տվյալները «ապրում են» ավելի մոտ են օգտագործողին/իրավասությանը։ Քրոս շրջան միայն ագրեգատներն են։
Dance-write-ն արգելված է առանց սագի/CRDT-ի, հակառակ դեպքում ստանում են ֆանտոմներ և կրկնակի ապամոնտաժումներ։
7) Ինժեներական ինվարանտներ և բիզնես լուծումներ
Սկզբում invariants: որ երբեք չի կարող խախտել (կրկնակի սպառումը, բացասական մնացորդը, ստեղնաշարի եզակիությունը), իսկ որ «գոյատևում է» (հաշվիչ, առաջարկություններ)։
Հետո ընտրությունը
Invariant «կոշտ» www.CP-ը համապատասխան վիրահատությունների համար։
Invariant «փափուկ» wwww.AP-ը, որի հետ համապատասխան է։
8) Փոխզիջումների մեղմացման տեխնիկան
Քեշը և CQRS: Ընթերցումներ մոտ քեշի/պրոյեկցիայի միջոցով (AP), ձայնագրությունները խիստ ամսագրում (CP)։
RPO/RTO-ն փոխզիջման լեզուն է, քանի՞ տվյալներ կարող են կորցնել (RPO) և ինչպես արագ վերականգնվել (RTO)։
MedID-ը և ժամացույցը 'մոնոտոնային թայմստամպներ (Hybrid/Windowflake), ULID/Winowflake։
Սագի/TSS: բիզնես փոխհատուցում գլոբալ բլոկների փոխարեն։
CRDT-ը և հիբրիդային միջը 'հավաքածուների, հաշվիչների, «վերջին հաշվարկների» համար։
Bounded staleness: UX հավասարակշռություն և ճշգրտություն։
9) Դիտարկումը, SLO-ն և միջադեպերի կառավարումը
SLO լատենտ (p50/p95/p99) առանձին ընթերցումների/գրառումների և տարածաշրջանների համար։
SLO հասանելիությունը հաշվի առնելով տարածաշրջանի ֆեյլովերը։
Lag կրկնօրինակումներ/հակամարտություն 'հակամարտությունների մասը, լուծման միջին ժամանակը։
Ալերտները P-ի նշանով 'միջտարածաշրջանային ալիքների թայմաուտների աճը, քվորումի սխալների աճը։
Degrade-պլանները ՝ read-only ռեժիմը, տեղական ծառայությունը դելմերջեմով, «թանկ» գործառույթների անջատումը։
10) Ռազմավարության ընտրության չեկի ցուցակ
1. Ի՞ նչ ինվարիացիաներ չպետք է խախտվեն։ Ի՞ նչ է թույլատրում eventium։
2. Արդյո՞ ք անհրաժեշտ է խաչաձև ձայնագրություն ցածր լատենտ։
3. Որո՞ նք են SLO (լատենտ/հասանելիություն) և արժեքը (egress/վերարտադրողական)։
4. Թույլատրո՞ ւմ եք merge կամ միայն ավտոմատ (CRDT/կանոնները)։
5. Ո՞ րն է ցանցի ձախողման պրոֆիլը 'հաճախականությունը, տևողությունը, blast radius։
6. Կա՞ արդյոք տվյալների իրավաբանական տեղայնացում (residency)։
7. Ո՞ ր մոդելը ընդունելի է յուրաքանչյուր տեսակի տվյալների/վիրահատության համար։
8. Ինչպե՞ ս կտեսնեք ՝ ճամբարներ, հակամարտություններ, կվորումների վիճակ։
9. Ի՞ նչ է անում համակարգը P-ի դեպքում, արգելափակում է, բաժանում, կիսում։
10. Ո՞ րն է P-ից հետո տվյալների վերականգնման և վերացման պլանը։
11) Տիպիկ սխալներ
Հետապնդելով «CA ընդմիշտ»։ Առաջին P-ն պետք է ընտրի, ավելի լավ է նախօրոք։
Համաշխարհային մուլտֆիլմի վարպետը առանց մանգայի կանոնների։ Հակամարտությունները «ուտում են» տվյալները և վստահությունը։
Ուժեղ խորհրդատվություն «ամենուր»։ Ավելցուկային կվորումները ծեծում են p95/p99 և 108։
Dance-write առանց գործարքների/sag. Կորցրած ինվարանտները և ֆանտոմները։
PACELC-ի անտեսումը։ Խաղաղ ժամանակներում լատենտ է տառապում, փոթորկի մեջ 'հասանելիություն։
Հակամարտությունների և բայերի զրոյական հեռուստաչափությունը։ Խնդիրները տեսանելի են միայն օգտագործողի կողմից։
12) Արագ բաղադրատոմսեր
Express/հավասարակշռություն: CP պահեստ կվորումի հետ; գրառումները միայն առաջնորդի միջոցով; ընթերցումները կարող են քերծվել, բայց քննադատական UX-ում 'read-your-writes-ում։
Բովանդակություն/ֆիդ: AP կրկնօրինակումը + CRDT/merga կանոնները; P - տեղական սպասարկում, ապա փակցնել։
Գլոբալ SaaS: geo-partitioning 'tenae/region'; խիստ վիրահատություններ «տնային» տարածքում (CP), հաշվետվություններ/որոնում 'ասինխրոն պրոյեկտների միջոցով (AP)։
Real-tim signaling: Anycrim/edge + AP-shin; քննադատական թիմերը անցնում են հաստատված ալիքի միջոցով (CP)։
Աուդիտ/ամսագիր 'ճշմարտության միակ աղբյուրը (append-only) CP-ալիքներով, շուրջը' քեշներ և պրոյեկցիաներ։
13) Ճարտարապետության մինի-ստանդարտը (բանավոր)
Write-2019 (CP) 'առաջնորդը + քվորումային կրկնօրինակումը, խիստ ինվարանտները, սագները միջին վիրուսային էֆեկտների համար։
Read-plane (AP) 'նյութականացված ներկայացումներ, քաշներ, search ինդեքսներ, ասինխրոն նորարարություն։
Geo-routing: Օգտագործողները ընկնում են «տնային» տարածաշրջանի մեջ։ P-ի դեպքում տեղական ռեժիմը + հաջորդ կրկնօրինակումը։
Կոնֆլիկտային շարժիչ ՝ CRDT/կանոնները; կոնֆլիկտների ամսագիրը և ձեռնարկության միջոցները։
Դիտողությունն այն է, որ կվարումը, ճամբարները, ցանցային քարտեզը։
14) Ուշացման գործնական մաթեմատիկան (պարզ գնահատական)
Գլանափաթեթը 245 մզ 1000 մղոն (RTT ավելի շատ)։ Միջմայրցամաքային kvorums 24p95 հեշտ> 150-250 ms։
Ցանկացած «գլոբալ Strong» ձայնագրման համար թանկ հարցում է։ Եթե UX-ը պահանջում է <100-150 մզ, մտածեք տեղական write-home + ասինխրոն հետևանքների մասին։
15) Քաղաքականությունները բաժանման դեպքում
CP ճանապարհը 'արգելափակել ձայնագրությունները քվորումից դուրս։ ներառել read-only; ազնիվ արձաններ տալ օգտագործողին։
AP ճանապարհը 'տեղական ծառայելը։ պիտակավորել տարբերակները; վերականգնման ժամանակ 'դետերմինացված մանգա; կոնֆլիկտներ բարձրացնել վերլուծության մեջ։
Եզրակացություն
CAP-ը ոչ թե դոգմա է, այլ հիշեցում, որ ցանցի բաժանումը անխուսափելի է, և նախագիծը պետք է նախօրոք ընտրի, քան զոհաբերել փոթորկի մեջ 'հասանելիություն կամ խիստ համաձայնություն։ PACELC-ն ավելացնում է ուշացման առանցքը պարզ եղանակին։ Փորձարկեք ռազմավարությունը 'պահեք CP միջուկը, որտեղ ինվարանտները սուրբ են, և AP ինքնաթիռը այնտեղ, որտեղ ավելի կարևոր է արագությունն ու կայունությունը։ Տեղադրեք հեռաչափություն, դեգրադացիայի պլաններ և չափման գործընթացներ, և համակարգը կպահպանի տվյալները և օգտագործողի վստահությունը։