Failure Detector
- Scopo: Rilevare i fallimenti dei nodi (crash) in un sistema distribuito
- Implementazione: Insieme di oggetti (local failure detector) che monitorano ogni processo
- Assunzioni:
- Fallimenti solo di tipo crash
- Canali di comunicazione affidabili
- Il fallimento di un processo non blocca gli altri
Tipi di Failure Detector
Semplice:
- Invio messaggio + attesa risposta con timeout
- Funziona solo in sistemi sincroni (tempi predicibili)
Inaffidabile:
- Restituisce due stati:
- Unsuspected: Il detector ha di recente avuto prova che il processo non è fallito
- Suspected: Il detector ha indicazioni sul fatto che il processo potrebbe essere fallito
- Adatto a sistemi asincroni (ritardi imprevedibili)
Affidabile:
- Restituisce:
- Unsuspected: Come nel caso inaffidabile, è solo un suggerimento
- Failed: Il detector determina con certezza che il processo è fallito
- Richiede sistemi sincroni
Proprietà
Completezza: Capacità di rilevare i fallimenti (evitare falsi negativi)
- Forte: Ogni processo crashato è prima o poi sospettato da ogni processo corretto
- Debole: Ogni processo crashato è sospettato da qualche processo corretto
Accuratezza: Capacità di non rilevare un fallimento in modo errato (evitare falsi positivi)
- Perpetua:
- Forte: Nessun processo corretto è mai sospettato
- Debole: Esiste almeno un processo corretto mai sospettato