U gattu di Schrödinger senza scatula: u prublema di cunsensu in i sistemi distribuiti

Allora, imaginemu. Ci sò 5 misgi chjusi in a stanza, è per andà à sveglià u pruprietariu, tutti anu bisognu à accunsenu nantu à questu trà elli, perchè ponu apre a porta solu cù cinque di elli appoghjate nantu à questu. Sì unu di i misgi hè u ghjattu di Schrödinger, è l'altri misgi ùn sanu micca di a so decisione, a quistione hè: "Cumu ponu fà?"

In questu articulu, vi dicu in termini simplici nantu à u cumpunente teoricu di u mondu di i sistemi distribuiti è i principii di u so funziunamentu. Esamineraghju ancu superficialmente l'idea principale di Paxos.

U gattu di Schrödinger senza scatula: u prublema di cunsensu in i sistemi distribuiti

Quandu i sviluppatori utilizanu infrastrutture in nuvola, diverse basa di dati, è travaglianu in clusters di un gran numaru di nodi, sò cunfidenti chì i dati seranu cumpleti, sicuri è sempre dispunibili. Ma induve sò e guaranzia ?

Essenzialmente, e garanzie chì avemu sò garanzii di fornitore. Sò descritti in a ducumentazione cusì: "Stu serviziu hè abbastanza affidabile, hà un SLA datu, ùn vi preoccupate micca, tuttu funzionerà distribuitu cum'è aspettate".

Tendemu à crede in u megliu, perchè i picciotti intelligenti di e grande cumpagnie ci assicuranu chì tuttu sarà bè. Ùn dumandemu micca a quistione: perchè, in fattu, questu pò travaglià in tuttu? Ci hè una ghjustificazione formale per u funziunamentu currettu di tali sistemi?

Recentemente sò andatu à Scola di Informatica Distribuita è era assai inspiratu da stu tema. E lezioni à a scola eranu più cum'è classi di calculu cà qualcosa di ligata à i sistemi di l'informatica. Ma questu hè esattamente cumu l'algoritmi più impurtanti chì usemu ogni ghjornu, senza mancu sapè, sò stati pruvati à un tempu.

A maiò parte di i sistemi distribuiti muderni utilizanu l'algoritmu di cunsensu Paxos è e so diverse mudificazioni. A cosa più bella hè chì a validità è, in principiu, a pussibilità di l'esistenza di stu algoritmu pò esse pruvata solu cù una penna è carta. In pratica, l'algoritmu hè utilizatu in i grandi sistemi chì currenu nantu à un gran numaru di nodi in i nuvuli.

Un'illustrazione ligera di ciò chì serà discututu dopu: u compitu di dui generaliFighjemu un ochju per un warm-up compitu di dui generali.

Avemu dui armati - rossu è biancu. E truppe bianche sò basate in a cità assediata. E truppe rosse guidate da i generali A1 è A2 sò situate in dui lati di a cità. U compitu di i rossi hè di attaccà a cità bianca è vince. In ogni casu, l'esercitu di ogni generale rossu individualmente hè più chjucu cà l'armata bianca.

U gattu di Schrödinger senza scatula: u prublema di cunsensu in i sistemi distribuiti

Cundizioni di vittoria per i rossi : i dui generali devenu attaccà à u stessu tempu per avè un vantaghju numericu annantu à i bianchi. Per fà questu, i generale A1 è A2 anu bisognu à un accordu cù l'altri. Sì tutti attaccanu separatamente, i rossi perderanu.

Per ghjunghje à un accordu, i generale A1 è A2 ponu mandà messageri l'un à l'altru attraversu u territoriu di a cità bianca. U messageru pò ghjunghje cù successu à un generale alleatu o pò esse interceptatu da u nemicu. Quistione: ci hè una tale sequenza di cumunicazioni trà i generali di i capelli rossi (a sequenza di mandà messageri da A1 à A2 è vice versa da A2 à A1), in quale sò garantiti d'accordu nantu à un attaccu à l'ora X. Eccu, i guarantisci significanu chì i dui generali anu cunfirmatu senza ambiguità chì un alliatu (un altru generale) attaccherà definitivamente à l'ora stabilita X.

Suppone chì A1 manda un messaggeru à A2 cù u missaghju: "Attachemu oghje à mezanotte!" U General A1 ùn pò micca attaccà senza cunferma da u General A2. Se u messaggeru da A1 hè ghjuntu, allora u General A2 manda cunferma cù u missaghju: "Iè, uccidemu i bianchi oghje". Ma avà u General A2 ùn sapi micca s'ellu u so messageru hè ghjuntu o micca, ùn hà micca guaranzia chì l'attaccu serà simultanea. Avà u General A2 hà bisognu di novu cunferma.

Sè avemu discrittu in più a so cumunicazione, diventa chjaru chì ùn importa quanti ciculi di scambiu di messagi ci sò, ùn ci hè manera di guarantiscia chì i dui generali anu ricivutu i so messagi (assumendu chì ogni messaggeru pò esse interceptatu).

U Problemu di dui Generali hè una grande illustrazione di un sistema distribuitu assai simplice induve ci sò dui nodi cù una cumunicazione inaffidabile. Questu significa chì ùn avemu micca una guaranzia di 100% chì sò sincronizati. I prublemi simili sò discututi solu in una scala più grande dopu in l'articulu.

Introducemu u cuncettu di sistemi distribuiti

Un sistema distribuitu hè un gruppu di computer (in seguitu chjameremu nodi) chì ponu scambià missaghji. Ogni nodu individuale hè un tipu d'entità autonoma. Un node pò processà e so attività per sè stessu, ma per cumunicà cù altri nodi, hà bisognu di mandà è riceve missaghji.

Cumu esattamente i missaghji sò implementati, chì protokolli sò usati - questu ùn hè micca d'interessu per noi in questu cuntestu. Hè impurtante chì i nodi di un sistema distribuitu ponu scambià dati cù l'altri mandendu missaghji.

A definizione stessu ùn pare micca assai cumplicata, ma duvemu piglià in contu chì un sistema distribuitu hà una quantità di attributi chì seranu impurtanti per noi.

Attributi di sistemi distribuiti

  1. Cuncurrenza - a pussibilità di avvenimenti simultanei o cuncurrenti in u sistema. Inoltre, cunsideremu l'avvenimenti chì si verificanu nantu à dui nodi diffirenti per esse potenzialmente cuncurrenti, sempre chì ùn avemu micca un ordine chjaru di l'occurrence di questi avvenimenti. Ma, in regula, ùn avemu micca.
  2. Nisun clock globale. Ùn avemu micca un ordine chjaru di l'avvenimenti per a mancanza di un clock globale. In u mondu ordinariu di e persone, simu abituati à u fattu chì avemu orologi è tempu assolutamente. Tuttu cambia quandu si tratta di sistemi distribuiti. Ancu l'orologi atomichi ultra-precisi anu a deriva, è ci ponu esse situazioni induve ùn pudemu micca dì quale di i dui avvenimenti hè accadutu prima. Dunque, ùn pudemu micca cunfidendu ancu in u tempu.
  3. fallimentu indipendente di i nodi di u sistema. Ci hè un altru prublema: qualcosa pò sbaglià solu perchè i nostri nodi ùn duranu micca per sempre. U discu duru pò fallu, a macchina virtuale in u nuvulu pò reboot, a reta pò lampà è i missaghji seranu persi. Inoltre, pò esse situazione induve i nodi travaglianu, ma à u stessu tempu travaglianu contru u sistema. L'ultima classe di prublemi ancu ricevutu un nome separatu: prublema generali bizantini. L'esempiu più populari di un sistema distribuitu cù stu prublema hè Blockchain. Ma oghje ùn avemu micca cunsideratu sta classe speciale di prublemi. Seremu interessate in situazioni in quale solu unu o più nodi ponu fallu.
  4. Mudelli di cumunicazione (mudelli di messageria) trà i nodi. Avemu digià stabilitu chì i nodi cumunicanu scambiendu missaghji. Ci sò dui mudelli di messageria cunnisciuti: sincroni è asincroni.

Mudelli di cumunicazione trà i nodi in sistemi distribuiti

Mudellu sincronu - Sapemu sicuru chì ci hè un delta finitu cunnisciutu di u tempu durante u quale un missaghju hè garantitu per ghjunghje da un node à l'altru. Se questu tempu hè passatu è u messagiu ùn hè micca ghjuntu, pudemu dì sicuru chì u node hà fiascatu. In questu mudellu avemu tempi d'attesa previsible.

U mudellu asincronu - in i mudelli asincroni cunsideremu chì u tempu d'attesa hè finitu, ma ùn ci hè micca un tali delta di u tempu dopu chì pudemu assicurà chì u node hà fiascatu. Quelli. U tempu d'attesa per un missaghju da un node pò esse arbitrariamente longu. Questa hè una definizione impurtante, è ne parlemu più.

U cuncettu di cunsensu in sistemi distribuiti

Prima di definisce formalmente u cuncettu di cunsensu, cunsideremu un esempiu di una situazione induve avemu bisognu, vale à dì - State Machine Replication.

Avemu qualchì log distribuitu. Vulemu chì sia coherente è cuntene dati idèntici nantu à tutti i nodi di u sistema distribuitu. Quandu unu di i nodi ampara un novu valore chì hà da scrive à u logu, u so compitu diventa di offre stu valore à tutti l'altri nodi per chì u logu hè aghjurnatu in tutti i nodi è u sistema si move à un novu statu coherente. In questu casu, hè impurtante chì i nodi accunsenu trà elli: tutti i nodi accunsenu chì u novu valore prupostu hè currettu, tutti i nodi accettanu stu valore, è solu in questu casu tutti ponu scrive u novu valore à u logu.

In altri palori: nimu di i nodi s'hè oppostu chì hà avutu infurmazione più pertinente, è u valore prupostu era incorrectu. L'accordu trà i nodi è l'accordu nantu à un solu valore accettatu currettu hè cunsensu in un sistema distribuitu. In seguitu, parlemu di algoritmi chì permettenu un sistema distribuitu per esse garantitu per ghjunghje à u cunsensu.
U gattu di Schrödinger senza scatula: u prublema di cunsensu in i sistemi distribuiti
Più furmale, pudemu definisce un algoritmu di cunsensu (o simpliciamente un algoritmu di cunsensu) cum'è una certa funzione chì trasferisce un sistema distribuitu da u statu A à u statu B. Inoltre, stu statu hè accettatu da tutti i nodi, è tutti i nodi ponu cunfirmà. Comu si vede, stu compitu ùn hè micca cusì triviale cum'è pari à u primu sguardu.

Pruprietà di l'Algoritmu di Consensus

L'algoritmu di cunsensu deve avè trè proprietà per chì u sistema cuntinueghja à esiste è avè qualchì prugressu in u muvimentu di statu à statu:

  1. Acordaghju - tutti i nodi chì operanu currettamente devenu piglià u listessu valore (in l'articuli sta pruprietà hè ancu chjamata pruprietà di salvezza). Tutti i nodi chì sò attualmente in funziunamentu (ùn anu micca fallutu o persu u cuntattu cù l'altri) anu da vene à un accordu è accettà qualchì valore cumuni finali.

    Hè impurtante per capiscenu quì chì i nodi in u sistema distribuitu chì avemu cunsideratu volenu accunsentì. Vale à dì, avemu parlatu avà di sistemi in quale qualcosa pò simpricimenti falli (per esempiu, qualchì node falli), ma in questu sistema ùn ci hè definitu micca nodi chì travaglianu deliberatamente contru à l'altri (u compitu di i generali bizantini). A causa di sta pruprietà, u sistema ferma coherente.

  2. sincerità - se tutti i nodi chì funzionanu currettamente offrenu u listessu valore v, chì significa chì ogni nodu operatu currettamente deve accettà stu valore v.
  3. Terminazione - tutti i nodi chì operanu currettamente eventualmente piglià un certu valore (proprietà di vita), chì permette à l'algoritmu di prugressu in u sistema. Ogni individuu node operatu currettamente deve prima o dopu accettà u valore finali è cunfirmà: "Per mè, stu valore hè veru, sò d'accordu cù tuttu u sistema".

Un esempiu di cumu funziona l'algoritmu di cunsensu

Mentre chì e proprietà di l'algoritmu ùn ponu micca esse cumpletamente chjaru. Per quessa, avemu da illustrà cù un esempiu chì tappe l'algoritmu di cunsensu più simplice passa in un sistema cù un mudellu di messageria sincrona, in quale tutti i nodi funzionanu cum'è previstu, i missaghji ùn sò micca persi è nunda si rompe (questu succede veramente?).

  1. Tuttu principia cù una pruposta di matrimoniu (Propose). Assumimu chì un cliente cunnessu à un node chjamatu "Node 1" è hà iniziatu una transazzione, passendu un novu valore à u node - O. Da avà, chjameremu "Node 1" offerta. Cum'è un proponente, "Node 1" deve avà avvisà tuttu u sistema chì hà dati freschi, è manda missaghji à tutti l'altri nodi: "Fighjate! U significatu "O" hè vinutu à mè è vogliu scrive! Per piacè cunfirmà chì ancu registrà "O" in u vostru log".

    U gattu di Schrödinger senza scatula: u prublema di cunsensu in i sistemi distribuiti

  2. A tappa dopu hè u votu per u valore prupostu (Voting). Chì ghjè per ? Pò accade chì altri nodi anu ricivutu infurmazioni più recenti, è anu datu nantu à a listessa transazzione.

    U gattu di Schrödinger senza scatula: u prublema di cunsensu in i sistemi distribuiti

    Quandu u node "Node 1" manda a so pruposta, l'altri nodi verificanu i so logs per e dati nantu à questu avvenimentu. Se ùn ci sò micca cuntradizioni, i nodi annunzianu: "Iè, ùn aghju micca altre dati per questu avvenimentu. U valore "O" hè l'ultime informazioni chì meritemu".

    In ogni altru casu, i nodi ponu risponde à "Node 1": "Ascolta! Aghju datu più recenti nantu à sta transazzione. Micca "O", ma qualcosa di megliu ".

    À a tappa di u votu, i nodi venenu à una decisione: o tutti accettanu u listessu valore, o unu d'elli vota contru, indicà chì hà datu più recenti.

  3. Se a volta di votu hè successu è tutti eranu in favore, u sistema passa à una nova tappa - Acceptendu u valore. "Node 1" raccoglie tutte e risposte da altri nodi è rapporti: "Tutti accunsenu à u valore "O"! Avà dichjarò ufficialmente chì "O" hè u nostru novu significatu, u listessu per tutti! Scrivite in u vostru libru, ùn vi scurdate. Scrivitelo in u vostru logu! "

    U gattu di Schrödinger senza scatula: u prublema di cunsensu in i sistemi distribuiti

  4. I nodi rimanenti mandanu a cunferma (Accettatu) chì anu scrittu u valore "O"; nunda di novu hè ghjuntu in questu tempu (una spezia di cummissione in dui fasi). Dopu questu avvenimentu significativu, cunsideremu chì a transazzione distribuita hè stata cumpletata.
    U gattu di Schrödinger senza scatula: u prublema di cunsensu in i sistemi distribuiti

Cusì, l'algoritmu di cunsensu in un casu simplice hè custituitu di quattru passi: prupone, votu (vote), accettà (accetta), cunfirmà l'accettazione (accettata).

Se à qualchì passu ùn pudemu micca ghjunghje à l'accordu, allora l'algoritmu principia di novu, tenendu in contu l'infurmazioni furnite da i nodi chì anu rifiutatu di cunfirmà u valore prupostu.

Algoritmu di cunsensu in un sistema asincronu

Prima di questu, tuttu era liscia, perchè avemu parlatu di un mudellu di messageria sincrona. Ma sapemu chì in u mondu mudernu simu abituati à fà tuttu in modu asincronu. Cumu funziona un algoritmu simili in un sistema cù un mudellu di messageria asincrona, induve crede chì u tempu d'attesa per una risposta da un node pò esse arbitrariamente longu (per via, u fallimentu di un node pò ancu esse cunsideratu cum'è un esempiu quandu un node pò risponde per un tempu arbitrariamente longu).

Avà chì sapemu cumu funziona l'algoritmu di cunsensu in principiu, una quistione per quelli lettori inquisitivi chì anu fattu questu quì: quanti nodi in un sistema di N nodi cù un mudellu di missaghju asincronu pò fallu cusì chì u sistema pò ancu ghjunghje à u cunsensu?

A risposta curretta è a ghjustificazione sò daretu à u spoiler.A risposta curretta hè: 0. Se ancu un node in un sistema asincronu falla, u sistema ùn serà micca capaci di ghjunghje à u cunsensu. Sta dichjarazione hè pruvata in u teorema FLP, cunnisciutu in certi circles (1985, Fischer, Lynch, Paterson, ligame à l'uriginale à a fine di l'articulu): "L'impossibilità di ottene un consensus distribuitu se almenu un node falla. ."
U gattu di Schrödinger senza scatula: u prublema di cunsensu in i sistemi distribuiti
Ragazzi, allora avemu un prublema, simu abituati à tuttu esse asincronu. È quì hè. Cumu cuntinuà à campà ?

Si parlava solu di teoria, di matematica. Chì significà "u cunsensu ùn pò micca esse rializatu", traduzzione da a lingua matematica in a nostra - ingegneria? Questu significa chì "ùn pò micca sempre esse realizatu", i.e. Ci hè un casu chì u cunsensu ùn hè micca pussibule. Chì tipu di casu hè questu?

Questu hè esattamente a violazione di a pruprietà di vita descritta sopra. Ùn avemu micca un accordu cumuni, è u sistema ùn pò micca avè prugressu (ùn pò micca cumpletu in un tempu finitu) in u casu induve ùn avemu micca una risposta da tutti i nodi. Perchè in un sistema asincronu ùn avemu micca un tempu di risposta prevedibile è ùn pudemu micca sapè s'ellu un node s'hè lampatu o hè solu piglià assai tempu per risponde.

Ma in pratica pudemu truvà una suluzione. Chì u nostru algoritmu pò travaglià per un bellu pezzu in casu di fallimenti (potenzialmente pò travaglià indefinitu). Ma in a maiò parte di e situazioni, quandu a maiò parte di i nodi sò funziunanti currettamente, avemu avutu prugressu in u sistema.

In pratica, avemu trattatu cù mudelli di cumunicazione parzialmente sincroni. A sincronia parziale hè cumpresu cusì: in u casu generale, avemu un mudellu asincronu, ma un certu cuncettu di "tempu di stabilizazione globale" di un certu puntu in u tempu hè formalmente introduttu.

Stu mumentu in u tempu ùn pò micca vene per qualchì tempu, ma deve vene un ghjornu. A sveglia virtuale sonarà, è da quellu mumentu pudemu predichendu u delta di u tempu per quale ghjunghjeranu i missaghji. Da questu mumentu, u sistema passa da asincrona à sincrona. In pratica, avemu trattatu pricisamenti tali sistemi.

L'algoritmu Paxos risolve i prublemi di cunsensu

Paxos hè una famiglia di algoritmi chì risolve u prublema di cunsensu per i sistemi parzialmente sincroni, sottumessu à a pussibilità chì certi nodi ponu falli. L'autore di Paxos hè Leslie Lampport. Hà prupostu una prova formale di l'esistenza è a currezzione di l'algoritmu in u 1989.

Ma a prova s'hè vultata à esse luntanu da triviale. A prima publicazione hè stata liberata solu in u 1998 (pagine 33) chì descrive l'algoritmu. Cum'è s'hè risultatu, era assai difficiuli di capiscenu, è in u 2001 hè stata publicata una spiegazione di l'articulu, chì hà pigliatu 14 pagine. U voluminu di publicazioni hè datu per dimustrà chì, in fattu, u prublema di u cunsensu ùn hè micca simplicemente simplice, è daretu à tali algoritmi si trova una grande quantità di travagliu da e persone più intelligenti.

Hè interessante chì Leslie Lamport stessu hà nutatu in a so cunferenza chì in u sicondu articulu esplicativu ci hè una dichjarazione, una linea (ùn hà micca specificatu quale), chì pò esse interpretatu in diverse manere. È per quessa, un gran numaru di implementazioni Paxos muderni ùn funziona micca bè.

Un analisi detallatu di u travagliu di Paxos piglià più di un articulu, cusì pruvaraghju à trasmette assai brevemente l'idea principale di l'algoritmu. In i ligami à a fine di u mo articulu truverete materiali per più immersione in questu tema.

Ruoli à Paxos

L'algoritmu Paxos hà un cuncettu di roli. Cunsideremu trè principali (ci sò mudificazioni cù roli supplementari):

  1. Proponenti (i termini ponu ancu esse usatu: dirigenti o coordinatori). Quessi sò i picciotti chì amparanu un novu valore da l'utilizatori è piglianu u rolu di capu. U so compitu hè di lancià una volta di pruposte per un novu valore è di coordinà più azzioni di i nodi. Inoltre, Paxos permette a prisenza di parechji dirigenti in certe situazioni.
  2. Accettatori (votanti). Quessi sò nodi chì votanu per accettà o rifiutà un valore particulari. U so rolu hè assai impurtante, perchè a decisione dipende di elli: quale statu u sistema (o micca) andà dopu à u prossimu stadiu di l'algoritmu di cunsensu.
  3. Studienti. Nodi chì simpricimenti accettanu è scrivenu u novu valore accettatu quandu u statu di u sistema hà cambiatu. Ùn piglianu micca decisioni, solu ricevenu i dati è ponu dà à l'utilizatore finale.

Un node pò cumminà parechji roli in diverse situazioni.

U cuncettu di quorum

Assumimu chì avemu un sistema di N nodi È di elli u massimu F i nodi ponu fallu. Sì i nodi F fallenu, allora duvemu avè almenu 2F+1 nodi accettatori.

Questu hè necessariu per chì avemu sempre a maiuranza, ancu in a situazione peghju, di nodi "boni" chì travaglianu bè. Hè f+1 "boni" nodes chì accunsenu, è u valore finali serà accettatu. Altrimenti, ci pò esse una situazione induve i nostri diversi gruppi lucali piglianu significati diversi è ùn ponu micca accordu trà elli. Dunque, avemu bisognu di una maiurità assuluta per vince u votu.

L'idea generale di cumu funziona l'algoritmu di cunsensu Paxos

L'algoritmu Paxos implica dui grandi fasi, chì à u turnu sò divisi in dui passi ognunu:

  1. Fase 1a: Preparate. Durante a fase di preparazione, u capu (proponente) informa à tutti i nodi: "Avemu principiatu una nova fase di votu. Avemu una nova volta. U numeru di sta volta hè n. Avà cuminciaremu à vutà ". Per avà, solu informa l'iniziu di un novu ciculu, ma ùn informa micca un novu valore. U compitu di sta tappa hè di inizià una nova volta è informà tutti di u so numeru unicu. U numaru tondu hè impurtante, deve esse un valore più grande di tutti i numeri di votu previ da tutti i capi di prima. Perchè hè grazia à u numeru tondu chì altri nodi in u sistema capiscenu quantu recenti sò i dati di u capu. Hè prubabile chì l'altri nodi anu digià risultati di votu da turni assai più tardi è solu diceranu à u capu chì hè daretu à i tempi.
  2. Fase 1b: Promessa. Quandu i nodi accettatori ricevenu u numeru di a nova tappa di votu, dui risultati sò pussibuli:
    • U numaru n di u novu votu hè più grande di u numeru di qualsiasi votu precedente in quale l'accetturi hà participatu. Allora l'accettatore manda una prumessa à u capu chì ùn hà micca participatu à più voti cù un numeru più bassu di n. Se l'accettore hà digià vutatu per qualcosa (vale à dì, hà digià accettatu qualchì valore in a seconda fase), allora attache u valore accettatu è u numeru di u votu in quale hà participatu à a so prumessa.
    • Altrimenti, se l'accettatore sapi digià u votu più altu, pò solu ignurà u passu di preparazione è ùn risponde micca à u capu.
  3. Fase 2a: Accetta. U capu deve aspittà una risposta da u quorum (a maiuranza di i nodi in u sistema) è, se u numeru necessariu di risposti hè ricevutu, allora hà duie opzioni per u sviluppu di l'avvenimenti:
    • Alcuni di l'accettori anu mandatu valori chì avianu digià vutatu. In questu casu, u capu sceglie u valore da u votu cù u numeru massimu. Chjamemu stu valore x, è manda un missaghju à tutti i nodi cum'è: "Accetta (n, x)", induve u primu valore hè u numeru di votu da u so propiu passu Propose, è u sicondu valore hè ciò chì tutti si sò riuniti per. i.e. u valore per quale avemu veramente vutatu.
    • Se nimu di l'accettori ùn anu mandatu alcunu valori, ma solu prumessu di votu in questa volta, u capu pò invià à votu per u so valore, u valore per quale hè diventatu un capu in u primu locu. Chjamemu u y. Manda un missaghju à tutti i nodi cum'è: "Accetta (n, y)", simile à u risultatu precedente.
  4. Fase 2b: Acceptatu. In più, i nodi accettatori, dopu avè ricivutu u missaghju "Accetta (...)" da u capu, accunsenu cun ellu (invià cunferma à tutti i nodi chì accunsenu cù u novu valore) solu s'ellu ùn anu micca prumessu alcuni (altri) ) capu per participà à u votu cù u numeru tondu n'> n, altrimenti ignoranu a dumanda di cunferma.

    Se a maiò parte di i nodi risponde à u capu, è tutti cunfirmanu u novu valore, u novu valore hè cunsideratu accettatu. Eura! Se a maiuranza ùn hè micca ghjunta o ci sò nodi chì ricusanu di accettà u novu valore, allora tuttu principia.

Questu hè cumu funziona l'algoritmu Paxos. Ciascuna di sti tappe hà assai suttilità, ùn avemu praticamente micca cunsideratu diversi tipi di fallimenti, prublemi di parechji dirigenti è assai più, ma u scopu di questu articulu hè solu di presentà u lettore à u mondu di l'informatica distribuita à un altu livellu.

Hè nutate ancu chì Paxos ùn hè micca l'unicu di u so tipu, ci sò altri algoritmi, per esempiu, Raft, ma questu hè un tema per un altru articulu.

Ligami à i materiali per più studiu

Livellu principianti:

Livellu di Leslie Lampport:

Source: www.habr.com

Add a comment