Paka ya Schrödinger bila sanduku: shida ya makubaliano katika mifumo iliyosambazwa

Kwa hiyo, hebu fikiria. Kuna paka 5 zimefungwa ndani ya chumba, na ili kwenda kuamsha mmiliki, wote wanahitaji kukubaliana juu ya hili kati yao wenyewe, kwa sababu wanaweza tu kufungua mlango na tano kati yao wakitegemea. Ikiwa moja ya paka ni paka ya Schrödinger, na paka nyingine hazijui kuhusu uamuzi wake, swali linatokea: "Je!

Katika makala hii, nitakuambia kwa maneno rahisi kuhusu sehemu ya kinadharia ya ulimwengu wa mifumo iliyosambazwa na kanuni za uendeshaji wao. Pia nitachunguza kijuu juu wazo kuu lililo msingi wa Paxos.

Paka ya Schrödinger bila sanduku: shida ya makubaliano katika mifumo iliyosambazwa

Wakati watengenezaji wanatumia miundomsingi ya wingu, hifadhidata mbalimbali, na kufanya kazi katika makundi ya idadi kubwa ya nodi, wana uhakika kwamba data itakuwa kamili, salama, na inapatikana kila wakati. Lakini wapi dhamana?

Kimsingi, dhamana tulizo nazo ni dhamana za wasambazaji. Zimeelezewa katika hati kama ifuatavyo: "Huduma hii ni ya kuaminika kabisa, ina SLA iliyopewa, usijali, kila kitu kitafanya kazi kama unavyotarajia."

Tunaelekea kuamini bora zaidi, kwa sababu watu werevu kutoka kwa kampuni kubwa walituhakikishia kuwa kila kitu kitakuwa sawa. Hatuulizi swali: kwa nini, kwa kweli, hii inaweza kufanya kazi kabisa? Je, kuna uhalali wowote rasmi wa uendeshaji sahihi wa mifumo hiyo?

Hivi majuzi nilienda Shule ya Kompyuta Inayosambazwa na alitiwa moyo sana na mada hii. Mihadhara shuleni ilikuwa kama madarasa ya calculus kuliko kitu kilichohusiana na mifumo ya kompyuta. Lakini hii ndio jinsi algorithms muhimu zaidi tunayotumia kila siku, bila hata kujua, ilithibitishwa kwa wakati mmoja.

Mifumo mingi ya kisasa iliyosambazwa hutumia algorithm ya makubaliano ya Paxos na marekebisho yake mbalimbali. Jambo la baridi zaidi ni kwamba uhalali na, kimsingi, uwezekano wa kuwepo kwa algorithm hii inaweza kuthibitishwa kwa urahisi na kalamu na karatasi. Kwa mazoezi, algorithm hutumiwa katika mifumo mikubwa inayoendesha idadi kubwa ya nodi kwenye mawingu.

Kielelezo chepesi cha kile kitakachojadiliwa baadaye: kazi ya majenerali wawiliHebu tuangalie kwa ajili ya joto-up kazi ya majenerali wawili.

Tuna majeshi mawili - nyekundu na nyeupe. Wanajeshi weupe wako katika mji uliozingirwa. Vikosi vyekundu vinavyoongozwa na majenerali A1 na A2 viko pande mbili za jiji. Kazi ya redheads ni kushambulia mji mweupe na kushinda. Walakini, jeshi la kila jenerali mwekundu mmoja mmoja ni ndogo kuliko jeshi la wazungu.

Paka ya Schrödinger bila sanduku: shida ya makubaliano katika mifumo iliyosambazwa

Masharti ya ushindi kwa wale nyekundu: majenerali wote wawili wanapaswa kushambulia kwa wakati mmoja ili kuwa na faida ya nambari juu ya wazungu. Ili kufanya hivyo, majenerali A1 na A2 wanahitaji kufikia makubaliano na kila mmoja. Ikiwa kila mtu atashambulia tofauti, vichwa vyekundu vitapoteza.

Ili kufikia makubaliano, majenerali A1 na A2 wanaweza kutuma wajumbe kwa kila mmoja kupitia eneo la mji mweupe. Mjumbe anaweza kumfikia jenerali mshirika kwa mafanikio au anaweza kuzuiwa na adui. Swali: kuna mlolongo huo wa mawasiliano kati ya majenerali wenye nywele nyekundu (mlolongo wa kutuma wajumbe kutoka A1 hadi A2 na kinyume chake kutoka A2 hadi A1), ambayo wamehakikishiwa kukubaliana juu ya shambulio la saa X. Hapa, dhamana inamaanisha kuwa majenerali wote wawili watakuwa na uthibitisho usio na utata kwamba mshirika (jenerali mwingine) bila shaka atashambulia kwa wakati uliowekwa X.

Tuseme A1 inatuma mjumbe kwa A2 na ujumbe: "Wacha tushambulie leo usiku wa manane!" Jenerali A1 haiwezi kushambulia bila uthibitisho kutoka kwa Jenerali A2. Ikiwa mjumbe kutoka A1 amefika, basi Jenerali A2 anatuma uthibitisho na ujumbe: "Ndio, wacha tuwaue wazungu leo." Lakini sasa Jenerali A2 hajui kama mjumbe wake amefika au la, hana uhakika kama shambulio hilo litakuwa sawia. Sasa Jenerali A2 inahitaji tena uthibitisho.

Ikiwa tutaelezea zaidi mawasiliano yao, inakuwa wazi kwamba haijalishi ni mizunguko mingapi ya kubadilishana ujumbe, hakuna njia ya kuhakikisha kwamba majenerali wote wawili wamepokea ujumbe wao (ikizingatiwa kuwa mjumbe mmoja anaweza kuingiliwa).

Tatizo la Wakuu Wawili ni kielelezo kikubwa cha mfumo rahisi sana uliosambazwa ambapo kuna nodi mbili zenye mawasiliano yasiyotegemewa. Hii inamaanisha kuwa hatuna hakikisho la 100% kwamba zimesawazishwa. Matatizo sawa yanajadiliwa tu kwa kiwango kikubwa baadaye katika makala.

Tunaanzisha dhana ya mifumo iliyosambazwa

Mfumo uliosambazwa ni kundi la kompyuta (hapa tutaziita nodi) zinazoweza kubadilishana ujumbe. Kila nodi ya mtu binafsi ni aina fulani ya chombo kinachojitegemea. Nodi inaweza kusindika kazi peke yake, lakini ili kuwasiliana na nodi zingine, inahitaji kutuma na kupokea ujumbe.

Jinsi ujumbe unatekelezwa, ni itifaki gani zinazotumiwa - hii sio ya kupendeza kwetu katika muktadha huu. Ni muhimu kwamba nodi za mfumo uliosambazwa zinaweza kubadilishana data kwa kila mmoja kwa kutuma ujumbe.

Ufafanuzi yenyewe hauonekani kuwa ngumu sana, lakini ni lazima tuzingatie kwamba mfumo uliosambazwa una idadi ya sifa ambazo zitakuwa muhimu kwetu.

Sifa za mifumo iliyosambazwa

  1. Fedha - uwezekano wa matukio ya wakati mmoja au ya wakati mmoja kutokea katika mfumo. Zaidi ya hayo, tutazingatia matukio yanayotokea kwenye nodi mbili tofauti kuwa yanawezekana kwa wakati mmoja mradi tu hatuna mpangilio wazi wa utokeaji wa matukio haya. Lakini, kama sheria, hatuna.
  2. Hakuna saa ya kimataifa. Hatuna mpangilio wazi wa matukio kwa sababu ya ukosefu wa saa ya ulimwengu. Katika ulimwengu wa kawaida wa watu, tumezoea ukweli kwamba tuna saa na wakati kabisa. Kila kitu kinabadilika linapokuja suala la mifumo iliyosambazwa. Hata saa za atomiki zilizo sahihi zaidi zina kuruka, na kunaweza kuwa na hali ambapo hatuwezi kujua ni tukio gani kati ya mbili lililotokea kwanza. Kwa hivyo, hatuwezi kutegemea wakati pia.
  3. Kushindwa kwa kujitegemea kwa nodes za mfumo. Kuna shida nyingine: kitu kinaweza kwenda vibaya kwa sababu nodi zetu hazidumu milele. Hifadhi ngumu inaweza kushindwa, mashine ya kawaida katika wingu inaweza kuwasha upya, mtandao unaweza blink na ujumbe kupotea. Aidha, kunaweza kuwa na hali ambapo nodes hufanya kazi, lakini wakati huo huo hufanya kazi dhidi ya mfumo. Darasa la mwisho la shida hata lilipokea jina tofauti: shida Majenerali wa Byzantine. Mfano maarufu zaidi wa mfumo uliosambazwa na tatizo hili ni Blockchain. Lakini leo hatutazingatia darasa hili maalum la shida. Tutapendezwa na hali ambazo nodi moja au zaidi zinaweza kushindwa.
  4. Mitindo ya mawasiliano (mifano ya ujumbe) kati ya nodi. Tayari tumegundua kuwa nodi huwasiliana kwa kubadilishana ujumbe. Kuna mifano miwili ya ujumbe inayojulikana: synchronous na asynchronous.

Mifano ya mawasiliano kati ya nodes katika mifumo iliyosambazwa

Muundo wa kusawazisha - tunajua kwa hakika kwamba kuna delta ya muda inayojulikana wakati ambapo ujumbe umehakikishiwa kufikiwa kutoka nodi moja hadi nyingine. Ikiwa wakati huu umepita na ujumbe haujafika, tunaweza kusema kwa usalama kwamba node imeshindwa. Katika mtindo huu tuna nyakati za kusubiri zinazotabirika.

Mfano wa Asynchronous - katika mifano ya asynchronous tunaona kuwa muda wa kusubiri ni wa mwisho, lakini hakuna delta hiyo ya muda baada ya ambayo tunaweza kuhakikisha kwamba node imeshindwa. Wale. Muda wa kusubiri ujumbe kutoka kwa nodi unaweza kuwa mrefu kiholela. Hii ni ufafanuzi muhimu, na tutazungumza juu yake zaidi.

Dhana ya makubaliano katika mifumo iliyosambazwa

Kabla ya kufafanua rasmi dhana ya makubaliano, hebu tuchunguze mfano wa hali ambayo tunaihitaji, ambayo ni - Marudio ya Mashine ya Jimbo.

Tunayo logi iliyosambazwa. Tungependa iwe thabiti na iwe na data inayofanana kwenye nodi zote za mfumo unaosambazwa. Wakati moja ya nodi inapojifunza thamani mpya ambayo itaandika kwa logi, kazi yake inakuwa kutoa thamani hii kwa nodi nyingine zote ili logi isasishwe kwenye nodi zote na mfumo uende kwenye hali mpya thabiti. Katika kesi hii, ni muhimu kwamba nodes zikubaliane kati yao wenyewe: nodes zote zinakubali kwamba thamani mpya iliyopendekezwa ni sahihi, nodes zote zinakubali thamani hii, na tu katika kesi hii kila mtu anaweza kuandika thamani mpya kwa logi.

Kwa maneno mengine: hakuna nodes iliyopinga kuwa ina habari muhimu zaidi, na thamani iliyopendekezwa haikuwa sahihi. Makubaliano kati ya nodi na makubaliano juu ya thamani moja sahihi iliyokubaliwa ni makubaliano katika mfumo uliosambazwa. Ifuatayo, tutazungumza juu ya algorithms ambayo inaruhusu mfumo uliosambazwa kuhakikishiwa kufikia makubaliano.
Paka ya Schrödinger bila sanduku: shida ya makubaliano katika mifumo iliyosambazwa
Rasmi zaidi, tunaweza kufafanua algoriti ya makubaliano (au tu algoriti ya makubaliano) kama chaguo la kukokotoa ambalo huhamisha mfumo uliosambazwa kutoka jimbo A hadi jimbo la B. Zaidi ya hayo, hali hii inakubaliwa na nodi zote, na nodi zote zinaweza kuithibitisha. Kama inavyotokea, kazi hii sio ndogo kama inavyoonekana mwanzoni.

Sifa za Algorithm ya Makubaliano

Algorithm ya makubaliano lazima iwe na sifa tatu ili mfumo uendelee kuwepo na uwe na maendeleo fulani katika kuhama kutoka jimbo hadi jimbo:

  1. Makubaliano - nodi zote zinazofanya kazi kwa usahihi lazima zichukue thamani sawa (katika vifungu mali hii pia inajulikana kama mali ya usalama). Nodi zote ambazo zinafanya kazi kwa sasa (hazijashindwa au hazijapoteza mawasiliano na zingine) lazima zikubaliane na ukubali thamani fulani ya mwisho ya kawaida.

    Ni muhimu kuelewa hapa kwamba nodes katika mfumo uliosambazwa tunazingatia wanataka kukubaliana. Hiyo ni, sasa tunazungumza juu ya mifumo ambayo kitu kinaweza kushindwa (kwa mfano, nodi fulani inashindwa), lakini katika mfumo huu hakuna nodi ambazo zinafanya kazi kwa makusudi dhidi ya wengine (kazi ya majenerali wa Byzantine). Kwa sababu ya mali hii, mfumo unabaki thabiti.

  2. Uadilifu - ikiwa nodi zote zinazofanya kazi kwa usahihi hutoa thamani sawa v, ambayo ina maana kwamba kila nodi inayofanya kazi kwa usahihi lazima ikubali thamani hii v.
  3. Kukatisha - nodes zote za uendeshaji kwa usahihi hatimaye zitachukua thamani fulani (mali ya uhai), ambayo inaruhusu algorithm kufanya maendeleo katika mfumo. Kila nodi inayofanya kazi kwa usahihi lazima mapema au baadaye akubali thamani ya mwisho na aithibitishe: "Kwangu mimi, thamani hii ni kweli, nakubaliana na mfumo mzima."

Mfano wa jinsi algorithm ya makubaliano inavyofanya kazi

Ingawa sifa za algorithm haziwezi kuwa wazi kabisa. Kwa hivyo, tutaonyesha kwa mfano ni hatua gani algoriti rahisi ya maafikiano inapitia katika mfumo ulio na muundo wa utumaji wa upatanishi, ambapo nodi zote hufanya kazi inavyotarajiwa, ujumbe haupotei na hakuna kitu kinachovunjika (hii inafanyika kweli?).

  1. Yote huanza na pendekezo la ndoa (Pendekeza). Hebu tuchukue kwamba mteja aliyeunganishwa na node inayoitwa "Node 1" na kuanza shughuli, kupitisha thamani mpya kwa node - O. Kuanzia sasa, tutaita "Node 1" kutoa. Kama mpendekezaji, "Node 1" lazima sasa ijulishe mfumo mzima kwamba ina data mpya, na inatuma ujumbe kwa nodi zingine zote: "Tazama! Maana "O" ilikuja kwangu na ninataka kuiandika! Tafadhali thibitisha kwamba pia utarekodi "O" kwenye kumbukumbu yako."

    Paka ya Schrödinger bila sanduku: shida ya makubaliano katika mifumo iliyosambazwa

  2. Hatua inayofuata ni kupiga kura kwa thamani inayopendekezwa (Kura). Ni ya nini? Inaweza kutokea kwamba nodi zingine zimepokea habari za hivi karibuni zaidi, na zina data juu ya shughuli hiyo hiyo.

    Paka ya Schrödinger bila sanduku: shida ya makubaliano katika mifumo iliyosambazwa

    Wakati nodi "Node 1" inatuma pendekezo lake, nodi zingine huangalia kumbukumbu zao kwa data kwenye tukio hili. Ikiwa hakuna ukinzani, nodi zinatangaza: "Ndio, sina data nyingine ya tukio hili. Thamani ya "O" ndiyo taarifa ya hivi punde tunayostahili."

    Katika hali nyingine yoyote, nodi zinaweza kujibu "Node 1": "Sikiliza! Nina data ya hivi majuzi zaidi kuhusu muamala huu. Sio 'O', lakini kitu bora zaidi."

    Katika hatua ya kupiga kura, nodi hufikia uamuzi: ama zote zinakubali thamani sawa, au mmoja wao kura dhidi yake, akionyesha kwamba ana data ya hivi majuzi zaidi.

  3. Ikiwa duru ya upigaji kura ilifanikiwa na kila mtu aliunga mkono, basi mfumo unahamia hatua mpya - Kukubali thamani. "Node 1" hukusanya majibu yote kutoka kwa nodi nyingine na kuripoti: "Kila mtu alikubali juu ya thamani "O"! Sasa natangaza rasmi kwamba "O" ni maana yetu mpya, sawa kwa kila mtu! Andika kwenye kitabu chako kidogo, usisahau. Iandike kwenye logi yako!”

    Paka ya Schrödinger bila sanduku: shida ya makubaliano katika mifumo iliyosambazwa

  4. Nodi zilizosalia hutuma uthibitisho (Zimekubaliwa) kwamba zimeandika thamani "O"; hakuna jipya limefika wakati huu (aina ya ahadi ya awamu mbili). Baada ya tukio hili muhimu, tunazingatia kwamba shughuli iliyosambazwa imekamilika.
    Paka ya Schrödinger bila sanduku: shida ya makubaliano katika mifumo iliyosambazwa

Kwa hivyo, algorithm ya makubaliano katika kesi rahisi ina hatua nne: kupendekeza, kupiga kura (kupiga kura), kukubali (kukubali), kuthibitisha kukubalika (kukubaliwa).

Ikiwa kwa hatua fulani hatukuweza kufikia makubaliano, basi algorithm inaanza tena, kwa kuzingatia maelezo yaliyotolewa na nodi ambazo zilikataa kuthibitisha thamani iliyopendekezwa.

Algorithm ya makubaliano katika mfumo usio na usawa

Kabla ya hili, kila kitu kilikuwa laini, kwa sababu tulikuwa tunazungumza juu ya mfano wa ujumbe wa synchronous. Lakini tunajua kuwa katika ulimwengu wa kisasa tumezoea kufanya kila kitu bila usawa. Algorithm kama hiyo inafanyaje kazi katika mfumo ulio na muundo wa ujumbe wa asynchronous, ambapo tunaamini kuwa wakati wa kungojea jibu kutoka kwa nodi inaweza kuwa ndefu kiholela (kwa njia, kutofaulu kwa nodi pia kunaweza kuzingatiwa kama mfano wakati. nodi inaweza kujibu kwa muda mrefu kiholela).

Sasa kwa kuwa tunajua jinsi algorithm ya makubaliano inavyofanya kazi kwa kanuni, swali kwa wale wasomaji wadadisi ambao wamefanya hadi sasa: ni nodi ngapi katika mfumo wa nodi za N zilizo na mfano wa ujumbe usio na usawa zinaweza kushindwa ili mfumo bado uweze kufikia makubaliano?

Jibu sahihi na uhalali ni nyuma ya mharibifu.Jibu sahihi ni: 0. Ikiwa hata nodi moja katika mfumo wa asynchronous itashindwa, mfumo hautaweza kufikia makubaliano. Kauli hii imethibitishwa katika nadharia ya FLP, inayojulikana sana katika duru fulani (1985, Fischer, Lynch, Paterson, kiungo cha asili mwishoni mwa kifungu): "Kutowezekana kwa kufikia makubaliano yaliyosambazwa ikiwa angalau nodi moja itashindwa. .”
Paka ya Schrödinger bila sanduku: shida ya makubaliano katika mifumo iliyosambazwa
Jamani, basi tuna shida, tumezoea kila kitu kuwa asynchronous. Na hii hapa. Jinsi ya kuendelea kuishi?

Tulikuwa tunazungumza tu juu ya nadharia, juu ya hisabati. Je, "makubaliano hayawezi kupatikana" inamaanisha nini, kutafsiri kutoka kwa lugha ya hisabati hadi yetu - uhandisi? Hii ina maana kwamba "haiwezi kupatikana daima", i.e. Kuna kesi ambayo makubaliano hayawezi kufikiwa. Hii ni kesi ya aina gani?

Hii ni hasa ukiukwaji wa mali liveness ilivyoelezwa hapo juu. Hatuna makubaliano ya pamoja, na mfumo hauwezi kuwa na maendeleo (hauwezi kukamilika kwa muda mfupi) katika hali ambapo hatuna jibu kutoka kwa nodes zote. Kwa sababu katika mfumo wa asynchronous hatuna muda wa majibu unaotabirika na hatuwezi kujua ikiwa nodi imeanguka au inachukua muda mrefu kujibu.

Lakini katika mazoezi tunaweza kupata suluhisho. Hebu algorithm yetu iweze kufanya kazi kwa muda mrefu katika kesi ya kushindwa (uwezekano inaweza kufanya kazi kwa muda usiojulikana). Lakini katika hali nyingi, wakati nodi nyingi zinafanya kazi kwa usahihi, tutakuwa na maendeleo katika mfumo.

Kwa mazoezi, tunashughulika na mifano ya mawasiliano iliyosawazishwa kwa sehemu. Synchrony ya sehemu inaeleweka kama ifuatavyo: kwa ujumla, tuna mfano wa asynchronous, lakini dhana fulani ya "wakati wa utulivu wa kimataifa" wa hatua fulani kwa wakati huletwa rasmi.

Wakati huu kwa wakati hauwezi kuja kwa urefu wowote wa muda, lakini lazima uje siku moja. Saa pepe ya kengele italia, na kuanzia wakati huo tunaweza kutabiri delta ya saa ambayo ujumbe utafika. Kuanzia wakati huu na kuendelea, mfumo hubadilika kutoka kwa asynchronous hadi synchronous. Kwa mazoezi, tunashughulika na mifumo kama hiyo.

Algorithm ya Paxos hutatua shida za makubaliano

Paxos ni familia ya algoriti zinazosuluhisha tatizo la makubaliano kwa mifumo iliyosawazishwa kwa kiasi, kulingana na uwezekano kwamba baadhi ya nodi zinaweza kushindwa. Mwandishi wa Paxos ni Leslie Lamport. Alipendekeza uthibitisho rasmi wa uwepo na usahihi wa algorithm mnamo 1989.

Lakini uthibitisho uligeuka kuwa mbali na mdogo. Chapisho la kwanza lilitolewa tu mnamo 1998 (kurasa 33) zinazoelezea algorithm. Kama ilivyotokea, ilikuwa ngumu sana kuelewa, na mnamo 2001 maelezo ya kifungu hicho yalichapishwa, ambayo yalichukua kurasa 14. Kiasi cha machapisho kinatolewa ili kuonyesha kwamba kwa kweli shida ya makubaliano sio rahisi kabisa, na nyuma ya algorithms kama hiyo kuna idadi kubwa ya kazi na watu wenye akili zaidi.

Inashangaza kwamba Leslie Lamport mwenyewe alibainisha katika hotuba yake kwamba katika makala ya pili ya maelezo kuna taarifa moja, mstari mmoja (hakutaja ni ipi), ambayo inaweza kufasiriwa kwa njia tofauti. Na kwa sababu ya hili, idadi kubwa ya utekelezaji wa kisasa wa Paxos haifanyi kazi kwa usahihi kabisa.

Uchambuzi wa kina wa kazi ya Paxos utachukua zaidi ya nakala moja, kwa hivyo nitajaribu kuwasilisha kwa ufupi wazo kuu la algorithm. Katika viungo mwishoni mwa makala yangu utapata vifaa vya kupiga mbizi zaidi kwenye mada hii.

Majukumu katika Paxos

Algorithm ya Paxos ina dhana ya majukumu. Wacha tuchunguze tatu kuu (kuna marekebisho na majukumu ya ziada):

  1. Wapendekeza (maneno yanaweza pia kutumika: viongozi au waratibu). Hawa ndio watu wanaojifunza kuhusu thamani mpya kutoka kwa mtumiaji na kuchukua jukumu la kiongozi. Kazi yao ni kuzindua duru ya mapendekezo kwa thamani mpya na kuratibu vitendo zaidi vya nodi. Aidha, Paxos inaruhusu kuwepo kwa viongozi kadhaa katika hali fulani.
  2. Wakubali (Wapiga Kura). Hizi ni nodi ambazo hupiga kura kukubali au kukataa thamani fulani. Jukumu lao ni muhimu sana, kwa sababu uamuzi unategemea wao: ni hali gani mfumo utaenda (au hautaenda) baada ya hatua inayofuata ya algorithm ya makubaliano.
  3. Wanafunzi. Nodi ambazo zinakubali na kuandika tu thamani mpya inayokubalika wakati hali ya mfumo imebadilika. Hawafanyi maamuzi, wanapokea tu data na wanaweza kumpa mtumiaji wa mwisho.

Node moja inaweza kuchanganya majukumu kadhaa katika hali tofauti.

Dhana ya akidi

Tunadhani kwamba tuna mfumo wa N nodi Na wao upeo F nodi zinaweza kushindwa. Ikiwa nodi za F zitashindwa, basi lazima tuwe na angalau 2F+1 nodi za kukubali.

Hii ni muhimu ili tuwe na wengi daima, hata katika hali mbaya zaidi, ya nodes "nzuri" zinazofanya kazi kwa usahihi. Hiyo ni F+1 nodi "nzuri" ambazo zilikubali, na thamani ya mwisho itakubaliwa. Vinginevyo, kunaweza kuwa na hali ambapo vikundi vyetu tofauti vya ndani huchukua maana tofauti na hawawezi kukubaliana kati yao wenyewe. Kwa hivyo, tunahitaji wingi kamili ili kushinda kura.

Wazo la jumla la jinsi algorithm ya makubaliano ya Paxos inavyofanya kazi

Algorithm ya Paxos inajumuisha awamu mbili kubwa, ambazo kwa upande wake zimegawanywa katika hatua mbili kila moja:

  1. Awamu ya 1a: Jitayarishe. Wakati wa awamu ya maandalizi, kiongozi (mpendekeza) anajulisha nodi zote: “Tunaanza awamu mpya ya upigaji kura. Tuna raundi mpya. Idadi ya mzunguko huu ni n. Sasa tutaanza kupiga kura." Kwa sasa, inaripoti tu kuanza kwa mzunguko mpya, lakini hairipoti thamani mpya. Kazi ya hatua hii ni kuanzisha duru mpya na kuwajulisha kila mtu nambari yake ya kipekee. Nambari ya duru ni muhimu, lazima iwe thamani kubwa kuliko nambari zote za awali za upigaji kura kutoka kwa viongozi wote waliotangulia. Kwa sababu ni shukrani kwa nambari ya pande zote ambazo nodi zingine kwenye mfumo zitaelewa jinsi data ya kiongozi ni ya hivi karibuni. Kuna uwezekano kwamba nodi zingine tayari zina matokeo ya upigaji kura kutoka duru za baadaye na zitamwambia tu kiongozi kuwa yuko nyuma ya wakati.
  2. Awamu ya 1b: Ahadi. Wakati nodi za wapokeaji zilipopokea nambari ya hatua mpya ya kupiga kura, matokeo mawili yanawezekana:
    • Nambari n ya kura mpya ni kubwa kuliko idadi ya kura yoyote ya awali ambayo mpokeaji alishiriki. Kisha anayekubali hutuma ahadi kwa kiongozi kwamba hatashiriki katika kura nyingine na nambari iliyo chini ya n. Ikiwa mpokeaji tayari amepiga kura kwa ajili ya kitu (yaani, tayari amekubali thamani fulani katika awamu ya pili), basi anaambatanisha thamani iliyokubaliwa na idadi ya kura ambayo alishiriki kwenye ahadi yake.
    • Vinginevyo, ikiwa anayekubali tayari anajua kuhusu kura ya juu zaidi, inaweza tu kupuuza hatua ya maandalizi na si kujibu kwa kiongozi.
  3. Awamu ya 2a: Kubali. Kiongozi anahitaji kungoja jibu kutoka kwa akidi (nodi nyingi kwenye mfumo) na, ikiwa idadi inayotakiwa ya majibu inapokelewa, basi ana chaguzi mbili za ukuzaji wa hafla:
    • Baadhi ya waliokubali walituma maadili ambayo tayari walikuwa wameyapigia kura. Katika kesi hii, kiongozi huchagua thamani kutoka kwa kura na nambari ya juu. Hebu tuite thamani hii x, na inatuma ujumbe kwa nodi zote kama vile: “Kubali (n, x)”, ambapo thamani ya kwanza ni nambari ya kupiga kura kutoka kwa hatua yake Pendekeza, na thamani ya pili ndiyo ambayo kila mtu alikusanya, i.e. thamani ambayo kwa hakika tunaipigia kura.
    • Ikiwa hakuna hata mmoja wa wakubali aliyetuma maadili yoyote, lakini waliahidi tu kupiga kura katika duru hii, kiongozi anaweza kuwaalika kupiga kura kwa thamani yao, thamani ambayo alikua kiongozi hapo kwanza. Hebu tuite y. Inatuma ujumbe kwa nodi zote kama vile: "Kubali (n, y)", sawa na matokeo ya awali.
  4. Awamu ya 2b: Imekubaliwa. Zaidi ya hayo, nodi za wapokeaji, baada ya kupokea ujumbe wa “Kubali(...)” kutoka kwa kiongozi, wanakubaliana nayo (tuma uthibitisho kwa nodi zote kwamba wanakubaliana na thamani mpya) ikiwa tu hawajaahidi baadhi (nyingine) ) kiongozi kushiriki katika kupiga kura na nambari ya duru n'> n, vinginevyo wanapuuza ombi la uthibitisho.

    Ikiwa nodi nyingi zilijibu kwa kiongozi, na zote zilithibitisha thamani mpya, basi thamani mpya inachukuliwa kukubalika. Hooray! Ikiwa wengi hawajafikiwa au kuna nodes ambazo zilikataa kukubali thamani mpya, basi kila kitu kinaanza.

Hivi ndivyo algorithm ya Paxos inavyofanya kazi. Kila moja ya hatua hizi ina hila nyingi, kwa kweli hatukuzingatia aina mbalimbali za kushindwa, matatizo ya viongozi wengi na mengi zaidi, lakini madhumuni ya makala hii ni kumtambulisha msomaji kwa ulimwengu wa kompyuta iliyosambazwa kwa kiwango cha juu.

Inafaa pia kuzingatia kuwa Paxos sio pekee ya aina yake, kuna algorithms zingine, kwa mfano, Raft, lakini hii ni mada ya makala nyingine.

Viungo vya nyenzo kwa masomo zaidi

Kiwango cha wanaoanza:

Kiwango cha Leslie Lamport:

Chanzo: mapenzi.com

Kuongeza maoni