(For the original version, also in English, see the official page on the Faculty website)
Docenti
Prof. Marino Miculan
Crediti
9 CFU
Finalità
Scopo del corso è fornire allo studente i fondamenti e gli strumenti per la progettazione e implementazione dei sistemi distribuiti, sia client-server sia peer-to-peer. A questo scopo, nel corso verranno discusse le principali problematiche dei sistemi distribuiti, come il rilevamento dei fallimenti, del deadlock, il raggiungimento del consenso; per ognuna di queste, si studieranno adeguate soluzioni algoritmiche e tecniche. Verranno anche descritte le principali primitive di comunicazione di rete (come socket, RPC, scambio messaggi), e vengono presentati ed utilizzati linguaggi specificatamente sviluppati per l’implementazione dei sistemi distribuiti (come Erlang, Scala e Globe).
Programma
- Introduzione ai sistemi distribuiti. Problematiche, motivazioni, esempi. [1, Cap. 1]
- Modelli di sistemi. Modelli fisici, architetturali, fondamentali. Architetture stratificate, client-server, peer-to-peer. Middleware. [1, Cap. 2]
- Meccanismi per comunicazione diretta: socket, MPI, RPC, RMI. [1, Cap. 4, 5]
- Meccanismi per comunicazione indiretta: comunicazione di gruppo, publish-subscribe, code di messaggi. AMQP. [1, Cap. 6]
- Web Services. SOAP. Linguaggi per coreografie. [1, Cap. 9]
- Sistemi di oggetti distribuiti. Oggetti persistenti e transitori. Componenti distribuiti. JavaBeans. [1, Cap. 8]
- Linguaggi specifici per i sistemi distribuiti: Erlang, Scala
- Sistemi peer-to-peer. Replicazione negli overlay non strutturati con random walk: analisi del caso uniforme, proporzionale e square-root. Overlay di instradamento. Tabelle hash distribuite. Lookup semplice e scalabile. Pastry, Tapestry, Kademlia. Peer e ultrapeer: Gnutella, Skype. [1, Cap. 10]
- File system distribuiti. Architetture. NFS. [1, Cap. 12]
- Naming. Semplice, strutturato, con attributi. X.500 e LDAP. [1, Cap. 13]
- Tempo e stato globale. Orologi fisici, algoritmi di sincronizzazione, NTP. Orologi logici. Stato globale, multicast totalmente ordinato. Comunicazione causale. [1, Cap. 14]
- Coordinamento. Mutua esclusione distribuita. Algoritmi di elezione. Coordinamento in comunicazioni di gruppo. Problema del consenso. Problema dei Generali Bizantini. [1, Cap. 15]
- Transazioni distribuite. Lock distribuiti. Sincronia virtuale. Ordinamento dei messaggi. Distributed Commit (2PC, 3PC). Deadlock distribuito. [1, Cap. 16, 17]
- Replicazione. Modelli di consistenza dei dati. Servizi fault tolerant. Consistenza causale, per eventi. Gestione delle replica: replicazione passiva vs. attiva. Sistemi ad alta disponibilità. Architettura gossip. Transazioni con dati replicati. Algoritmo di Gifford. [1, Cap. 18]
Bibliografia
- G. Coulouris, J. Dollimore, T. Kindberg, G. Blair, “Distributed systems: concepts and design”, 5 ed., International edition, Pearson, 2012.
- In alternativa al precedente: A. Tanenbaum, M. Van Steen, “Sistemi distribuiti. Principi e paradigmi”, Pearson, 2007.
- J. Armstrong, “Programming Erlang: Software for a Concurrent World”, The Pragmatic Programmers, 2007. ISBN: 978-1-93435-600-5
- Minicorso di Erlang/OTP
- Appunti dalle lezioni
Modalità d’esame
Progetto, da svolgere in gruppi di al massimo 2 persone, su un argomento del corso.
In generale l’argomento dell’esame può evolvere in un argomento di tesi magistrale.







Attenzione: la lezione del 27 febbraio 2013 ore 10:30 è sospesa causa partecipazione al Collegio Docenti del Dottorato in Informatica. Mi scuso per lo scarsissimo preavviso!
La lezione del 22 aprile 2013 ore 13:30 è sospesa causa partecipazione al Consiglio Direttivo del CINI a Roma.