INFORMAZIONI SU

Linguaggi e Sistemi Distribuiti

Programma dell'insegnamento di Linguaggi e Sistemi Distribuiti - Corso di laurea magistrale in Informatica (2012/13)

Docente

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. Modelli di sistemi. Architetture stratificate, client-server, peer-to-peer. Middleware.
- Meccanismi per comunicazione diretta: socket, MPI, RPC, RMI.
- Meccanismi per comunicazione indiretta: comunicazione di gruppo, publish-subscribe, code di messaggi. AMQP.
- Linguaggi specifici per i sistemi distribuiti: Erlang, Scala
- Sistemi di oggetti distribuiti. Oggetti persistenti e transitori. Componenti distribuiti. JavaBeans.
- Web Services. SOAP. Linguaggi per coreografie.
- 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.
- File system distribuiti. Architetture. NFS.
- Naming. Semplice, strutturato, con attributi. X.500 e LDAP.
- Tempo e stato globale. Orologi fisici, algoritmi di sincronizzazione, NTP. Orologi logici. Stato globale, multicast totalmente ordinato. Comunicazione causale.
- Coordinamento. Mutua esclusione distribuita. Algoritmi di elezione. Coordinamento in comunicazioni di gruppo. Problema del consenso. Problema dei Generali Bizantini.
- Transazioni distribuite. Lock distribuiti. Sincronia virtuale. Ordinamento dei messaggi. Distributed Commit (2PC, 3PC). Deadlock distribuito.
- Replicazione. Modelli di Consistenza dei dati. Consistenza causale, per eventi. Gestione delle replica. Protocolli pull vs. push. Protocolli di consistenza.
- Fault tolerance. Modelli di fallimento, ridondanza, resilienza, accordo in sistemi fallaci. Failure Detection. JGroups. Strategie di recovery, reliable storage, checkpointing, message logging.

 

Bibliografia

- G. Coulouris, J. Dollimore, T. Kindberg, G. Blair, "Distributed systems: concepts and design", 5 ed. Pearson, 2012.
- In alternativa: A. Tanenbaum, M. Van Steen, "Sistemi distribuiti. Principi e paradigmi", Pearson, 2007.
- Corso di Erlang/OTP: http://www.erlang.org/course/course.html
- Appunti dalle lezioni

 

Modalità d'esame

Approfondimento (anche sperimentale) su un argomento del corso.