3.3

Gweld yn Saesneg

3.3 Systemau dosbarthedig

Trosolwg a chymhelliant

Mae system ddosbarthedig yn unrhyw system y mae ei chydrannau’n rhedeg ar fwy nag un peiriant ac yn cydgysylltu dros rwydwaith. Yr eiliad y byddwch yn croesi ffin proses dros rwydwaith, rydych yn etifeddu rhai gwirioneddau caled nad ydynt yn bodoli o gwbl y tu mewn i broses sengl. Nid yw’r rhwydwaith yn ddibynadwy, ac mae ei oedi’n amrywio. Gall negeseuon gael eu colli, eu dyblygu, eu gohirio, neu eu hailddrefnu. Mae cydrannau pell yn methu ar eu pen eu hunain. Nid oes cloc a rennir. Mae’r ”camdybiaethau cyfrifiadura dosbarthedig” clasurol (mae’r rhwydwaith yn ddibynadwy, mae’r oedi’n sero, mae’r lled band yn ddiddiwedd, nid yw’r topoleg byth yn newid) yn enwi’n union y tybiaethau sy’n achosi toriadau gwasanaeth. Eich gwaith chi yw dylunio ar gyfer y gwirioneddau hyn o’r cychwyn, yn hytrach na’u hailddarganfod yn ystod digwyddiad.

I sefydliad mawr, nid yw dosbarthiad yn ddewisol. Bydd unrhyw system sy’n gwasanaethu graddfa genedlaethol neu fyd-eang, yn cysylltu sawl adran, neu angen argaeledd uchel, yn rhychwantu llawer o beiriannau, canolfannau data, ac yn aml ranbarthau. Mae mentrau’n rhedeg systemau trafodion dosbarthedig, piblinellau digwyddiadau, a defnyddiadau aml-ranbarth. Mae llywodraethau’n rhedeg integreiddiadau rhyng-asiantaeth lle mae pob asiantaeth yn berchen ar ei systemau ei hun ac nid oes neb yn rheoli’r cyfan. Yma, mae’r bwlch rhwng dyluniad cadarn ac un bregus yn ymddangos fel toriadau gwasanaeth penawd, taliadau budd-dal a gollwyd, ac oblygiadau rheoleiddiol. Y technegau yn y bennod hon (rhesymu ynghylch cysondeb, idempotency, ailgeisio gyda chiliad, torwyr cylched, sagas, ac arsylladwyedd dosbarthedig) yw eich amddiffynfeydd safonol.

Y rhan anoddaf o systemau dosbarthedig yw bod methiannau’n rhannol ac yn ysbeidiol. Mae rhaglen un-peiriant naill ai’n gweithio neu’n chwalu. Gall system ddosbarthedig fod yn hanner-gweithio: rhai ceisiadau’n llwyddo, rhai’n rhedeg allan o amser, a rhai’n cael eu colli’n dawel, i gyd ar unwaith. Mae’r bennod hon yn canolbwyntio ar y rhesymu a’r patrymau sy’n galluogi tîm mawr i adeiladu systemau sy’n dirywio’n raenus ac yn aros yn ddealladwy o dan fethiant rhannol.

Egwyddorion allweddol

  • Nid yw’r rhwydwaith yn ddibynadwy. Dyluniwch bob rhyngweithiad pell gan dybio y gall fod yn araf, methu, dyblygu, neu ailddrefnu.
  • Ni allwch gael cysondeb perffaith ac argaeledd perffaith yn ystod rhaniad. Dewiswch yn fwriadol fesul rhyngweithiad (CAP/PACELC), a chofiwch fod oedi’n gost hyd yn oed pan nad oes rhaniad.
  • Gwnewch weithrediadau’n idempotent. Os gellir ailgeisio gweithrediad yn ddiogel, mae’r rhan fwyaf o drin methiant dosbarthedig yn dod yn hydrin.
  • Mae angen terfyn amser ar bob galwad bell. Mae arosiadau di-derfyn yn troi un dibyniaeth araf yn doriad gwasanaeth sy’n effeithio ar y system gyfan.
  • Ffafriwch gysondeb ymhen amser lle mae’r busnes yn caniatáu hynny, ond gwnewch hynny’n eglur. Rhaid i ddefnyddwyr ac archwilwyr ddeall pryd y gallent weld data hen.
  • Ynysu methiannau. Mae parwydydd (bulkheads) a thorwyr cylched yn atal un gydran sy’n methu rhag rhaeadru i mewn i bob un ohonynt.
  • Ni allwch ddadfygio’r hyn na allwch ei weld. Mae llifau dosbarthedig angen olrhain cysylltiedig, metrigau, a logiau ar draws pob naid.
  • Mae “traddodi’n union-unwaith” yn fyth; mae prosesu union-unwaith yn gamp beirianneg. Dyluniwch ar gyfer o-leiaf-unwaith gyda dad-ddyblygu.

Argymhellion

Rhesymwch ynghylch cysondeb gyda CAP a PACELC

Mae damcaniaeth CAP yn dweud bod yn rhaid i system, yn ystod rhaniad rhwydwaith, ddewis rhwng cysondeb (mae pob darlleniad yn gweld y sgrifen ddiweddaraf) ac argaeledd (mae pob cais yn cael ymateb). Mae PACELC yn ychwanegu ail gyfnewidiad: Else (pan nad oes rhaniad) rydych yn dal i gyfnewid Latency (oedi) yn erbyn Consistency (cysondeb). Peidiwch â stampio hyn fel label system gyfan. Penderfynwch hyn fesul gweithrediad. Mae angen cysondeb cryf ar drosglwyddiad balans banc, a bydd yn gwrthod yn hytrach na mentro gwario dwbl. Gall ffrwd gymdeithasol neu gownter golygon cynnyrch dderbyn hendra mewn cyfnewid am argaeledd a chyflymder. Ysgrifennwch pa fodel cysondeb mae pob llif data’n ei ddefnyddio (cryf, achosol, darllen-eich-sgrifeniadau, neu ymhen amser) fel na fydd neb yn tybio gwarant nad yw’r system yn ei darparu mewn gwirionedd.

Adeiladwch idempotency, terfynau amser, ailgeisio, a chiliad gyda’i gilydd

Triniwch y pedwar techneg hyn fel un pecyn. Rhowch derfyn amser i bob gweithrediad pell, fel na all dibyniaeth sy’n hongian rwystro edefyn am byth. Ar fethiant, ailgeisiwch, ond dim ond ar gyfer gweithrediadau sy’n ddiogel i’w hailadrodd. Mae diogel i’w hailadrodd yn golygu idempotent: neilltuwch allwedd unigryw i bob cais a gadewch i’r derbynnydd dad-ddyblygu, fel nad yw “codi tâl ar gerdyn” a ailgeisir yn codi tâl ddwywaith. Bylchwch eich ceisiadau ailadrodd gyda ciliad esbonyddol a siglo (jitter), fel eich bod yn osgoi storm ailgeisio gydamseredig sy’n troi pwl byr yn wadiad gwasanaeth hunan-achosedig. Capiwch nifer yr ailgeisiadau a chyfanswm y gyllideb amser, oherwydd mae ailgeisio am byth yn dim ond symud y methiant. Heb idempotency, mae ailgeisio’n beryglus. Heb giliad, mae ailgeisio’n ddinistriol.

Ychwanegwch dorwyr cylched a pharwydydd i atal rhaeadrau

Mae torrwr cylched yn gwylio galwadau i ddibyniaeth ac, ar ôl trothwy o fethiannau, yn “agor”: mae’n methu’n gyflym am gyfnod oeri yn lle pentyrru mwy o geisiadau ar wasanaeth sy’n cael trafferth, yna’n “hanner-agor” i brofi adferiad. Mae hyn yn atal y rhaeadr lle mae gwasanaeth araf i lawr yr afon yn disbyddu edafedd pob galwr hyd nes bod y system gyfan yn arafu. Mae parwydydd yn rhannu adnoddau (pyllau edafedd, pyllau cysylltiad) fel na all dirlenwad mewn un dibyniaeth fwyta’r capasiti sydd ei angen ar rai eraill. Parwch y ddau â dirywiad graenus: pan nad yw dibyniaeth nad yw’n hanfodol ar gael, dychwelwch ymatebion wedi’u storio dros dro neu ragosodedig yn hytrach na methu’r cais cyfan.

Rheolwch drafodion dosbarthedig â sagas, nid ymrwymiad dau gam

Fel arfer ni allwch ddal un trafodyn ACID (Atomigrwydd, Cysondeb, Ynysu, Parhad) sengl ar draws sawl gwasanaeth neu gronfa ddata. Mae ymrwymiad dau gam dosbarthedig yn araf, yn cloi adnoddau, ac yn torri argaeledd. Defnyddiwch y patrwm saga yn lle hynny. Modelwch drafodyn busnes fel dilyniant o drafodion lleol, pob un yn cyhoeddi digwyddiad sy’n sbarduno’r nesaf, gyda gweithred iawndal ar gyfer pob cam i’w ddadwneud os bydd cam diweddarach yn methu. Daw sagas mewn dau flas. Mae gan coreograffi (choreography) wasanaethau’n ymateb i ddigwyddiadau ei gilydd, heb reolydd canolog. Mae gan gyfarwyddo (orchestration) gydgysylltydd canolog yn gyrru’r camau, sy’n haws rhesymu yn ei gylch a’i fonitro. Mae sagas yn cofleidio cysondeb ymhen amser: mae’r system yn mynd drwy gyflyrau canolradd ac yna’n cydgyfeirio. Felly dyluniwch brofiad y defnyddiwr a’r trywydd archwilio i ystyried cyflyrau “ar y gweill” a “wedi’i iawndaluo”.

Triniwch union-unwaith fel o-leiaf-unwaith ynghyd â dad-ddyblygu

Ni all broceriaid negeseuon warantu traddodiad union-unwaith mewn gwirionedd ar draws methiannau. Yr hyn y gallwch chi a nhw ei gyflawni yw traddodiad o-leiaf-unwaith gyda phrosesu idempotent, sy’n cynhyrchu effeithiau union-unwaith. Dyluniwch ddefnyddwyr i drin negeseuon dyblyg yn ddiogel, gan ddefnyddio allweddi idempotency neu log negeseuon a broseswyd. Gwybyddwch warantau trefn a thraddodiad eich brocer yn fanwl gywir. Ar gyfer ffrydio, defnyddiwch grwpiau defnyddwyr, rhaniadau, a rheolaeth atred (offset) yn fwriadol, a gwnewch ail-brosesu’n ddiogel, fel y gallwch ailchwarae ffrwd ar ôl trwsio nam heb lygru cyflwr i lawr yr afon.

Offeryna llifau dosbarthedig o’r dechrau i’r diwedd

Mabwysiadwch dri philer arsylladwyedd, wedi’u cydgysylltu ar draws ffiniau gwasanaeth. Lledaenwch ID olrhain/cydberthyn drwy bob naid, fel y gallwch ddilyn cais defnyddiwr sengl ar draws pob gwasanaeth y mae’n ei gyffwrdd (olrhain dosbarthedig). Allyrrwch fetrigau strwythuredig (canraddau oedi, cyfraddau gwall, dirlenwad, trwybwn) fesul gwasanaeth a fesul dibyniaeth. Allyrrwch logiau strwythuredig sy’n cario’r ID cydberthyn. Defnyddiwch hyn oll i osod amcanion lefel gwasanaeth ac i rybuddio ar symptomau y mae defnyddwyr yn eu teimlo mewn gwirionedd, fel cyfradd gwall ac oedi, yn hytrach na dim ond ar iechyd peiriannau unigol. Mewn system ddosbarthedig, nid teclynnau dewisol yw arsylladwyedd. Dyma’r unig ffordd i ddeall ymddygiad o dan fethiant rhannol.

Cyfaddawdau: manteision a chostau

TechnegManteisionAnfanteision / cost
Cysondeb cryfModel meddyliol syml, dim darlleniadau henArgaeledd is yn ystod rhaniadau, oedi uwch, cost cydgysylltu
Cysondeb ymhen amserArgaeledd uchel, oedi isel, graddadwyDarlleniadau hen, rhesymu cymhleth, angen datrys gwrthdaro
Ailgeisio gyda chiliadYn goroesi methiannau dros dro yn awtomatigYn chwyddo llwyth os caiff ei gamddefnyddio; angen idempotency a chapiau
Torwyr cylched / parwydyddYn atal methiant rhaeadrol, yn methu’n gyflymCymhlethdod ychwanegol, tiwnio trothwyon, risg o dripio cynamserol
Saga (yn erbyn 2PC)Graddadwy, ar gael, dim clonau dosbarthedigCysondeb ymhen amser, rhesymeg iawndal, anos rhesymu yn ei gylch

Y prif gyfaddawd yw rhwng cydgysylltu ac annibyniaeth. Mae pob gwarant rydych ei eisiau ar draws peiriannau (cysondeb, trefn, union-unwaith) yn costio oedi, argaeledd, neu gymhlethdod. Mae’n gofyn i beiriannau gytuno, ac mae cytuno dros rwydwaith annibynadwy’n ddrud. Y grefft yw prynu dim ond y gwarantau y mae’r busnes wir angen amdanynt, weithrediad wrth weithrediad, a dylunio popeth arall ar gyfer dirywiad graenus. Gor-brynwch gysondeb a bydd eich systemau’n troi’n araf ac yn fregus. Tan-brynwch ef a chewch lygriad data tawel sy’n ymddangos fel methiant archwiliad fisoedd yn ddiweddarach.

Cwestiynau i’w trafod gyda’ch tîm

  1. A yw eich patrymau gwydnwch yn cael eu cyflenwi fel rhagosodiadau platfform a rennir, neu a yw pob tîm yn ailddyfeisio terfynau amser ac ailgeisio? Mae’r bennod yn trin idempotency, terfynau amser, ailgeisio wedi’i ffinio, torwyr cylched, ac olrhain fel y rhataf a’r mwyaf dibynadwy pan gânt eu hadeiladu unwaith i mewn i lyfrgelloedd a rennir a rhagosodiadau platfform. Mewn sefydliad mawr, mae gadael i bob tîm eu llunio â llaw yn gwarantu anghysondeb: mae rhai llwybrau’n ailgeisio gweithrediadau nad ydynt yn idempotent, nid oes gan rai derfyn amser, nid yw rhai’n allyrru ID cydberthyn. Dewch â thystiolaeth drwy archwilio sampl o wasanaethau a chyfrif faint sy’n gosod terfyn amser eglur ar bob galwad bell ac yn lledaenu ID olrhain o’r dechrau i’r diwedd. Os yw’r rhif hwnnw’n isel, buddsoddiad platfform yw’r ateb, nid memo hyfforddi. Mae rhagosodiadau safonol hefyd yn gwneud gwydnwch yn brofadwy ac yn archwiliadwy, rhywbeth y mae rheoleiddwyr mewn cyllid a llywodraeth yn cynyddol ddisgwyl i chi ei ddangos.

  2. A yw eich terfynau amser a’ch cyllidebau ailgeisio’n cyfansoddi ar draws y gadwyn alwadau gyfan, neu a yw cais dwfn yn ailgeisio ei hun i mewn i doriad gwasanaeth? Mae cais sengl yn aml yn croesi llawer o neidiau, ac os yw pob haen yn ailgeisio dair gwaith yn annibynnol gyda’i therfyn amser ei hun, mae’r methiant mewnaf yn lluosi a’r galwr allanol yn aros ymhell y tu hwnt i unrhyw derfyn y gall dyn ei oddef. Gosodwch gyllideb amser gyfan ar gyfer y cais sy’n wynebu’r defnyddiwr a’i rannu i lawr y gadwyn, fel bod gwasanaeth mewnol yn gwybod pa mor fach o amser sydd ganddo ar ôl ac yn methu’n gyflym yn hytrach nag ailgeisio i mewn i storm. Dewch â’ch graff dibyniaeth a thrywydd gwirioneddol, yna adiwch y cyfuniad terfyn amser ac ailgeisio gwaethaf posibl a’i gymharu â’r hyn y bydd y defnyddiwr yn aros amdano mewn gwirionedd. Mae ciliad esbonyddol gyda siglo a chap ar gyfanswm y ceisiadau’n cadw pwl byr rhag dod yn wadiad gwasanaeth hunan-achosedig. Cadwyni cydamseredig dwfn, siaradus yw’r gelyn yma, felly efallai y bydd yr ateb yn eich gwthio tuag at lifau anghydamserol neu lai o neidiau.

  3. Pryd oedd y tro diwethaf i chi chwistrellu’r methiannau y mae eich dyluniad yn honni y gall eu goroesi, a beth a dorrodd nad oeddech yn ei ddisgwyl? Hypothesau yw patrymau gwydnwch hyd nes eich bod yn gwneud i’r system fethu’n fwriadol: lladd enghraifft, ychwanegu oedi at ddibyniaeth, gollwng cyfran o negeseuon, ail-draddodi swp ddwywaith. Mewn system ddosbarthedig, mae’r methiannau diddorol yn rhannol ac yn ysbeidiol, felly gall torrwr cylched neu iawndal saga sy’n edrych yn gywir mewn cod ymddwyn yn wael o hyd o dan derfyn amser gwirioneddol a allai-fod-wedi-cwblhau. Dewch â chanlyniadau diwrnod gêm neu redeg chwistrellu namau gwirioneddol, nid dogfen ddylunio, a nodwch pa rybuddion a danwyd, pa mor hir y cymerodd olrhain i leoli’r nam, ac a ffurfiodd unrhyw storm ailgeisio. Mewn sectorau rheoledig, mae tystiolaeth eich bod wedi profi methiant yn rhan o ddangos gwydnwch gweithredol i archwilwyr. Os nad ydych erioed wedi rhedeg un, mae’r arbrawf cyntaf yn perthyn mewn amgylchedd prawf gyda radiws ffrwydro tynn a switsh atal.

  4. Ar gyfer pob prif lif data, a all y tîm sy’n berchen arno enwi’r model cysondeb y mae’n ei ddarparu, ac a yw’r dewis hwnnw’n cyfateb i’r hyn mae’r busnes wir angen amdano? Mae CAP a PACELC yn gorfodi dewis bwriadol fesul gweithrediad, ac eto mewn sefydliad mawr y rhagosodiad yw drifft: mae llif a ddechreuodd yn gyson ymhen amser ar gyfer cownter risg isel yn cael ei ailddefnyddio ar gyfer rhywbeth sydd bellach yn cymeradwyo taliadau neu’n rhoi mynediad, ac nid oes neb yn ailarchwilio’r warant. Mae’r ystyriaethau croes yn wirioneddol, gan fod cysondeb cryf yn costio argaeledd yn ystod rhaniad ac oedi hyd yn oed pan nad oes un, tra bod cysondeb ymhen amser yn prynu cyflymder am bris darlleniadau hen a datrys gwrthdaro y mae’n rhaid i chi ddylunio ar ei gyfer. Dewch â chatalog o’ch prif lifau data, pob un wedi’i labelu â’i fodel cyfredol (cryf, achosol, darllen-eich-sgrifeniadau, neu ymhen amser) ac effaith fusnes darlleniad hen neu golledig, yna chwiliwch am anghydweddiadau lle mae’r warant yn gryfach neu’n wannach na’r hyn y mae’r risg yn ei warantu. Mewn cyllid menter ac mewn systemau budd-dal neu hunaniaeth llywodraeth, mae darlleniad cyson ymhen amser y tu ôl i benderfyniad awdurdodol yn fath o ddiffyg tawel sy’n ymddangos fel canfyddiad archwilio neu wrthodiad anghyfiawn fisoedd yn ddiweddarach, felly mae’r adolygiad ei hun yn dystiolaeth y bydd archwilwyr yn gofyn i’w gweld.

  5. Sut mae eich trafodion busnes aml-wasanaeth yn ymddwyn hanner ffordd drwyddynt, a phwy sy’n atebol am yr iawndaliadau sy’n eu dadwneud? Mae disodli ymrwymiad dau gam â sagas yn golygu bod y system yn mynd drwy gyflyrau canolradd gweladwy, a gall cam lwyddo tra bod cam diweddarach yn methu ac yn sbarduno gweithred iawndal sy’n ei wrthdroi. I dîm mawr mae hyn yn codi cwestiynau perchnogaeth anodd: mae’r gadwyn awdurdodi-debydu-credydu-cyfrifiadur yn aml yn croesi sawl tîm, ac mae iawndal y mae un tîm yn anghofio ei weithredu yn gadael arian neu gofnodion yn anghyson yn barhaol. Pwyswch goreograffi, lle mae gwasanaethau’n ymateb i ddigwyddiadau ei gilydd heb reolydd canolog a’r llif yn anodd ei weld, yn erbyn cyfarwyddo, lle mae cydgysylltydd yn gyrru ac yn monitro’r camau ar gost cydran i’w rhedeg. Dewch â’r diagram cyflwr ar gyfer eich saga bwysicaf, y rhestr o weithredoedd iawndal a’u perchnogion, a thystiolaeth bod cyflyrau “ar y gweill” a “wedi’i iawndaluo” yn cael eu trin ym mhrofiad y defnyddiwr a’r trywydd archwilio fel ei gilydd. Mewn bancio a rheoli achosion sector cyhoeddus, mae rheoleiddwyr yn disgwyl i chi ail-lunio’n union beth ddigwyddodd i drafodyn a fethodd hanner ffordd drwodd, felly mae cyflwr canolradd heb ei fodelu’n fwlch cydymffurfiaeth, nid dim ond nam.

  6. A yw eich defnyddwyr negeseuon yn goroesi traddodiad dyblyg ac wedi’i ailddrefnu, ac a allwch ei brofi cyn i’r brocer orfodi’r cwestiwn? Mae traddodiad union-unwaith yn fyth, felly o-leiaf-unwaith yw eich gwir warant, a bydd defnyddiwr sy’n tybio bod pob neges yn cyrraedd unwaith ac yn nhrefn yn prosesu ddwywaith y diwrnod y bydd y brocer yn ail-draddodi swp ar ôl methdroad. Ar draws llawer o dimau mae’r risg yn cyfansoddi, oherwydd gall un defnyddiwr nad yw’n idempotent ar ffrwd a rennir lygru cyflwr i lawr yr afon y mae timau eraill yn dibynnu arno, ac mae’r methiant yn anweladwy hyd nes bod ailchwarae neu raniad yn ailddrefnu digwyddiadau. Y cyfaddawd yw cost beirianneg allweddi idempotency, log negeseuon a broseswyd, a thrin atred a rhaniad yn eglur, wedi’i osod yn erbyn cost llygriad tawel. Dewch â’r rhestr o ddefnyddwyr ar eich ffrydiau critigol, nodwch pa rai sy’n dad-ddyblygu a pha rai sy’n dim ond gobeithio, a dewch â chanlyniad prawf ail-draddodi neu ailchwarae gwirioneddol yn hytrach na sicrwydd y dylai fod yn iawn. Ar gyfer cyfnewid data rhyng-asiantaeth llywodraethol a phiblinellau digwyddiadau menter, mae’r gallu i ailchwarae ffrwd yn ddiogel ar ôl trwsio nam, heb greu achosion neu daliadau dyblyg, yn angenrheidiol yn weithredol ac yn rhywbeth y bydd archwilwyr eisiau ei weld wedi’i ddangos.

Trwy lens sector

Cwmni newydd. Gyda dwy neu dair rhan symudol a dim tîm platfform, gwrthsefwch adeiladu peirianwaith dosbarthedig na allwch ei staffio. Prynwch wydnwch lle mae’n byw yn yr SDK y mae eich darparwr taliadau neu negeseuon eisoes yn ei roi i chi, a gwariwch eich sylw prin ar y ddau batrwm sy’n atal niwed anwrthdroadwy: allwedd idempotency ar bob galwad sy’n symud arian neu’n newid cyfrif, a therfyn amser ag ailgeisio wedi’i ffinio fel nad yw cysylltiad ansefydlog byth yn gweithredu ddwywaith. Cadwch nifer y neidiau rhwydwaith yn fach, oherwydd mae pob dibyniaeth gydamseredig rydych yn ei hychwanegu’n un peth arall a all fethu cyn i chi gael unrhyw un ar-alwad i sylwi.

Busnes bach. Mae’n debygol nad oes gennych arbenigwr systemau dosbarthedig a chyllideb dynn, felly triniwch hyn fel cwestiwn prynu-nid-adeiladu: ffafriwch giwiau a reolir, cronfeydd data a reolir, a phlatfformau sy’n trin ailgeisio, trefn, a dad-ddyblygu ar eich rhan yn hytrach na seilwaith y mae’n rhaid i chi ei weithredu. Fframiwch eich risg mewn termau plaen, gan wybod pa weithrediadau a fyddai’n brifo cwsmer pe baent yn rhedeg ddwywaith neu’n dychwelyd data hen, a throwch ymlaen y nodweddion idempotency ac o-leiaf-unwaith y mae eich gwerthwyr eisoes yn eu cynnig. Osgowch bwytho gwasanaethau at ei gilydd drwy gronfa ddata a rennir i ffugio trafodyn, gan fod hynny’n ail-greu’n dawel y broblem ddosbarthedig anoddaf heb unrhyw un o’r offer i’w rheoli.

Menter. Y broblem greiddiol yw cysondeb ar draws llawer o dimau, felly cyflenwch idempotency, terfynau amser, ailgeisio wedi’i ffinio, torwyr cylched, ac olrhain cysylltiedig fel rhagosodiadau platfform a rennir yn hytrach na gadael i bob grŵp eu llunio â llaw. Safonwch sut mae modelau cysondeb a gwarantau traddodi’n cael eu datgan fesul llif, rhedwch chwistrellu namau a diwrnodau gêm ar gyflymder rheolaidd, a gwnewch i gyllidebau amser cyfan gyfansoddi ar draws cadwyni galwadau dwfn fel na all un gwasanaeth ailgeisio’r platfform i mewn i doriad gwasanaeth. Rheolwch wydnwch fel gallu a fesurir gydag amcanion lefel gwasanaeth ar symptomau gweladwy i ddefnyddwyr, oherwydd ar eich graddfa chi gall un terfyn amser coll raeadru i mewn i doriad gwasanaeth penawd.

Llywodraeth. Mae systemau rhyng-asiantaeth yn golygu nad oes neb yn berchen ar y cyfan, felly dyluniwch ar gyfer ffiniau nad ydych yn eu rheoli: ciwiau parhaol gyda thraddodiad o-leiaf-unwaith, dad-ddyblygu ar ID neges sefydlog, ac IDau cydberthyn sy’n llifo ar draws llinellau asiantaeth i roi trywydd o’r dechrau i’r diwedd i archwilwyr. Mae rheolau caffael a thryloywder yn eich gwthio i ddogfennu model cysondeb a gwarant traddodi pob integreiddiad, ac i gadw penderfyniadau awdurdodol (hunaniaeth, cymhwyster, budd-dal) ar ddarlleniadau cyson cryf yn hytrach nag ar bwyntiau terfyn wedi’u storio dros dro. Triniwch dystiolaeth o fethiant a brofwyd a hanes trafodion y gellir ei ail-lunio fel canlyniadau y mae’n rhaid eu darparu, gan fod gwydnwch gweithredol ac atebolrwydd i’r cyhoedd yn rhwymedigaethau cytundebol a statudol, nid moethusrwydd mewnol.

Enghreifftiau

Cwmni newydd. Mae gan gwmni newydd fintech bach ddim ond dwy ran symudol sy’n siarad dros y rhwydwaith: ei ap a darparwr taliadau trydydd parti. Hyd yn oed ar y maint hwn mae’n gwneud i bob cais codi tâl gario allwedd idempotency ac yn lapio’r alwad mewn ailgeisio gyda chiliad, fel nad yw ymateb a ollyngwyd ar gysylltiad ansefydlog byth yn codi tâl dwbl ar gwsmer. Mae hepgor hyn yn teimlo’n rhad ar y diwrnod cyntaf, ond mae’r tâl dyblyg cyntaf sy’n taro defnyddiwr gwirioneddol yn costio tân cymorth, ad-daliad, ac ôl-nam mewn ymddiriedaeth na all y cwmni ifanc ei fforddio.

Menter. Mae platfform rhannu teithiau byd-eang yn prosesu taliadau taith drwy saga: awdurdodi cerdyn, debydu teithiwr, credydu gyrrwr, cofnodi cofnod cyfrifiadur, pob un yn drafodyn lleol gyda gwrthdroad iawndal. Mae pob cam yn cario allwedd idempotency, fel nad yw ailgeisiadau ar ôl terfyn amser rhwydwaith byth yn codi tâl dwbl. Mae galwadau i’r gwasanaeth sgorio twyll yn eistedd y tu ôl i dorrwr cylched; pan fydd yn dirywio yn ystod brig, mae’r torrwr yn agor ac mae tripiau’n dychwelyd i sgôr geidwadol yn lle rhwystro pob taith. Pan fydd cwsmer yn dadlau taith, mae olrhain dosbarthedig yn caniatáu i beirianwyr ei ddilyn ar draws dwsin o wasanaethau mewn eiliadau.

Llywodraeth. Defnyddir gwasanaeth hunaniaeth cenedlaethol gan lawer o asiantaethau i wirio. Mae’n cynnig darlleniad cyson cryf ar gyfer gwiriadau statws awdurdodol (rhaid i chi beidio â chymeradwyo budd-dal yn erbyn data hunaniaeth hen), ynghyd â phwynt terfyn wedi’i storio dros dro, cyson ymhen amser, ar gyfer chwiliadau cyfaint uchel, anfanhanfodol. Mae cyfnewid data rhyng-asiantaeth yn rhedeg dros giw neges barhaol gyda thraddodiad o-leiaf-unwaith, ac mae defnyddiwr pob asiantaeth yn dad-ddyblygu ar ID neges, fel nad yw cofnod a ail-draddodwyd yn creu achos dyblyg. Mae IDau cydberthyn yn llifo ar draws ffiniau asiantaeth, gan roi trywydd o’r dechrau i’r diwedd i archwilwyr o sut symudodd data dinesydd rhwng adrannau.

Achos busnes: cymhellion, ROI, a TCO

Prynir disgyblaeth systemau dosbarthedig yn rhad a thelir am ei habsenoldeb yn drychinebus. Y gost mabwysiadu yw amser peirianneg i adeiladu idempotency, terfynau amser, ailgeisio, torwyr cylched, ac olrhain i mewn i lyfrgelloedd a rennir a rhagosodiadau platfform. Buddsoddiad cymedrol, unwaith-yn-bennaf, ydyw sydd wedyn yn budd pob tîm. Mesurir cost peidio â’i fabwysiadu mewn toriadau gwasanaeth mawr: un terfyn amser coll sy’n rhaeadru i mewn i doriad gwasanaeth platfform llawn, llwybr taliad nad yw’n idempotent sy’n codi tâl dwbl ar filoedd o gwsmeriaid, neu drafodyn dosbarthedig heb saga sy’n gadael data’n anghyson yn barhaol. Mae pob un o’r rhain yn ddigwyddiad penawd gyda chost refeniw, unioni, ac enw da uniongyrchol, ac mewn sectorau rheoledig, dirwyon.

Fframiwch yr achos i arweinyddiaeth o amgylch argaeledd a radiws ffrwydro. Mae patrymau gwydnwch yn lleihau amlder a hyd digwyddiadau difrifol yn uniongyrchol, y metrigau y mae cyfarwyddwyr eisoes yn eu holrhain fel amser i fyny ac amser cymedrig i adfer. Arsylladwyedd dosbarthedig yw’r ysgogiad mwyaf sengl ar MTTR: mae timau ag olrhain cysylltiedig yn datrys digwyddiadau traws-wasanaeth mewn ffracsiwn o’r amser. Am mai’r ffordd orau o gyflenwi’r galluoedd hyn yw fel rhagosodiadau platfform a rennir, mae eu cost ymylol fesul tîm yn isel ac mae eu helw ar draws y sefydliad yn cyfansoddi. Mae’r ddadl TCO yn syml: mae adeiladu gwydnwch i mewn o’r cychwyn yn ffracsiwn o gost ei ôl-ffitio ar ôl y toriad gwasanaeth sy’n gorfodi’r mater.

Gwrth-batrymau a pheryglon

  • Dim terfynau amser. Mae un dibyniaeth sy’n hongian yn disbyddu pob edefyn ac yn dymchwel y system gyfan.
  • Ailgeisio gweithrediadau nad ydynt yn idempotent. Sgil-effeithiau dyblyg: taliadau dwbl, cofnodion dyblyg, e-byst dyblyg.
  • Stormydd ailgeisio. Ailgeisiadau cydamseredig heb giliad na siglo sy’n chwyddo pwl bach yn doriad gwasanaeth.
  • Tybio traddodiad union-unwaith. Adeiladu defnyddwyr sy’n torri ar negeseuon dyblyg y bydd y brocer yn eu traddodi yn y pen draw.
  • Trafodion dosbarthedig drwy gronfa ddata a rennir. Cyplu gwasanaethau drwy un gronfa ddata i ffugio ACID, gan ail-greu monolith dosbarthedig.
  • Anwybyddu methiant rhannol. Cod sy’n tybio bod galwad bell naill ai’n llwyddo’n llawn neu’n methu’n llawn, heb drin ar gyfer “wedi rhedeg allan o amser ond o bosib wedi’i gwblhau”.
  • Dim IDau cydberthyn. Dadfygio digwyddiad traws-wasanaeth drwy chwilio logiau anghysylltiedig ar ddeg peiriant.
  • Cadwyni galwadau cydamseredig siaradus. Graffiau dibyniaeth cydamseredig dwfn lle mae unrhyw un naid araf yn arafu’r cais cyfan.

Model aeddfedrwydd

  • Lefel 1, Cychwyn. Trinnir galwadau pell fel galwadau lleol. Mae terfynau amser ar goll neu’n naïf, mae ailgeisio’n absennol neu’n fyrbwyll, ac mae methiannau’n rhaeadru ar draws y system. Nid oes golwg a rennir ar gysondeb na thraddodi, ac mae dadfygio digwyddiad traws-wasanaeth yn golygu chwilota logiau fesul peiriant ar ôl y ffaith.
  • Lefel 2, Datblygu. Mae rhai timau’n ychwanegu terfynau amser ac ailgeisio sylfaenol ac ychydig o idempotency, ond mae’r arferion yn anghyson o wasanaeth i wasanaeth. Mae logiau wedi’u canoli ond heb eu cydberthyn, felly mae olrhain cais ar draws neidiau’n â llaw. Gobeithir y bydd trafodion dosbarthedig yn gweithio yn hytrach na chael eu modelu, ac mae gwarantau cysondeb yn byw ym mhennau peirianwyr unigol.
  • Lefel 3, Safoni. Mae idempotency, ailgeisio wedi’i ffinio, ciliad gyda siglo, torwyr cylched, a pharwydydd yn safonol ar draws y sefydliad drwy lyfrgelloedd a rennir. Mae sagas â gweithredoedd iawndal yn trin trafodion aml-wasanaeth, mae olrhain dosbarthedig ag IDau cydberthyn ar waith, ac mae pob prif lif data’n dogfennu ei fodel cysondeb a’i warant traddodi. Mae’r rheolau wedi’u hysgrifennu i lawr a’u gorfodi ar draws y sefydliad yn hytrach na’u gadael i bob tîm.
  • Lefel 4, Rheoli. Mesurir gwydnwch yn erbyn llinellau sylfaen, nid yn unig ei fod yn bresennol. Rydych yn olrhain cyfradd gwall, canraddau oedi, dirlenwad, a thrwybwn fesul gwasanaeth a dibyniaeth, yn gwylio cymarebau ailgeisio a chyfraddau agor torwyr cylched, ac yn gosod amcanion lefel gwasanaeth ar symptomau gweladwy i ddefnyddwyr. Gwiriwyd bod cyllidebau amser cyfan yn cyfansoddi ar draws cadwyni galwadau, mae amser cymedrig i adfer ar gyfer digwyddiadau traws-wasanaeth yn fetrig a fonitrir, ac mae canlyniadau chwistrellu namau a diwrnodau gêm yn bwydo’r rhifau sy’n giatio pob newid.
  • Lefel 5, Cyd-drefnu. Gwydnwch yw’r rhagosodiad platfform a wellir yn barhaus, wedi’i integreiddio ar draws y sefydliad cyfan ac yn addasol i amodau. Mae chwistrellu namau’n rhedeg yn rheolaidd mewn cynhyrchiad gyda radiysau ffrwydro tynn, mae systemau’n dirywio’n raenus drwy ddyluniad, ac mae dewisiadau cysondeb a thraddodi’n cael eu hailedrych wrth i lwyth a risg fusnes newid. Mae’r metrigau o Lefel 4 yn gyrru ymatebion awtomataidd ac esblygiad pensaernïol cyson, fel bod yr ystad ddosbarthedig yn dod yn fwy cadarn gyda phob digwyddiad yn hytrach na dim ond ei oroesi.

Syniadau ar gyfer trafodaeth

  1. Pa rai o’ch gweithrediadau critigol sy’n wirioneddol idempotent heddiw, a pha rai nad ydynt, yn dawel?
  2. Ar gyfer pob prif lif data, a all eich tîm nodi’r model cysondeb a’r warant traddodi o’u cof?
  3. Ble byddai torrwr cylched wedi atal eich toriad gwasanaeth rhaeadrol diwethaf?
  4. Faint o amser mae’n ei gymryd ar hyn o bryd i olrhain un cais sy’n methu ar draws pob gwasanaeth y mae’n ei gyffwrdd?
  5. Pa rai o’ch “trafodion dosbarthedig” sy’n dibynnu ar lwc mewn gwirionedd, a pha rai sy’n sagas gwirioneddol ag iawndaliadau?
  6. Pe bai eich brocer negeseuon yn ail-draddodi pob neges ddwywaith am awr, beth fyddai’n torri?

Prif negeseuon

  • Tybiwch fod y rhwydwaith yn annibynadwy a bod methiannau’n rhannol; dyluniwch bob rhyngweithiad pell ar gyfer arafwch, colled, dyblygu, ac ailddrefnu.
  • Penderfynwch gysondeb yn erbyn argaeledd fesul gweithrediad gan ddefnyddio CAP/PACELC; dogfennwch y model y mae pob llif yn ei ddarparu.
  • Mae idempotency, terfynau amser, ailgeisio wedi’i ffinio, a chiliad-gyda-siglo yn un pecyn; peidiwch byth â mabwysiadu ailgeisio heb y tri arall.
  • Mae torwyr cylched a pharwydydd yn cynnwys methiannau; mae sagas ag iawndaliadau’n disodli trafodion dosbarthedig anymarferol.
  • Triniwch draddodi fel o-leiaf-unwaith a gwnewch brosesu’n idempotent i gyflawni effeithiau union-unwaith.
  • Olrhain cysylltiedig, metrigau, a logiau yw’r unig ffordd i ddeall a gweithredu llifau dosbarthedig.

Cyfeiriadau a darllen pellach

  • Martin Kleppmann, Designing Data-Intensive Applications
  • Andrew Tanenbaum and Maarten van Steen, Distributed Systems: Principles and Paradigms
  • Michael Nygard, Release It!: Design and Deploy Production-Ready Software
  • Sam Newman, Building Microservices
  • Chris Richardson, Microservices Patterns (sagas, negeseua trafodiannol)
  • Eric Brewer, “CAP Twelve Years Later” a Daniel Abadi ar PACELC
  • Leslie Lamport, “Time, Clocks, and the Ordering of Events in a Distributed System”
  • Cindy Sridharan, Distributed Systems Observability
  • Cysyniad Nassim Nicholas Taleb o wrth-freuder (fel y’i cymhwysir gan lenyddiaeth peirianneg gwydnwch)