Dau weinydd cymhwysiad mewn dau ranbarth, un cleient yn ysgrifennu drwy VPN, a chwestiwn na ysgrifennodd neb: pa gydran sy’n penderfynu bod yr ysgrifennu wedi digwydd? Mae llwybro’n dod â’r cais i broses. Mae ffin trafodiad yn penderfynu pryd mae’r newid yn dod yn barhaol ac yn weladwy. Gwaith gwahanol yw’r rhain a wneir gan systemau gwahanol, a’r bwlch rhyngddynt yw cartref y rhan fwyaf o fygiau ysgrifennu aml-ranbarth.

Dechreuwch o’r rheol fusnes, nid o’r map

Dechreuwch â brawddeg am y rheol fusnes yn hytrach nag am ddaearyddiaeth: pa ddarlleniadau ac ysgrifeniadau sy’n rhaid llwyddo gyda’i gilydd, a pha newidiadau cyfredol sy’n rhaid bod yn amhosibl tra byddant yn digwydd. Ar gyfer cadw stoc mae hynny’n golygu bod y gwiriad stoc a’r cadwad naill ai’n cymryd effaith gyda’i gilydd neu ddim un, ac na chaiff ail archeb ddefnyddio’r un uned yn y cyfamser.

RequirementWhat satisfies itWhat does not
All-or-nothing applicationA transaction inside one owning systemA VPN path between regions
No double spendIsolation strong enough to exclude the conflictAtomicity alone
Survive a region lossReplication the database itself documentsTwo independent databases behind one client

Y rhes ganol honno yw’r un y mae timau’n ei hepgor. Mae atomigrwydd heb ddigon o ynysu’n caniatáu i ddau drafodyn gadarnhau’n gywir bob un ac eto gynhyrchu cyflwr y mae’r busnes yn ei ystyried yn amhosibl, ac nid oes unrhyw faint o resymeg ailgynnig yn ei drwsio wedyn.

Mae un ffin awdurdodol yn curo dau weinydd rhanbarthol

Gall gweinyddion cymhwysiad rhanbarthol aros lle maent, cyn belled â’u bod yn cyflwyno’r gweithrediad i wasanaeth sy’n ei wneud o fewn un ffin trafodiad â chefnogaeth. Daw haen y cymhwysiad yn llwybrydd bwriad; haen y data sy’n berchen ar y gwir.

Cadwch y ffin honno’n fyr ac yn agos at y data y mae’n ei chyffwrdd. Mae trafodiad a gedwir ar agor tra bo dyn yn ateb anogwr, neu tra bo galwad yn croesi dau ranbarth, yn treulio’i amser yn dal cloeon ac yn cynyddu’r siawns bod rhywbeth arall yn dod i ben y tu ôl iddo. Mae’r methiant hwnnw’n edrych fel problem cronfa ddata ac mewn gwirionedd yn broblem dylunio sydd wedi gwisgo fel un. Mae symud y penderfyniad i haen y data fel arfer yn ei dynnu’n llwyr.

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;

Darllenwch yr amlinelliad hwnnw fel ffin, nid fel argymhelliad perfformiad. Y pwynt yw bod y gwiriad a’r mewnosodiad yn rhannu un cadarnhad, felly mae archeb gyfredol naill ai’n gweld y stoc wedi’i ddifetha neu’n peidio â’i gweld o gwbl.

Beth mae cronfa ddata wedi’i hailadrodd yn ei roi ac yn peidio â’i roi

Gall cronfa ddata wedi’i hailadrodd ddarparu ffin ehangach pan fydd ei model trafodiad ei hun yn cefnogi hynny. Mae Spanner yn dogfennu trafodiadau darllen-ac-ysgrifennu atomig o fewn un gronfa ddata ar draws tablau, gydag ynysu ac ymddygiad ailgynnig diffiniedig. Mae hynny’n warant rydych yn ei darllen, yn ei phrofi ac yn dibynnu arni’n fwriadol.

Mae hefyd yn warant sy’n dod o’r cynnyrch, nid o’r llwybr. Mae VPN rhwng rhanbarthau’n newid sut mae pecynnau’n teithio a sut mae methiannau’n cyflwyno eu hunain. Nid yw’n estyn ffin trafodiad hyd yn oed un rhes, waeth pa mor iach y mae’r twnnel yn edrych. Mae drysu’r ddau yn cynhyrchu pensaernïaeth lle mae pob cydran yn pasio ei gwiriad ei hun ac mae’r data’n anghytuno o hyd.

Nid yw dwy gronfa ddata yn dod yn un system

Nid yw dwy gronfa ddata a reolir yn annibynnol yn cael rheolwr trafodiadau ar y cyd oherwydd bod cleientiaid yn gallu cyrraedd y ddwy. Os oes gwir angen ymrwymiad atomig ar y busnes ar draws y pâr, rhaid dewis a chymhwyso’r mecanwaith cydlynu, y cyfranogwyr a’r broses adfer yn hytrach na’u tybio.

Meddyliwch am y foment y bydd cyfranogwr neu gyswllt yn diflannu ar ôl i waith gael ei baratoi. Gall cadarnhad dosbarthedig â chefnogaeth adael cyflwr ansicr sy’n gofyn am weithdrefn adfer a phenderfyniad dynol, ac nid yw’n dod ag unrhyw addewid y bydd pob rhanbarth yn aros yn ysgrifenadwy drwy bob rhaniad.

Os yw cydlynu anghydamserol yn dderbyniol yn lle hynny, dywedwch hynny’n eglur ac ysgrifennwch y cyflyrau busnes canolradd ynghyd â’r rheolau cysoni. Mae cadwyn o gamau a gadarnhawyd yn lleol gyda iawndal yn ddyluniad dilys; nid yw’n syml yn un trafodiad atomig dan enw gwahanol.

Dyluniwch yr ailgynnig cyn y diffyg cyntaf

Gall cleient golli’r ymateb ar ôl i’r gweithrediad gael ei gadarnhau, felly ni all y galwr drin terfyn amser fel methiant. Cadwch hunaniaeth cais barhaol a defnyddiwch ganlyniad y gwasanaeth neu fecanwaith idempotence cyn ailgynnig newid, neu bydd yr ailgynnig yn dod yn ail ysgrifennu.

Gall galwadau yn ôl trafodiadau awtomatig hefyd redeg fwy nag unwaith ar ôl canslo ailadroddadwy, sy’n eu gwneud yn gartref gwael i effeithiau allanol na ellir eu gwrthdroi. Cadwch y rheini y tu allan i’r alwad yn ôl oni bai bod y llif gwaith yn diffinio protocol diogel eglur ar eu cyfer. Mae’r un rhybudd yn berthnasol i unrhyw beth sy’n costio arian neu’n anfon neges. Mae tâl dyblyg yn sgwrs galed iawn o’i gymharu â llinell log ddyblyg.

Dylai derbyniad ailchwarae pedwar senario: dau gleient yn rasio am yr un rhes, canslo y mae’r gwasanaeth yn dweud y gellir ei ailgynnig, cadarnhad na ddaw ei ateb byth, a cholli rhanbarth neu’r cyswllt rhyngddynt. Cofnodwch y canlyniad busnes a gadarnhawyd a’r cyflyrau heb eu datrys wrth ymyl dyluniad y llwybro, fel na fydd neb yn camgymryd y rhwydwaith am y gydran sy’n darparu’r warant.

Erthyglau cysylltiedig