1
Fork 0
mirror of https://github.com/Steffo99/appunti-magistrali.git synced 2024-11-25 11:34:18 +00:00
appunti-steffo/9 - Algoritmi distribuiti/3 - Computazione distribuita/7 - Guasti/two steps.md

1 KiB

algoritmo di consenso con fallimenti su grafo completo, che estende one step.

Funzionamento

Il leader invia il suo messaggio iniziale ad alcuni nodi, e questi, se lo ricevono direttamente da esso, lo inoltrano a loro volta a tutti i loro vicini, che però non lo inoltreranno.

Comportamento

LEADER

All'impulso spontaneo, invia il suo messaggio:

spontaneously! {
	send!(0..MAX_FAULTS, Message {leader: true});
	state!(DONE);
}

Se lo riceve indietro, non fa niente:

on_receive! {
	_ => {},
}

SLEEPING

Se riceve il messaggio, lo inoltra a tutti i suoi vicini, poi passa allo stato DONE:

on_receive! {
	_ => {
		send!(!sender, Message {leader: false});
		state!(DONE);
	},
}

DONE

Non fa niente:

on_receive! {
	_ => {},
}

algoritmo corretto

==...==

costo computazionale distribuito

Comunicazione

==...==

Spazio

==...==

Tempo

==...==