consensus concurrent problem

56
Gianvito Siciliano Lorenzo Valente Altri problemi del Consenso Introduzione al problema del consenso Problema del K-Agreement Problema del Commit

Upload: gianvito-siciliano

Post on 05-Jul-2015

62 views

Category:

Technology


0 download

DESCRIPTION

problema del consenso affrontato nel seminario per il corso Modelli concorrenti e sistemi distribuiti

TRANSCRIPT

Page 1: Consensus Concurrent problem

Gianvito Siciliano Lorenzo Valente

Altri problemi del Consenso

•  Introduzione al problema del consenso

•  Problema del K-Agreement

•  Problema del Commit

Page 2: Consensus Concurrent problem

Problema del consenso •  Un gruppo di processi deve mettersi d’accordo su un valore: è

l‘astrazione di una classe di problemi in cui i processi partono con le loro opinioni (eventualmente divergenti) e devono accordarsi su un’opinione comune

•  Validity: Se un processo decide per un valore, allora quel valore è stato proposto da qualche processo.

•  Termination: Prima o poi ogni processo attivo prende una decisione

•  Agreement: Nessuna coppia di processi attivi decide per due valori diversi

Un processo si definisce attivo se non è fallito alla fine del round corrente

Page 3: Consensus Concurrent problem

Consenso: sistema sincrono •  Il sistema comprende n processi comunicanti tramite scambio

di messaggi

•  I canali di comunicazione sono affidabili

•  Al più f processi sono soggetti a fallimenti (stopping failure)

•  Il processo pi (i=1…n) possiede una propria variabile di decisione, e propone un proprio valore vi appartenente ad un insieme D.

•  Ciascun processo parte da uno stato di indecisione e mira a raggiungere uno stato di decisione, in cui il valore di è immutabile.

Page 4: Consensus Concurrent problem

Il problema del K-Agreement

È una generalizzazione del problema del consenso, nella quale viene chiesto ai processi di accordarsi, non sullo stesso valore, ma su un insieme k di valori. Utilizzi: •  Frequenze di trasmissione in una rete di

comunicazione

Page 5: Consensus Concurrent problem

Ambiente •  Distribuito

•  Sincrono

•  Modello a grafo per la rete (completo e indiretto con n nodi)

•  Link della rete sicuri (nessuna possibilità di perdita di messaggi)

•  Nodi della rete insicuri (possibilità di fallimenti nei processi)

•  Input e valori decisionali compresi in un insieme V finito e totalmente ordinato.

Page 6: Consensus Concurrent problem

K-Agreement: requisiti •  Validity: Se un processo decide per un valore allora

quel valore è il valore iniziale di qualche processo (Strong validity per 1-Agreement)

•  Termination: Ogni processo attivo fino alla fine prende una decisione

•  Agreement: 1.  Tutti i valori di decisione appartengono ad un

insieme W sottoinsieme di V 2.  Ci sono al più k valori decisionali differenti (|W| = k)

Page 7: Consensus Concurrent problem

Algoritmo FloodMin Informalmente:

1.  Ogni processo memorizza il valore minimo (min-val) del round precedente (inizialmente è il suo valore di input)

2.  Per ogni round: •  I processi inviano in broadcast il loro min-val •  Ogni processo resetta il suo min-val in base ai

vecchi valori e a quelli ricevuti nei messaggi del round corrente

3.  Alla fine il valore decisionale sarà il min-val

Page 8: Consensus Concurrent problem

Round del FloodMin

Quanti round servono per garantire la soluzione? • 1-Agreement: f+1 round • K-Agreement: (f/k) + 1 round

Consentendo k valori decisionali, il numero di round totali viene diviso per k.

Page 9: Consensus Concurrent problem

FloodMin: formale •  Statesi:

•  rounds ∈ N (inizialmente 0) •  decision ∈ V ∪ {unknown} (inizialmente 0) •  min-val ∈ V (inizialmente input)

•  Msgsi: Se rounds <= (f/k) allora invia min-val a tutti gli altri processi

•  Transi: rounds := rounds + 1; mj := messaggio ricevuto da ogni processo j min-val := min({min-val} ∪ {mj : j≠i}) se rounds = (f/k)+1 allora decision := min-val

Page 10: Consensus Concurrent problem

FloodMin: prova di correttezza •  Teorema:

FloodMin, per (f/k) + 1 round, risolve il problema del K-Agreement

•  Lemma 1: M(r) = insieme dei min-val dei processi attivi dopo r round => l’insieme può solo decrescere => ogni min-val dopo r+1 è un min-val dopo r round

•  Lemma 2: ∀d ∈  N, d ≤ f+1, se durante r con 1 ≤ r ≤ (f/k)/1, falliscono al più d-1 processi, allora |M(r)| ≤ d. … ci sono, cioè, al più d differenti min-val per i processi attivi dopo il ciclo r.

Page 11: Consensus Concurrent problem

Dimostrazione Lemma 1 M(r) ⊆ M(r-1) per ogni r, 1 ≤ r ≤ (f/k) + 1

Dimostrazione: 1.  Supponiamo che m∈M(r), allora min-val i = m per qualche

processo i, per definizione di M(r). 2.  Esistono due possibili casi:

a)  min-vali = m alla fine del round r – 1 b)  min-valj = m per qualche j alla fine del round r – 1

3.  Quindi: a)  Se i era attivo al round r lo era anche dopo il round r-1 b)  Se j ha inviato min-valj al round r, era attivo alla fine del

round r-1 In ogni caso, m∈M(r-1)

Page 12: Consensus Concurrent problem

Dimostrazione Lemma 2 Se al più d-1 processi falliscono nel ciclo r,

allora |M(r)| ≤ d

Dimostrazione (per assurdo): 1.  Supponiamo che |M(r)| > d (dimostrare che almeno d processi

falliscano in r) 2.  Sia m = max(M(r)) e m’ ≠ m un qualsiasi elemento in M(r). 3.  Allora m’∈M(r-1) per il Lemma 1 4.  Sia pi t.c. m’=min-vali al round r-1. Se i non fallisse durante il

round r, ogni processo riceverebbe il valore m’ e quindi non esisterebbe un pj t.c. m=min-valj siccome m>m’. Segue che pi fallisce durante il round r.

5.  Per ogni elemento m’∈M(r) t.c. m’ ≠ m, un processo fallisce durante il round r. Se |M(r)| > d, falliscono almeno d processi (che contraddice l’ipotesi)

Page 13: Consensus Concurrent problem

Dimostrazione Teorema L’algoritmo FloodMin risolve il problema del K-Agreement per il

modello con stopping failure.

Dimostrazione: •  Validity / Termination: facile

•  Agreement: 1.  Assumiamo un esecuzione con > k valori decisionali differenti. 2.  Quindi il numero dei min-val per i processi attivi dopo i (f/k)+1

round è > k 3.  Per il Lemma1, |M((f/k)+1)|>k => |M(r)|>k, per ogni 0≤r≤(f/k)

+1… 4.  Per il Lemma2, almeno k processi falliscono in ogni round. 5.  Quindi ci sono almeno ((f/k)+1)*k fallimenti totali, che è > f …Contraddizione!

Page 14: Consensus Concurrent problem

FloodMin: Complessità

•  Il numero di round (f/k)+1

•  Sia n il numero di processi della rete; il numero di msg sarà al più ((f/k)+1)*n2

•  Sia b un upper bound del numero di bit necessari per rappresentare un msg (ovvero un singolo elemento di V); il numero di bit inviati sarà ((f/k)+1)*n2*b

Page 15: Consensus Concurrent problem

Il problema del Commit Un gruppo di processi partecipa per arrivare ad una decisione: approvare o meno una transazione (ad esempio, scrittura in un Database). Due possibili decisioni: •  Commit (il risultato della transazione viene reso

permanente) •  Abort (il risultato della transazione viene scartato)

Page 16: Consensus Concurrent problem

Ambiente •  Distribuito

•  Sincrono

•  Link della rete sicuri (nessuna possibilità di perdita di messaggi)

•  Nodi della rete insicuri (possibilità di fallimenti nei processi)

Page 17: Consensus Concurrent problem

Formulazione formale •  Input e Output: {0, 1}

•  Agreement: Tutti i processi prendono la stessa decisione

•  Validity: 1.  Se uno qualsiasi dei processi decide 0, allora 0 sarà l’unica

decisione finale possibile 2.  Se tutti i processi decidono 1, allora 1 sarà l’unica decisione

finale possibile

•  Termination: 1.  Weak: In assenza di fallimenti, garantisce che tutti i processi

arrivino prima o poi ad una decisione 2.  Strong: Garantisce che tutti i processi non fallimentari

arrivino prima o poi ad una decisione

Page 18: Consensus Concurrent problem

Gli algoritmi del Commit

•  Algoritmi bloccanti: Algoritmi che garantiscono la Weak termination ma non la Strong termination. Un unico fallimento può pregiudicare la corretta terminazione di ogni processo e potrebbero verificarsi condizioni di stallo.

•  Algoritmi non bloccanti: Algoritmi che garantiscono sia la Weak termination che la Strong termination. Solo i processi fallimentari possono non giungere alla corretta terminazione

Page 19: Consensus Concurrent problem

L’algoritmo del Commit a due fasi

•  Pro: semplice ed intuitivo

•  Contro: non garantisce la Strong termination

•  Possibili stati dei processi:

1 (ha deciso Commit)

0 (ha deciso Abort)

Uncertain Failed

Page 20: Consensus Concurrent problem

L’algoritmo del Commit a due fasi

Prima fase: Uno dei processi assume il ruolo di coordinatore, raccoglie le decisioni prese dal gruppo (0 o 1) e le inserisce in un vettore. Le decisioni non pervenute costituiscono un valore nullo nel vettore. •  Se tutte le decisioni hanno valore 1, allora il coordinatore decide

1; •  Se almeno una delle decisioni è nulla o 0, allora il coordinatore

decide 0.

Seconda fase: Il coordinatore invia la sua decisione a tutti gli altri processi, i quali la assumono come decisione finale

Page 21: Consensus Concurrent problem

L’algoritmo del Commit a due fasi 7.3. THE C O M M I T P R O B L E M 185

processes

1 . . . . . . . . "l

2

3

4

1 2 rounds

F i g u r e 7.4: Communication pattern in TwoPhaseCommit.

messages. Then no other process ever learns process l ' s initial value, so, because of the validity condition, no process can decide 1. On the other hand, no process can decide 0, since as far as any other process can tell, it might be that process 1 has already decided 1 just before failing, and the inconsistency would violate the agreement condition.

C o m p l e x i t y a n a l y s i s . TwoPhaseCommit takes only two rounds. Recall that Theorem 6.33 gives a lower bound of f + 1 on the number of rounds for stopping agreement. The time bound for TwoPhaseCommit does not contradict this lower bound, because TwoPhaseCommit satisfies only the weak termination condition. The communication complexity, as measured by the worst-case number of non- null messages that are sent in any execution, is 2 n - 2; in particular, this number of messages is sent in a failure-free execution.

7 . 3 .3 T h r e e - P h a s e C o m m i t

Now we describe the ThreePhaseCommit algorithm; this is an embellishment of the TwoPhaseCommit algorithm that guarantees strong termination.

The key is simply that process 1 does not decide 1 unless every process that has not yet failed is "ready" to decide 1. Making sure they are ready requires an extra round. We first describe and analyze the first three rounds

Page 22: Consensus Concurrent problem

Esempio: Fase 1

2 3

1

4 5

Page 23: Consensus Concurrent problem

Esempio: Fase 1

2 3

1

4 5

✔  

✗  ✔   ✔  

Page 24: Consensus Concurrent problem

Esempio: Fase 1

5 2 3

1

4

Page 25: Consensus Concurrent problem

Esempio: Fase 1

4 5

1   1   1   0  

v[i]  !=  null  &&  v[i]  ==  1  ?  

2 3

1

Page 26: Consensus Concurrent problem

Esempio: Fase 1

4 5

1   1   1   0  1

v[i]  !=  null  &&  v[i]  ==  1  ?  

2 3

Page 27: Consensus Concurrent problem

Esempio: Fase 2

1

4 5 2 3

Page 28: Consensus Concurrent problem

Esempio: Fase 2

2 3

1

4 5

Page 29: Consensus Concurrent problem

Terminazione

L’algoritmo a due fasi risolve il problema del Commit garantendo solamente la Weak condition.

Questo perché, nel caso in cui sia il processo 1 a fallire, non sarebbe garantito l’arrivo ad una decisione per gli altri processi. Un ulteriore fallimento di uno dei processi, inoltre, potrebbe portare a condizioni di stallo

1

Page 30: Consensus Concurrent problem

•  Pro: Introduce lo stato ready per evitare le ambiguità dell’algoritmo a due fasi. Introduce inoltre un protocollo di terminazione che garantisce la Strong termination.

•  Contro: complessità computazionale e di progettazione maggiore

•  Possibili stati dei processi:

1 (ha deciso Commit)

0 (ha deciso

Abort)

Ready Uncertain Failed

L’algoritmo del Commit a tre fasi

Page 31: Consensus Concurrent problem

L’algoritmo del Commit a tre fasi Prima fase: Uno dei processi assume il ruolo di coordinatore, raccoglie le decisioni prese dal gruppo (0 o 1) e le inserisce in un vettore. Le decisioni non pervenute costituiscono un valore nullo nel vettore. •  Se tutte le decisioni hanno valore 1, allora il coordinatore passa in stato

ready; •  Se almeno una delle decisioni è nulla o 0, allora il coordinatore decide 0.

Seconda fase: •  Se il coordinatore si trova in stato ready, quest’ultimo invita anche il resto del

gruppo a passare in stato ready. Al termine della comunicazione, il coordinatore decide 1.

•  Se il coordinatore ha deciso 0, allora invia la sua decisione a tutti gli altri processi, i quali la assumono come decisione finale

Terza fase: •  Se il coordinatore ha deciso 1, allora invia la sua decisione a tutti gli altri

processi, i quali la assumono come decisione finale

Page 32: Consensus Concurrent problem

L’algoritmo del Commit a tre fasi 7.3. THE C O M M I T P R O B L E M 187

. . . . . . . . . . . . . . . . . . . . . . .

2 ~ . .....

3

4

1 2 3

F i g u r e 7.5- Communication pattern in ThreePhaseCommit.

2. I f any process's state is in decO, then no process is in dec1, and no non- failed process is in ready.

3. I f any process's state is in dec1, then no process is in decO, and no non- failed process is in uncertain.

P r o o f . Straightforward. The most interesting part of the proof is the proof of the third condition. For this, we note that process 1 can only decide 1 at the end of round 2, after it has already broadcast ready messages. This means that process 1 knows at the end of round 2 that each other process has either received and processed the ready, thereby entering the ready state, or else has failed. (The synchrony of the model is important here.) [S]

Now we can prove that most of the conditions of interest hold after the first three rounds.

L e m m a 7.23 After three rounds of ThreePhaseCommit, the following are true:

1. The agreement condition holds.

2. The validity condition holds.

3. I f process 1 has not failed, then all non-failed processes have decided.

Page 33: Consensus Concurrent problem

Esempio: Fase 1

2 3

1

4 5

Page 34: Consensus Concurrent problem

Esempio: Fase 1

2 3

1

4 5

✔  

✔  ✔   ✔   ✔  

Page 35: Consensus Concurrent problem

Esempio: Fase 1

5 2 3

1

4

Page 36: Consensus Concurrent problem

Esempio: Fase 1

1   1   1   1   1  

v[i]  !=  null  &&  v[i]  ==  1  ?  

2 3

1

5 4

Page 37: Consensus Concurrent problem

Esempio: Fase 1

1

v[i]  !=  null  &&  v[i]  ==  1  ?  

2 3 5 4

1   1   1   1   1  

Page 38: Consensus Concurrent problem

Esempio: Fase 2

2 3 5 4

1

Page 39: Consensus Concurrent problem

Esempio: Fase 2

2 3 5 4

1

Page 40: Consensus Concurrent problem

Esempio: Fase 2

2 3 5 4

1

Page 41: Consensus Concurrent problem

Esempio: Fase 3

1

2 3 5 4

Page 42: Consensus Concurrent problem

Esempio: Fase 3

2 3 5 4

1

Page 43: Consensus Concurrent problem

Terminazione

I tre round dell’algoritmo a tre fasi non sono sufficienti a garantire la Strong termination.

Se il processo coordinatore non fallisce, allora tutti i processi non falliti giungeranno ad una decisione. Ma se il processo coordinatore fallisce, gli altri processi potrebbero essere lasciati in uno stato indefinito.

Per risolvere questo problema, I processi rimanenti devono eseguire un protocollo di terminazione al termine dei tre round

1

Page 44: Consensus Concurrent problem

Protocollo di terminazione dell’algoritmo a tre fasi

Quarto round: Si nomina un nuovo coordinatore, il quale raccoglie le decisioni prese dal gruppo (0 o 1) e le inserisce in un vettore. Le decisioni non pervenute costituiscono un valore nullo nel vettore. •  Se almeno una delle decisioni ha valore 1, allora il coordinatore decide 1; •  Se almeno una delle decisioni ha valore 0, allora il coordinatore decide 0; •  Se tutte le decisioni pervenute sono uncertain, allora il coordinatore decide 0; •  Se almeno una delle decisioni è ready ed il restante è uncertain, allora il

coordinatore passa in stato ready

Quinto round: •  Se il coordinatore si trova in fase ready, quest’ultimo invita anche il resto del

gruppo a passare in stato ready. Al termine della comunicazione, il coordinatore decide 1.

•  Se il coordinatore ha già deciso 0 o 1, allora invia la sua decisione a tutti gli altri processi, i quali la assumono come decisione finale

Sesto round: •  Se il coordinatore ha deciso 1, allora invia la sua decisione a tutti gli altri processi, i

quali la assumono come decisione finale

Page 45: Consensus Concurrent problem

Esempio: Round 4

3 4 5 2

1

Page 46: Consensus Concurrent problem

Esempio: Round 4

3 4 5

2 1

Page 47: Consensus Concurrent problem

Esempio: Round 4

3 4 5

2 1

Page 48: Consensus Concurrent problem

Esempio: Round 4

3 4 5

2 1 ?   r   ?   ?  

Page 49: Consensus Concurrent problem

Esempio: Round 4

3 4 5

2 1 ?   r   ?   ?  

Page 50: Consensus Concurrent problem

Esempio: Round 5

3 4 5

2 1

Page 51: Consensus Concurrent problem

Esempio: Round 5

3 4 5

2 1

Page 52: Consensus Concurrent problem

Esempio: Round 5

3 4 5

2 1

Page 53: Consensus Concurrent problem

Esempio: Round 6

3 4 5

2 1

Page 54: Consensus Concurrent problem

Esempio: Round 6

3 4 5

2 1

Page 55: Consensus Concurrent problem

L’algoritmo a tre fasi completo

Nel caso in cui anche il secondo coordinatore fallisca, i tre round del protocollo di terminazione sono ripetuti nominando coordinatore il terzo processo e così via.

L’algoritmo a tre fasi, comprensivo del protocollo di terminazione, viene definito completo e garantisce la Strong termination.

La condizione di terminazione forte è garantita dal fatto che, nonostante eventuali fallimenti dei coordinatori, gli altri processi hanno la possibilità di essere nominati coordinatori nei round successivi e di terminare correttamente.

1

Page 56: Consensus Concurrent problem

Complessità degli algoritmi del Commit

•  Algoritmo a due fasi (2PC): L’algoritmo richiede sempre e solo 2 round. In assenza di fallimenti, se n è il numero di processi, il massimo numero di messaggi scambiati è 2n-2

•  Algoritmo a tre fasi (3PC): Nel caso peggiore ovvero in cui ogni coordinatore fallisca, se n è il numero di processi, sarebbero necessari 3n round per completare l’algoritmo. Se si escludono dal protocollo di terminazione quei processi che sono già giunti ad una decisione, l’algoritmo termina in pochi round e con O(n) messaggi scambiati.