Sistema Distribuito
Un sistema distribuito è un sistema i cui componenti, localizzati in computer connessi in rete, comunicano e coordinano le loro azioni solo attraverso scambio di messaggi
- Caratteristiche:
- Concorrenza: Accesso simultaneo alle risorse
- Autonomia: Ogni componente ha hardware/software indipendenti
- Assenza di un clock globale: Sincronizzazione e interazione via scambio messaggi
- Guasti indipendenti: Un guasto in un nodo non influisce sugli altri
- Fattori di complessità:
- Eterogeneità: Differenze hardware/software
- Apertura: Interoperabilità tramite interfacce standard
- Sicurezza: Confidenzialità, integrità, disponibilità
- Trasparenza: L'utente percepisce il sistema come un'unica entità (trasparenza di accesso, locazione, migrazione, duplicazione, fallimenti, persistenza)
- Scalabilità: Gestione di utenti e risorse in crescita
- Tolleranza ai guasti: Gestione di fallimenti parziali
Modelli di Sistemi Distribuiti
Un modello descrive tutte e sole le caratteristiche essenziali di un sistema distribuito che è necessario considerare per specificare o analizzare i suoi aspetti strutturali e di funzionamento
Per la specifica, l’analisi e lo sviluppo di sistemi distribuiti servono:
- Modelli architetturali: Descrivono l’organizzazione del sistema distribuito nelle sue parti componenti, le relazioni tra esse e la loro allocazione sui nodi del sistema di elaborazione
- Client-Server, Peer-to-Peer, Service-Oriented Architecture
- Modelli fondamentali: Astrazione delle caratteristiche essenziali di un sistema, allo scopo di rendere esplicite le ipotesi rilevanti sul sistema e consentire di studiare comportamenti possibili o non possibili date le ipotesi
- Interazione: Comunicazione tra processi (sincrona, asincrona, parzialmente sincrona)
- Fallimenti: Classificazione dei guasti (crash, omissione, bizantini)
- Sicurezza: Protezione da attacchi (intercettazione, alterazione, fabbricazione)
Processi e Algoritmi Distribuiti
- Processo: Unità operativa autonoma con stato locale
- Algoritmo distribuito: Eseguito da più processi per raggiungere un obiettivo
- Complessità: Dipende da numero di nodi, messaggi, guasti
Sincrono vs Asincrono
- Sincrono: Limiti noti su tempi di esecuzione, ritardo messaggi, drift clock
- Vantaggio: Rilevamento guasti con timeout
- Svantaggio: Sistemi piccoli e controllati
- Asincrono: Nessun limite noto → problemi di consenso non sempre risolvibili
Modello dei Fallimenti
- Failure (fallimento): Scostamento da un comportamento considerato corretto o desiderabile
- Fault (guasto): Causa del failure
- Error: stato dopo l’attivazione del fault