Skrif yfir mörg svæði: hvar fer staðfestingin í raun fram?
Leiðsögn kemur beiðni til svæðis; aðeins mörk færslu gera skrif óklofin. Nefndu óbreytuna, veldu eigandann og hannaðu síðan endurtekninguna í kringum hana.
Tveir forritamiðlarar á tveimur svæðum, einn biðlari sem skrifar í gegnum VPN, og spurning sem enginn skrifaði: hver hluti ákveður að skrifin hafi átt sér stað? Leiðsögn kemur beiðninni til ferlis. Mörk færslu ákveða hvenær breytingin verður varanleg og sýnileg. Þetta eru ólík verk sem ólík kerfi vinna, og bilið þeirra á milli er þar sem flest villur í skrifum yfir mörg svæði lifa.
Byrjaðu á viðskiptareglunni, ekki kortinu
Byrjaðu á setningu um viðskiptaregluna frekar en um landafræði: hvaða lestrar og skrif verða að heppnast saman og hvaða samhliða breytingar verða að vera ómögulegar meðan á því stendur. Fyrir birgðabókun þýðir það að birgðaskoðunin og bókunin taka annaðhvort báðar gildi eða hvorug, og engin önnur pöntun má eyða sömu einingunni á milli.
| 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 |
Það er einmitt miðröðin sem teymin sleppa. Óklofnið án nægilegrar einangrunar leyfir tveimur færslum að staðfestast hvor um sig rétt og framleiða samt ástand sem viðskiptin telja ómögulegt, og engin magn af endurtekningarlógík bætir það eftir á.
Eitt valdbært mark vinnur á tveimur svæðisþjónum
Svæðisbundnir forritamiðlarar mega vera þar sem þeir eru, svo framarlega sem þeir leggja aðgerðina fyrir þjónustu sem framkvæmir hana innan eins studds færslumarka. Forritalagið verður leiðsagnarstýring ásetnings; gagnlagið á sannleikann.
Haltu þessum mörkum stuttum og nálægt gögnunum sem þau snerta. Færsla sem haldin er opin meðan maður svarar kvaðningu, eða meðan kall fer yfir tvö svæði, eyðir tíma sínum í að halda lásana og eykur líkurnar á að eitthvað annað renni út á bak við hana. Sú bilun lítur út eins og gagnagrunnsvandamál og er í raun hönnunarvandamál í gervi. Að færa ákvörðunina í gagnlagið fjarlægir hana venjulega algjörlega.
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;
Lestu þessa skissu sem mörk, ekki sem afkastatillögu. Málið er að skoðunin og innsetningin deila einni staðfestingu, svo samhliða pöntun sér annaðhvort birgðirnar eyttar eða sér þær alls ekki.
Hvað endurgerður gagnagrunnur gefur og hvað ekki
Endurgerður gagnagrunnur getur veitt víðari mörk þegar hans eigið færslulíkan styður það. Spanner skjalfestir óklofnar lestrar- og skrifafærslur innan eins gagnagrunns yfir töflur, með skilgreindri einangrun og endurtekningahegðun. Það er ábyrgð sem þú lest, prófar og treystir á viljandi.
Það er líka ábyrgð sem kemur frá vörunni, ekki leiðinni. VPN milli svæða breytir því hvernig pakkar ferðast og hvernig bilanir koma fram. Það lengir ekki færslumörk um eina röð, hversu heilbrigð göngin virðast sem eru. Að rugla þessu tvennu saman framleiðir arkitektúr þar sem hver hluti stenst sína eigin skoðun og gögnin eru samt ósammála.
Tveir gagnagrunnar verða ekki eitt kerfi
Tveir sjálfstætt stýrðir gagnagrunnar öðlast ekki sameiginlegan færslustjóra af því að biðlarar komast í báða. Ef viðskiptin þurfa sannarlega óklofna skuldbindingu yfir parið verða samhæfingaraðferðin, þátttakendurnir og endurheimtarferlið að vera valin og hæfð frekar en gert ráð fyrir.
Hugsaðu um stundina þegar þátttakandi eða tenging hverfur eftir að verkið hefur verið undirbúið. Studd dreifð staðfesting getur skilið eftir óvissu ástand sem þarf endurheimtaraðferð og mannlega ákvörðun, og hún kemur án loforðs um að hvert svæði haldist skrifanlegt í gegnum hverja skiptingu.
Ef ósamstillt samhæfing er hins vegar ásættanleg, segðu það skýrt og skrifaðu niður milliviðskiptaástöndin ásamt sáttareglunum. Keðja staðfestra skrefa á staðnum með bóknun er lögmæt hönnun; hún er bara ekki ein óklofin færsla undir öðru nafni.
Hannaðu endurtekninguna fyrir fyrstu bilun
Biðlari getur misst svarið eftir að aðgerðin var staðfest, svo kallandinn getur ekki litið á tímamörk sem bilun. Varðveittu varanlegt beiðniauðkenni og notaðu útkomu þjónustunnar eða idempotence-aðferð áður en breytingu er endurtekin, annars verður endurtekningin annað skrif.
Sjálfvirk færsluendurköll geta líka keyrt oftar en einu sinni eftir endurtekningahæfa afturköllun, sem gerir þau að slæmu heimili fyrir óafturkræf ytri áhrif. Haltu þeim utan við endurkallið nema verkflæðið skilgreini skýra örugga siðareglu fyrir þau. Sama varúð á við allt sem kostar peninga eða sendir skilaboð. Tvöföld gjaldfærsla er miklu erfiðara samtal en tvöföld logglína.
Viðtaka ætti að endurspila fjögur atburðarás: tveir biðlarar keppa um sömu röð, afturköllun sem þjónustan segir endurtekningahæfa, staðfesting sem svar hennar kemur aldrei, og tap á svæði eða tengingunni milli þeirra. Skráðu staðfesta viðskiptaniðurstöðu og óleystu stöðurnar við hlið leiðsagnarhönnunarinnar, svo enginn rugli netinu saman við hlutann sem veitir ábyrgðina.