1. Sistemi Distribuiti
Un sistema distribuito è un software eseguito su componenti eterogenee, concorrenti e appartenenti a diversi domini organizzativi/amministrativi
Le componenti comunicano tramite scambio di messaggi su una rete, senza un clock globale
- Caratteristiche:
- Concorrenza: Accesso simultaneo alle risorse
- Autonomia: Ogni componente ha hardware/software indipendenti
- 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
2. Modelli di Sistemi Distribuiti
- Modelli architetturali:
- Client-Server, Peer-to-Peer, SOA (Service-Oriented Architecture)
- Modelli fondamentali:
- Interazione: Comunicazione tra processi (sincrona, asincrona, parzialmente sincrona)
- Fallimenti: Classificazione dei guasti (crash, omissione, bizantini)
- Sicurezza: Protezione da attacchi (intercettazione, alterazione, fabbricazione)