Katsi yaSchrödinger isina bhokisi: dambudziko rekubvumirana mune akagoverwa masisitimu

Saka, ngatimbofungidzira. Kune makati mashanu akakiyiwa mukamuri, uye kuti aende kunomutsa muridzi, ivo vese vanofanirwa kubvumirana pane izvi pakati pavo, nekuti vanogona kungovhura musuwo nevashanu vavo vakatsamira pairi. Kana imwe yekati iri katsi yaSchrödinger, uye dzimwe katsi dzisingazivi nezvechisarudzo chake, mubvunzo unomuka: "Vangazviita sei?"

Muchikamu chino, ini ndichakuudza mumashoko akareruka nezve theoretical chikamu chenyika yeakagoverwa masisitimu uye nheyo dzekushanda kwavo. Ini ndichaongororawo pamusoro peiyo pfungwa huru iri pasi pePaxos.

Katsi yaSchrödinger isina bhokisi: dambudziko rekubvumirana mune akagoverwa masisitimu

Kana vanogadzira vachishandisa cloud infrastructure, akasiyana dhatabhesi, uye kushanda mumapoka enhamba huru yemanodhi, vane chivimbo chekuti data richave rakakwana, rakachengeteka, uye rinogara riripo. Asi vimbiso dziripi?

Chaizvoizvo, vimbiso dzatinadzo vimbiso dzevatengesi. Ivo vanotsanangurwa muzvinyorwa sezvizvi: "Sevhisi iyi yakavimbika, ine SLA yakapihwa, usazvinetse, zvese zvichashanda zvakagoverwa sezvaunotarisira."

Isu tinowanzo kutenda mune zvakanakisa, nekuti varume vakangwara kubva kumakambani makuru vakativimbisa kuti zvese zvichanaka. Isu hatibvunze mubvunzo: sei, chaizvoizvo, izvi zvingashanda zvachose? Pane here chikonzero chepamutemo chekushanda kwemaitiro akadaro?

Nguva pfupi yadarika ndakaenda Chikoro cheDistributed Computing uye akafemerwa zvikuru nenyaya iyi. Hurukuro kuchikoro dzakanga dzakaita semakirasi ecalculus pane chimwe chinhu chine chokuita nemakombiyuta. Asi aya ndiwo chaiwo maratidziro akanyanya kukosha algorithms atinoshandisa zuva rega rega, tisingatombozvizive, zvakaratidzwa panguva imwe chete.

Mazhinji masisitimu emazuva ano akagoverwa anoshandisa iyo Paxos consensus algorithm uye ayo akasiyana magadzirirwo. Chinhu chinotonhorera ndechekuti iko chokwadi uye, mumusimboti, mukana chaiwo wekuvapo kweiyi algorithm inogona kuratidzwa zviri nyore nepeni nepepa. Mukuita, iyo algorithm inoshandiswa mumahombe masisitimu anomhanya pane yakakura nhamba yemanodhi mumakore.

Mufananidzo wakareruka wezvichakurukurwa zvinotevera: basa revakuru vemauto vaviriNgatitarisei kune yekudziya-up basa revakuru vemauto vaviri.

Tine mauto maviri - tsvuku nechena. Mauto machena anogara muguta rakakombwa. Mauto matsvuku anotungamirwa nevakuru vemauto A1 neA2 ari pamativi maviri eguta. The redheads 'basa kurwisa guta chena uye kukunda. Zvakadaro, uto remauto ega ega dzvuku ega ega idiki pane mauto evachena.

Katsi yaSchrödinger isina bhokisi: dambudziko rekubvumirana mune akagoverwa masisitimu

Mamiriro ekukunda kune avo matsvuku: vatungamiri vose vanofanira kurwisa panguva imwe chete kuitira kuti vave nehuwandu hwenhamba pamusoro pevachena. Kuti uite izvi, vakuru veA1 neA2 vanofanirwa kusvika pakubvumirana. Kana munhu wese akarwisa zvakasiyana, ma redheads anorasikirwa.

Kuti uwane chibvumirano, vakuru veA1 neA2 vanogona kutumira nhume kune mumwe nemumwe kuburikidza nenharaunda yeguta chena. Nhume inogona kubudirira kusvika kumukuru wemauto kana kubvutwa nemuvengi. Mubvunzo: pane kutevedzana kwakadaro kwekutaurirana pakati pevakuru-bvudzi tsvuku (kutevedzana kwekutumira vatumwa kubva kuA1 kusvika kuA2 uye zvakasiyana kubva kuA2 kusvika kuA1), umo vanovimbiswa kubvumirana pakurwisa paawa X. Pano, vimbiso dzinoreva kuti mauto ese achave nechisimbiso chisina kujeka chekuti shamwari (mumwe mukuru) acharwisa panguva yakatarwa X.

Ngatitii A1 inotumira mutumwa kuA2 neshoko: "Ngatirwise nhasi pakati pehusiku!" General A1 haigone kurwisa pasina kusimbiswa kubva kuGeneral A2. Kana mutumwa kubva kuA1 asvika, General A2 anotumira simbiso neshoko: "Ehe, ngatiuraye vachena nhasi." Asi ikozvino General A2 haazive kana mutumwa wake asvika kana kwete, haana vimbiso yekuti kurwiswa kuchave panguva imwe chete. Zvino General A2 zvakare inoda kusimbiswa.

Kana tikatsanangurazve kutaurirana kwavo, zvinova pachena kuti kunyangwe mangani ekuchinjana meseji kutenderera, hapana nzira yekuvimbisa kuti vese vakuru vakuru vagamuchira mameseji avo (tichifunga kuti chero mutumwa anogona kubvumwa).

The Vaviri Generals Dambudziko mufananidzo mukuru weyakareruka yakagovaniswa sisitimu uko kune mbiri nodhi ine isingavimbike kutaurirana. Izvi zvinoreva kuti isu hatina 100% vimbiso yekuti vanowiriraniswa. Matambudziko akafanana anokurukurwa chete pamwero mukuru gare gare muchinyorwa.

Isu tinosuma pfungwa yeakagoverwa masisitimu

A distributed system iboka remakomputa (pano tichavadaidza kuti nodes) anogona kuchinjana mameseji. Imwe neimwe node imwe neimwe yemhando yekuzvimiririra. Node inogona kugadzirisa mabasa pachayo, asi kuti itaure nemamwe ma node, inoda kutumira nekugamuchira mameseji.

Mameseji anoitwa sei chaizvo, ndeapi maprotocol anoshandiswa - izvi hazvisi zvekufarira isu mune ino mamiriro. Zvakakosha kuti nodes yegadziriro yakagoverwa inogona kuchinjana data nemumwe nekutumira mameseji.

Tsanangudzo pachayo hairatidzike yakaoma, asi isu tinofanira kufungisisa kuti chirongwa chakagoverwa chine huwandu hwehunhu huchave hwakakosha kwatiri.

Hunhu hwemasisitimu akagoverwa

  1. Concurrency - mukana wezviitiko zvenguva imwe chete kana zvakafanana zvinoitika muhurongwa. Uyezve, tichaona zviitiko zvinoitika pamanodhi maviri akasiyana sezvingango fanana chero isu tisina kurongeka kwakajeka kwekuitika kwezviitiko izvi. Asi, sekutonga, isu hatina.
  2. Hapana wachi yepasi rose. Hatina kurongeka kwakajeka kwezviitiko nekuda kwekushaikwa kwewachi yepasi rose. Munyikawo zvayo yevanhu, takajaira kuti tine wachi nenguva zvachose. Zvese zvinoshanduka kana zvasvika kune akagoverwa masisitimu. Kunyange wachi dzeatomu dzakanyatsojeka dzinokukurwa, uye panogona kuva nemamiriro ezvinhu atisingakwanise kuziva kuti ndechipi chezviitiko zviviri chakatanga. Naizvozvo, hatigoniwo kuvimba nenguva.
  3. Kukundikana kwakazvimirira kwemanodhi ehurongwa. Pane rimwe dambudziko: chimwe chinhu chinogona kushata nekuda kwekuti node dzedu hadzigari nekusingaperi. Iyo hard drive inogona kutadza, iyo chaiyo muchina uri mugore inogona kutangazve, network inogona kupenya uye mameseji anorasika. Uyezve, panogona kuva nemamiriro ezvinhu apo nodes inoshanda, asi panguva imwechete inoshanda zvinopesana nehurongwa. Kirasi yekupedzisira yezvinetso yakatogamuchira zita rakasiyana: dambudziko Vakuru vakuru veByzantine. Muenzaniso wakakurumbira weiyo yakagoverwa system ine dambudziko iri iBlockchain. Asi nhasi hatingatarise iyi yakakosha kirasi yezvinetso. Tichafarira mamiriro ezvinhu umo node imwe chete kana anopfuura angakundikana.
  4. Mamodheru ekutaurirana (mameseji emhando) pakati pemanodhi. Takatoona kuti node dzinotaurirana nekupanana mameseji. Kune maviri anozivikanwa mameseji modhi: synchronous uye asynchronous.

Mienzaniso yekukurukurirana pakati pemanodhi mune akagoverwa masisitimu

Synchronous modhi -Isu tinoziva zvechokwadi kuti pane inopera inozivikanwa delta yenguva panguva iyo meseji inovimbiswa kubva kune imwe node kuenda kune imwe. Kana nguva ino yapfuura uye shoko risati rasvika, tinogona kutaura zvakachengeteka kuti node yakundikana. Mumuenzaniso uyu tine nguva dzekumirira dzinofanotaurwa.

Asynchronous modhi - mune asynchronous models tinofunga kuti nguva yekumirira inopera, asi hapana delta yakadaro yenguva mushure mokunge tinogona kuvimbisa kuti node yakundikana. Avo. Nguva yekumirira meseji kubva kunode inogona kuve yakareba. Iyi ndiyo tsanangudzo inokosha, uye tichazotaura pamusoro payo mberi.

Pfungwa yekubvumirana muzvirongwa zvakagoverwa

Tisati tatsanangura zviri pamutemo pfungwa yekubvumirana, ngatitarisei muenzaniso wemamiriro atinoda, anoti - State Machine Replication.

Tine imwe log yakagoverwa. Tinoda kuti ienderane uye iine data rakafanana pane ese manode eiyo yakagoverwa system. Kana imwe yemanodhi ichidzidza hutsva hutsva hwainonyorera kurogi, basa rayo rinova rekupa kukosha uku kune dzimwe node dzose kuitira kuti log ivandudzwe pane nodes dzose uye hurongwa hunofamba hutsva hunoenderana. Muchiitiko ichi, zvakakosha kuti nodes dzibvumirane pakati pavo: node dzose dzinobvumirana kuti iyo yakarongwa hutsva hutsva hwakarurama, node dzose dzinogamuchira kukosha uku, uye chete munyaya iyi munhu wose anogona kunyora kukosha kutsva kurogi.

Mune mamwe mazwi: hapana imwe yemanode yaipikisa kuti yaive neruzivo rwakawanda, uye kukosha kwakarongwa kwaive kwakashata. Chibvumirano pakati pemanodhi uye chibvumirano pane imwechete chaiyo inogamuchirwa kukosha kubvumirana mune yakagoverwa system. Tevere, isu tichataura nezve algorithms inobvumira yakagoverwa system kuvimbiswa kusvika pakubvumirana.
Katsi yaSchrödinger isina bhokisi: dambudziko rekubvumirana mune akagoverwa masisitimu
Zvakawanda zvakarongeka, tinogona kutsanangura algorithm yekubvumirana (kana kungoita algorithm yekubvumirana) seimwe basa rinotamisa hurongwa hwakagoverwa kubva kuhurumende A kuenda kune imwe nyika B. Uyezve, iyi nyika inogamuchirwa nenode dzose, uye node dzose dzinogona kuzvisimbisa. Sezvazvinoitika, basa iri harisi diki zvachose sezvarinoratidzika pakutanga.

Zvivakwa zveConsensus Algorithm

Iyo yekubvumirana algorithm inofanirwa kunge iine zvivakwa zvitatu kuitira kuti sisitimu irambe iripo uye kuve nekufambira mberi kwekufamba kubva kune imwe nyika kuenda kune imwe nyika:

  1. Chibvumirano - ese nemanodhi anoshanda zvakanaka anofanirwa kutora kukosha kwakafanana (muzvinyorwa ichi chivakwa chinonziwo kuchengetedza pfuma). Manodhi ese ari kushanda parizvino (asina kutadza kana kurasikirwa nekusangana nevamwe) anofanirwa kusvika pachibvumirano uye agamuchire imwe yekupedzisira kukosha kwakafanana.

    Zvakakosha kunzwisisa pano kuti nodes muhurongwa hwakagoverwa isu tiri kufunga kuti vanoda kubvumirana. Ndiko kuti, isu tiri kutaura nezve masisitimu umo chimwe chinhu chinogona kungokundikana (somuenzaniso, imwe node inokundikana), asi mune ino hurongwa hapana node dzinoshanda nemaune kune vamwe (basa revakuru veByzantine). Nekuda kwechinhu ichi, sisitimu inoramba ichienderana.

  2. Kuvimbika - kana ma node ese anoshanda nemazvo achipa kukosha kwakafanana v, zvinoreva kuti imwe neimwe inoshanda node inofanirwa kugamuchira kukosha uku v.
  3. Kuguma - ese nemazvo anoshanda node anozopedzisira atora imwe kukosha (liveness pfuma), iyo inobvumira iyo algorithm kufambira mberi muhurongwa. Munhu wega wega anoshanda nemazvo node anofanira nekukurumidza kana gare gare kugamuchira kukosha kwekupedzisira uye nekuzvisimbisa: "Kwandiri, kukosha uku ichokwadi, ndinobvumirana nehurongwa hwese."

Muenzaniso wekuti kubvumirana algorithm inoshanda sei

Nepo zvimiro zvealgorithm zvingave zvisina kujeka zvachose. Naizvozvo, ticharatidza nemuenzaniso kuti ndeapi nhanho iyo yakapusa kubvumirana algorithm inopinda muhurongwa ine synchronous messaging modhi, umo manodhi ese anoshanda sezvaanotarisirwa, mameseji haana kurasika uye hapana chinoputswa (izvi zvinoitika chaizvo here?).

  1. Zvose zvinotanga nechirongwa chewanano (Propose). Ngatitorei kuti mutengi akabatanidzwa kune node inonzi "Node 1" uye akatanga kutengeserana, achipfuudza hutsva hutsva kune node - O. Kubva zvino zvichienda mberi, tichadana "Node 1" pa. Semunhu anoronga, "Node 1" inofanirwa kuzivisa iyo system yese kuti ine data nyowani, uye inotumira mameseji kune mamwe manode ese: "Tarisa! Zvinoreva kuti “O” zvakauya kwandiri uye ndinoda kuzvinyora pasi! Ndokumbira usimbise kuti iwe ucharekodhawo "O" mulogi rako."

    Katsi yaSchrödinger isina bhokisi: dambudziko rekubvumirana mune akagoverwa masisitimu

  2. Danho rinotevera nderekuvhotera kukosha kwakarongwa (Kuvhota). Ndechei? Zvinogona kuitika kuti dzimwe node dzakagamuchira ruzivo rwazvino, uye vane data pane imwechete kutengeserana.

    Katsi yaSchrödinger isina bhokisi: dambudziko rekubvumirana mune akagoverwa masisitimu

    Kana node "Node 1" inotumira chirevo chayo, dzimwe node dzinotarisa matanda avo kune data pane ichi chiitiko. Kana pasina kupokana, node dzinozivisa: “Ehe, handina imwe data yechiitiko ichi. Iko "O" kukosha ndiyo ruzivo rwazvino rwatinofanirwa.

    Mune chero imwe mamiriro ezvinhu, node dzinogona kupindura "Node 1": "Teerera! Ndine data razvino rekutengesa uku. Kwete 'O', asi chimwe chinhu chiri nani."

    Padanho rekuvhota, node dzinouya pasarudzo: vangave vese vanogamuchira kukosha kwakafanana, kana mumwe wavo anovhota achipikisa, zvichiratidza kuti ane data razvino.

  3. Kana kuvhota kwakabudirira uye munhu wese aifarira, saka sisitimu inoenda kune imwe nhanho - Kugamuchira kukosha. "Node 1" inounganidza mhinduro dzese kubva kune dzimwe node uye inoshuma: "Munhu wese akabvumirana pane kukosha "O"! Zvino ndinozivisa zviri pamutemo kuti “O” ndiyo rondedzero yedu itsva, yakafanana kumunhu wose! Nyora pasi mubhuku rako diki, usakanganwe. Nyora pasi mubhuku rako!

    Katsi yaSchrödinger isina bhokisi: dambudziko rekubvumirana mune akagoverwa masisitimu

  4. Manodhi asara anotumira simbiso (Yakagamuchirwa) kuti vanyora pasi kukosha kwe "O"; hapana chitsva chasvika panguva ino (rudzi rwemaviri-chikamu kuzvipira). Mushure mechiitiko ichi chakakosha, tinofunga kuti kutengeserana kwakagoverwa kwapera.
    Katsi yaSchrödinger isina bhokisi: dambudziko rekubvumirana mune akagoverwa masisitimu

Nokudaro, algorithm yekubvumirana munyaya iri nyore ine matanho mana: kurudzira, kuvhota (kuvhota), kubvuma (kugamuchira), kusimbisa kugamuchirwa (kugamuchirwa).

Kana pane imwe nhanho isu takatadza kusvika pakubvumirana, ipapo algorithm inotanga zvakare, tichifunga nezve ruzivo rwakapihwa nenode dzakaramba kusimbisa kukosha kwakarongwa.

Consensus algorithm mune asynchronous system

Izvi zvisati zvaitika, zvese zvaive zvakapfava, nekuti taitaura nezve synchronous messaging modhi. Asi isu tinoziva kuti munyika yanhasi isu takajaira kuita zvese asynchronously. Iyo algorithm yakafanana inoshanda sei muhurongwa ine asynchronous messaging modhi, apo isu tinotenda kuti nguva yekumirira mhinduro kubva kune node inogona kunge yakareba kwenguva refu (nenzira, kutadza kwenode kunogonawo kutariswa semuenzaniso kana node inogona kupindura kwenguva yakareba zvisina tsarukano).

Iye zvino zvatava kuziva mashandisiro anoita algorithm yekubvumirana pamusimboti, mubvunzo kune avo vanoverenga vanobvunza vakazviita kusvika pari zvino: vangani node muhurongwa hweN node ine asynchronous meseji modhi inogona kukundikana kuitira kuti sisitimu igone kusvika pakubvumirana?

Mhinduro chaiyo uye kururamiswa kuri kuseri kwemuparadzi.Mhinduro chaiyo ndeiyi: 0. Kana kunyange node imwe mune asynchronous system ikatadza, sisitimu yacho haizokwanisi kusvika pakubvumirana. Chirevo ichi chinopupurirwa mudzidziso yeFLP, inozivikanwa zvikuru mune mamwe madenderedzwa (1985, Fischer, Lynch, Paterson, chinongedzo kune chepakutanga pakupera kwechinyorwa): "Kusagoneka kwekuwana kubvumirana kwakagoverwa kana kanodhi imwe ikatadza. .”
Katsi yaSchrödinger isina bhokisi: dambudziko rekubvumirana mune akagoverwa masisitimu
Varume, saka isu tine dambudziko, isu tajaira kuti zvese zviri asynchronous. Uye hezvinoi. Kuti urambe uchirarama sei?

Taingotaura nezve theory, nezve masvomhu. Zvinorevei "kubvumirana hakugone kuwanikwa" zvinorevei, kushandura kubva mumutauro wemasvomhu kuenda kune yedu - engineering? Izvi zvinoreva kuti "haigone kuwanikwa nguva dzose", i.e. Pane imwe nyaya iyo kubvumirana hakugoneki. Inyaya rudzii iyi?

Uku ndiko kutyora chaiko kweiyo liveness pfuma inotsanangurwa pamusoro. Isu hatina chibvumirano chakafanana, uye sisitimu haigone kufambira mberi (haigone kupedzisa munguva inogumira) kana isu tisina mhinduro kubva kune ese ma node. Nokuti mune asynchronous system hatina nguva yekupindura inofungidzira uye hatigoni kuziva kana node yakaputsika kana kuti iri kungotora nguva yakareba kupindura.

Asi mukuita tinogona kuwana mhinduro. Rega algorithm yedu ikwanise kushanda kwenguva yakareba kana ikatadza (zvichida inogona kushanda nekusingaperi). Asi mumamiriro mazhinji, kana node zhinji dziri kushanda nemazvo, tichava nekufambira mberi muhurongwa.

Mukuita, isu tinobata neine chikamu synchronous yekutaurirana modhi. Partial synchrony inonzwisiswa sezvizvi: kazhinji, isu tine asynchronous modhi, asi imwe pfungwa ye "global stabilization time" yeimwe point in time inounzwa zviri pamutemo.

Iyi nguva munguva inogona kusauya kwenguva yakareba, asi inofanira kuuya zuva rimwe chete. Iyo chaiyo alarm wachi icharira, uye kubva panguva iyoyo tinogona kufanotaura nguva delta iyo meseji ichasvika. Kubva panguva ino zvichienda mberi, iyo sisitimu inotendeuka kubva kune asynchronous kuenda kusynchronous. Mukuita, tinobata nemaitiro akadaro chaiwo.

Iyo Paxos algorithm inogadzirisa matambudziko ekubvumirana

Paxos imhuri yealgorithms inogadzirisa dambudziko rekubvumirana kune chikamu chesynchronous masisitimu, zvichienderana nemukana wekuti dzimwe node dzikundikane. Munyori wePaxos ndiye Leslie Lamport. Akataura humbowo hwechokwadi hwekuvapo uye kurongeka kweiyo algorithm muna 1989.

Asi humbowo hwakazove husiri hudiki. Bhuku rekutanga rakaburitswa muna 1998 chete (mapeji makumi matatu nematatu) richitsanangura algorithm. Sezvakazoitika, zvakanga zvakaoma zvikuru kunzwisisa, uye muna 33 tsananguro yenyaya yacho yakabudiswa, iyo yakatora mapeji 2001. Huwandu hwezvinyorwa zvinopihwa kuratidza kuti chokwadi dambudziko rekubvumirana harisi nyore, uye kuseri kwealgorithms yakadaro kune huwandu hukuru hwebasa nevanhu vakangwara.

Zvinonakidza kuti Leslie Lamport pachake akacherechedza muhurukuro yake kuti munyaya yechipiri inotsanangura pane chirevo chimwe, mutsara mumwe (haana kutsanangura kuti ndeupi), unogona kududzirwa nenzira dzakasiyana. Uye nekuda kweizvi, nhamba huru yemazuva ano Paxos kuita haishande zvakakwana.

Ongororo yakadzama yebasa raPaxos ingatora zvinopfuura chinyorwa chimwe, saka ini ndichaedza kuburitsa muchidimbu pfungwa huru yealgorithm. Mune zvinongedzo pamagumo echinyorwa changu iwe unowana zvekushandisa zvekuwedzera kunyura mune ino chinyorwa.

Mabasa paPaxos

Iyo Paxos algorithm ine pfungwa yemabasa. Ngatitarisei zvitatu zvikuru (kune zvigadziriso zvine mamwe mabasa):

  1. Vagadziri (mazwi anogona zvakare kushandiswa: vatungamiriri kana varongi). Ava ndivo vakomana vanodzidza nezvehumwe kukosha hutsva kubva kumushandisi uye kutora chinzvimbo chemutungamiri. Basa ravo nderekutanga kutenderera kwezvikumbiro zvehukoshi hutsva uye kuronga zvimwe zviito zvenodhi. Uyezve, Paxos inobvumira kuvepo kwevatungamiriri vakati wandei mune mamwe mamiriro.
  2. Vagamuchiri (Vavhoti). Aya ndiwo mavhoti anovhota kubvuma kana kuramba humwe kukosha. Basa ravo rinokosha zvikuru, nokuti chisarudzo chinoenderana navo: inzvimbo ipi iyo hurongwa huchaenda (kana kuti husingadi) kuenda shure kwechikamu chinotevera chekubvumirana kwegorgorithm.
  3. Vadzidzi. Node dzinongobvuma uye kunyora hutsva hunogamuchirwa kukosha kana mamiriro ehurongwa achinja. Ivo havaite sarudzo, vanongogamuchira iyo data uye vanogona kuipa kune yekupedzisira mushandisi.

Node imwe inogona kusanganisa mabasa akati wandei mumamiriro akasiyana.

Pfungwa ye quorum

Isu tinofungidzira kuti isu tine hurongwa hwe N nodes Uye pakati pavo the maximum F node dzinogona kukundikana. Kana F node ikatadza, saka tinofanira kunge tine 2F+1 kugamuchira nodes.

Izvi zvinodikanwa kuitira kuti tigare tine ruzhinji, kunyangwe mumamiriro ezvinhu akaipisisa, e "akanaka" node anoshanda nemazvo. Ndizvozvo F+1 "zvakanaka" node dzakabvumirana, uye kukosha kwekupedzisira kunogamuchirwa. Zvikasadaro, panogona kuva nemamiriro ezvinhu apo mapoka edu akasiyana emunharaunda anotora zvirevo zvakasiyana uye haagoni kubvumirana pakati pavo. Naizvozvo, tinoda ruzhinji rwakakwana kuti tihwine vhoti.

Iyo pfungwa yakajairika yekuti Paxos consensus algorithm inoshanda sei

Iyo Paxos algorithm inosanganisira zvikamu zviviri zvakakura, izvo zvakakamurwa kuita nhanho mbiri imwe neimwe:

  1. Chikamu 1a: Gadzirira. Munguva yegadziriro, mutungamiri (murongi) anozivisa node dzese: “Tiri kutanga chikamu chitsva chekuvhota. Tine round itsva. Nhamba yedenderedzwa iri n. Zvino tichatanga kuvhota." Parizvino, inongoshuma kutanga kweiyo kutenderera kutsva, asi haitauri kukosha kutsva. Basa reiyi nhanho nderekutanga kutenderera kutsva uye kuzivisa munhu wese nezve yakasarudzika nhamba. Nhamba yekutenderera yakakosha, inofanirwa kuve yakakosha kudarika nhamba dzese dzekuvhota dzakapfuura kubva kune vese vatungamiri vekare. Nekuti iko kuvonga kunhamba yakatenderedza kuti mamwe manodhi muhurongwa anonzwisisa kuti data remutungamiri razvino sei. Zvingangove kuti mamwe ma node atove nemhedzisiro yekuvhota kubva kwakawanda gare gare kutenderera uye anongoudza mutungamiri kuti ari kumashure kwenguva.
  2. Chikamu 1b: Vimbiso. Kana nzvimbo dzekugamuchira dzakagamuchira nhamba yedanho idzva rekuvhota, mhinduro mbiri dzinogoneka:
    • Nhamba n yevhoti itsva yakakura kudarika nhamba yevhoti ripi zvaro rakamboita mugamuchiri. Ipapo mugamuchiri anotumira chivimbiso kumutungamiri kuti haazobatanidzi mune mamwe mavhoti ane nhamba yakaderera pane n. Kana mugamuchiri atovhotera chimwe chinhu (ndiko kuti, chatogamuchira ukoshi hwakati muchikamu chechipiri), ipapo chinobatanidza ukoshi hunogamuchirwa uye nhamba yevhoti umo chakabatanidzwa kuchipikirwa chayo.
    • Zvikasadaro, kana mugamuchiri atoziva nezvevhoti inenhamba yepamusoro, inogona kungofuratira danho rekugadzirira uye kusapindura mutungamiri.
  3. Chikamu 2a: Bvuma. Mutungamiri anofanirwa kumirira mhinduro kubva kuquorum (huwandu hwemanodhi muhurongwa) uye, kana nhamba inodiwa yemhinduro ikagamuchirwa, ane sarudzo mbiri dzekuvandudza zviitiko:
    • Vamwe vevagamuchiri vakatumira hunhu hwavakange vatovhotera. Muchiitiko ichi, mutungamiri anosarudza kukosha kubva kuvhoti nehuwandu hwehuwandu. Ngatishevedze kukosha uku x, uye inotumira meseji kune ese manode senge: “Gamuchira (n, x)”, uko kukosha kwekutanga ndiyo nhamba yekuvhota kubva kune yayo Rongedza danho, uye kukosha kwechipiri ndiko kwakaunganidzwa nemunhu wese, i.e. kukosha kwatinovhotera chaiko.
    • Kana pasina mumwe wevagamuchiri akatumira chero hupi, asi vakangovimbisa kuvhota munharaunda iyi, mutungamiri anogona kuvakoka kuti vavhote kukosha kwavo, kukosha kwaakava mutungamiri pakutanga. Ngatitii y. Inotumira meseji kune ese node senge: "Gamuchira (n, y)", yakafanana neyakaitika yapfuura.
  4. Chikamu 2b: Yakagamuchirwa. Kupfuurirazve, node dzinogamuchira, pakugamuchira “Gamuchira(...)” meseji kubva kumutungamiri, bvumirana nazvo (tumira simbiso kumanodhi ese kuti vanobvumirana noukoshi hutsva) chete kana vasina kuvimbisa zvimwe (zvimwe)) mutungamiri kuti atore chikamu mukuvhota aine nhamba yeround n > n, kana zvisina kudaro ivo vanofuratira chikumbiro chekusimbisa.

    Kana ruzhinji rwemanodhi rwakapindura mutungamiri, uye ese akasimbisa kukosha kutsva, saka kukosha kutsva kunoonekwa sekugamuchirwa. Hooray! Kana ruzhinji rusina kusvika kana pane node dzakaramba kubvuma kukosha kutsva, ipapo zvese zvinotanga patsva.

Aya ndiwo mashandiro anoita Paxos algorithm. Rimwe nerimwe rematanho aya rine zvakawanda zvisinganzwisisiki, isu hatina kufunga nezvemhando dzakasiyana dzekutadza, matambudziko evatungamiriri vakawanda uye nezvimwe zvakawanda, asi chinangwa chechinyorwa ichi ndechekuzivisa muverengi kune nyika yekombuta yakagoverwa padanho repamusoro.

Izvo zvakakoshawo kuziva kuti Paxos haisi iyo yega yerudzi rwayo, kune mamwe maalgorithms, semuenzaniso, Raft, asi iyi inyaya yechimwe chinyorwa.

Manongedzo kune zvinyorwa zvekuwedzera kudzidza

Danho rekutanga:

Leslie Lamport level:

Source: www.habr.com

Voeg