Բազմատարածաշրջան գրառումներ. որտե՞ղ է իրականում հաստատվում փոփոխությունը։
Երթուղավորումը հարցումը հասցնում է տարածաշրջան. միայն գործարքի սահմանն է գրառումը դարձնում ատոմային։ Անվանեք ինվարիանտը, ընտրեք սեփականատիրոջը, ապա կրկնափորձը ձևավորեք դրա շուրջ։
Երկու տարածաշրջանում երկու հավելվածային սերվեր, VPN-ով գրող մեկ հաճախորդ և մի հարց, որը ոչ ոք չի գրել. ո՞ր բաղադրիչն է որոշում, որ գրառումը կատարվել է։ Երթուղավորումը հարցումը հասցնում է պրոցեսին։ Գործարքի սահմանը որոշում է, թե երբ փոփոխությունը դառնում է կայուն և տեսանելի։ Սրանք տարբեր աշխատանքներ են, որ կատարում են տարբեր համակարգեր, և նրանց միջև եղած ճեղքն այն տեղն է, որտեղ ապրում են բազմատարածաշրջան գրառումների սխալների մեծ մասը։
Սկսեք բիզնես կանոնից, ոչ քարտեզից
Սկսեք նախադասությամբ բիզնես կանոնի, այլ ոչ աշխարհագրության մասին. որ ընթերցումներն ու գրառումները պետք է հաջողվեն միասին, և որ միաժամանակյա փոփոխությունները պետք է անհնար լինեն այդ ընթացքում։ Պաշարի ամրագրման համար դա նշանակում է, որ պաշարի ստուգումը և ամրագրումը կա՛մ երկուսն էլ ուժի մեջ են մտնում, կա՛մ ոչ մեկը, և ոչ մի երկրորդ պատվեր չի կարող այդ ընթացքում սպառել նույն միավորը։
| Requirement | What satisfies it | What does not |
|---|---|---|
| All-or-nothing application | A transaction inside one owning system | A VPN path between regions |
| No double spend | Isolation strong enough to exclude the conflict | Atomicity alone |
| Survive a region loss | Replication the database itself documents | Two independent databases behind one client |
Հենց այդ միջին տողն են բաց թողնում թիմերը։ Ատոմականությունը առանց բավարար մեկուսացման թույլ է տալիս երկու գործարքի, որ յուրաքանչյուրն առանձին ճիշտ հաստատվի և այնուամենայնիվ ստեղծի վիճակ, որը բիզնեսը համարում է անհնար, և ոչ մի քանակի կրկնափորձի տրամաբանություն դա հետո չի ուղղում։
Մեկ հեղինակավոր սահմանը հաղթում է երկու տարածաշրջանային սերվերին
Տարածաշրջանային հավելվածային սերվերները կարող են մնալ իրենց տեղում, քանի դեռ գործողությունը հանձնում են ծառայության, որը կատարում է այն մեկ աջակցվող գործարքի սահմանի ներսում։ Հավելվածային շերտը դառնում է մտադրության երթուղիչ. տվյալների շերտը տիրապետում է ճշմարտությանը։
Այդ սահմանը պահեք կարճ և մոտ այն տվյալներին, որոնց այն դիպչում է։ Գործարքը, որը բաց է պահվում, մինչ մարդը պատասխանում է հուշմանը կամ մինչ զանգը անցնում է երկու տարածաշրջան, իր ժամանակը ծախսում է կողպեքներ պահելու վրա և մեծացնում է հավանականությունը, որ իր հետևում ինչ-որ այլ բան ժամկետանց կդառնա։ Այդ խափանումը նման է տվյալների բազայի խնդրի և իրականում այդպես հագնված ձևավորման խնդիր է։ Որոշումը տվյալների շերտ տեղափոխելը սովորաբար ամբողջությամբ վերացնում է այն։
BEGIN;
UPDATE inventory SET reserved = reserved + 1
WHERE sku = 'A-100' AND available >= 1;
INSERT INTO reservation (sku, order_id) VALUES ('A-100', 'ord-9f');
COMMIT;
Այդ էսքիզը կարդացեք որպես սահման, ոչ որպես աշխատանքի արագության խորհուրդ։ Բանն այն է, որ ստուգումը և ներդիրը կիսում են մեկ հաստատում, ուստի միաժամանակյա պատվերը կա՛մ տեսնում է պաշարը սպառված, կա՛մ ընդհանրապես չի տեսնում։
Ինչ է տալիս և ինչ չի տալիս կրկնօրինակված տվյալների բազան
Կրկնօրինակված տվյալների բազան կարող է ավելի լայն սահման տրամադրել, երբ դա թույլ է տալիս իր իսկ գործարքային մոդելը։ Spanner-ը փաստագրում է ատոմային ընթերցման-գրառման գործարքներ մեկ տվյալների բազայի ներսում՝ աղյուսակների վրայով, սահմանված մեկուսացմամբ և կրկնափորձի վարքով։ Դա երաշխիք է, որը կարդում եք, փորձարկում և դիտավորյալ վստահում եք։
Դա նաև երաշխիք է, որը գալիս է ապրանքից, ոչ երթուղուց։ Տարածաշրջանների միջև VPN-ը փոխում է, թե ինչպես են փաթեթները ճամփորդում և ինչպես են դրսևորվում խափանումները։ Այն չի երկարացնում գործարքի սահմանը նույնիսկ մեկ տողով, որքան էլ թունելը առողջ թվա։ Երկուսը շփոթելը ստեղծում է ճարտարապետություններ, որտեղ յուրաքանչյուր բաղադրիչ անցնում է իր ստուգումը, իսկ տվյալները դեռ չեն համընկնում։
Երկու տվյալների բազա մեկ համակարգ չեն դառնում
Երկու ինքնուրույն կառավարվող տվյալների բազա չեն ձեռք բերում ընդհանուր գործարքների կառավարիչ այն պատճառով, որ հաճախորդները կարող են հասնել երկուսին։ Եթե բիզնեսն իսկապես ատոմային պարտավորություն է պահանջում այդ զույգի վրա, ապա համակարգման մեխանիզմը, մասնակիցները և վերականգնման գործընթացը բոլորը պետք է ընտրվեն և որակավորվեն, ոչ թե ենթադրվեն։
Մտածեք այն պահի մասին, երբ աշխատանքը նախապատրաստելուց հետո անհետանում է մասնակիցը կամ կապը։ Աջակցվող բաշխված հաստատումը կարող է թողնել անորոշ վիճակ, որը պահանջում է վերականգնման ընթացակարգ և մարդկային որոշում, և այն չի խոստանում, որ յուրաքանչյուր տարածաշրջան կմնա գրելի յուրաքանչյուր բաժանման ընթացքում։
Եթե փոխարենը ընդունելի է ասինխրոն համակարգումը, ասացեք դա բացահայտ և գրի առեք միջանկյալ բիզնես վիճակները և հաշտեցման կանոնները։ Տեղայնորեն հաստատված քայլերի շղթան փոխհատուցմամբ օրինական ձևավորում է. այն պարզապես մեկ ատոմային գործարք չէ այլ անվան տակ։
Ձևավորեք կրկնափորձը մինչ առաջին խափանումը
Հաճախորդը կարող է կորցնել պատասխանը այն բանից հետո, երբ գործողությունը հաստատվել է, ուստի կանչողը չի կարող ժամանակի սպառումը համարել խափանում։ Պահեք կայուն հարցման ինքնությունը և նախքան փոփոխությունը կրկնափորձելը օգտագործեք ծառայության արդյունքը կամ իդեմպոտենտության մեխանիզմ, հակառակ դեպքում կրկնափորձը դառնում է երկրորդ գրառում։
Գործարքների ավտոմատ հետկանչերը կարող են նաև մեկից ավելի անգամ կատարվել կրկնափորձելի ընդհատումից հետո, ինչը նրանց դարձնում է վատ տուն անշրջելի արտաքին ազդեցությունների համար։ Դրանք պահեք հետկանչից դուրս, եթե աշխատանքային հոսքը դրանց համար բացահայտ անվտանգ արձանագրություն չի սահմանում։ Նույն զգուշությունը վերաբերում է ամեն ինչին, ինչ գումար է արժենում կամ հաղորդագրություն է ուղարկում։ Կրկնակի գանձումը շատ ավելի բարդ զրույց է, քան կրկնակի մատյանային տողը։
Ընդունումը պետք է կրկնարկի չորս սցենար. երկու հաճախորդ մրցում են նույն տողի համար, ընդհատում, որը ծառայությունը կրկնափորձելի է հայտարարում, հաստատում, որի պատասխանը երբեք չի գալիս, և տարածաշրջանի կամ նրանց միջև կապի կորուստ։ Գրանցեք հաստատված բիզնես արդյունքը և չլուծված վիճակները երթուղավորման ձևավորման կողքին, որպեսզի ոչ ոք ցանցը չշփոթի երաշխիքը տվող բաղադրիչի հետ։