1 Sistemi Distribuiti Corso di Laurea Magistrale in Informatica Indirizzo Reti Facoltà di Scienze Matematiche Fisiche e Natuali Docente: Prof. Alberto Negro Obiettivi Formativi 1. In questo corso tratteremo alcuni dei concetti fondamentali alla base dei moderni sistemi distribuiti. 2. Ci occuperemo dei fondamenti: problemi, protocolli, algoritmi e limiti insormontabili. 3. Vedremo, anche nei dettagli, le idee usate nella costruzione dei sistemi Peer-to-Peer (P2P). 4. Infine descriveremo una piattaforma per applicazioni P2P: JXTA. 3 e 4 sono mutuati dal corso di Sistemi P2P (3CFU). 2 3 Contenuti • Parte A) Sistemi distribuiti: Fondamenti. ▫ Introduzione ai Sistemi Distribuiti 4 Contenuti • Parte B) Sistemi P2P ▫ Introduzione alle Architetture Parallele L’Ipercubo, la Butterfly (CCC e Benes), i grafi di de Bruijn. ▫ Introduzione ai sistemi P2P ▫ Reti P2P non strutturate: Random Graphs, Small-Worlds and Scale-Free Networks ▫ Reti P2P strutturate ▫ Reti Uniformi e Reti Randomizzate ▫ Strategie di Routing ▫ Reti non Uniformi: Koorde 5 Contenuti • Parte C) JXTA ▫ ▫ ▫ ▫ ▫ Introduzione a JXTA Architettura di JXTA Le componenti e i protocolli di JXTA Comunicazione in JXTA: Pipe, BidiPipe e Socket Esempi di utilizzo e Applicazioni 6 Testi 1. R.Steinmetz, K. Wehrle, Peer to Peer Systems and Applications, LNCS. 3485, Springer Verlag, 2005 2. F. Thompson Leighton, Introduction to Parallel Algorithms and Architectures: Array Trees Hypercubes. 3. Ajay D. Kshemkalyani and Mukesh Singhal. Distributed Computing: Principles, Algorithms, and Systems, Cambridge University Press, 2008. ISBN-13 978-0-521-87634-6. 4. JXTA Programmers guide. 7 Modalità di Esame • Scritto + Orale (progetto JXTA facoltativo) 8 9 Introduzione ai Sistemi Distribuiti Gennaro Cordasco Dipartimento di Informatica - Università degli Studi di Salerno cordasco[@]dia.unisa.it cordasco+sd[@]gmail.com http://www.dia.unisa.it/~cordasco Laboratorio ISISLAB2 Sistema Distribuito • Una collezione di dispositivi autonomi che comunicano attraverso una rete di interconnessione 10 Caratteristiche dei SD • I dispositivi non hanno un clock comune • Non c’è una shared memory • I dispositivi lavorano in maniera autonoma e sono tipicamente eterogenei • … sono separati geograficamente 11 I Sistemi distribuiti (SD) sono: Incredibilmente flessibili Incredibilmente efficienti Difficili da mettere a punto…... Hardware eterogeneo Asincronia Conoscenza locale limitata Fallimenti 12 Gli Algoritmi Distribuiti: Algoritmo Distribuito: - Algoritmo per un Sistema Distribuito Sono difficili da progettare: Non c’è un modello accettato Message passing vs shared memory Timing Failure E’ difficile dimostrarne la correttezza 13 Gli Algoritmi Distribuiti: Usano il numero totale dei messaggi spediti come misura di complessità Usano anche il tempo come misura di complessità 14 Perchè computazione distribuita? • L’alternativa è un’architettura centralizzata – un singolo mainframe con terminali stupidi • Alcuni problemi: – se il mainframe non è disponibile, nessuna computazione è possibile – consumo di banda sulla rete per dati (anche per i dati locali ai terminali) – costo e mantenimento alto del mainframe – terminali stupidi con capacità di calcolo notevoli 15 Motivazioni per il Calcolo Distribuito • Utilizzo parallelo di risorse distribuite – CPU – Memoria • Data Set difficilmente rilocabili vengono processati localmente • Fault-tolerance • Scalabilità • Modularità • Rapporto Prestazioni/Prezzo – attenzione alla manutenzione 16 Le prestazioni di un Sistema Distribuito • La capacità di un sistema distribuito può facilmente eccedere quella di un calcolatore a singolo processore: • 5000 Pentium a 200 MIPS=1.000.000 MIPS • Una singola CPU così veloce dovrebbe eseguire una operazione ogni 10-12 secondi • In 10-12 secondi alla velocità della luce si coprono solo 0.3 millimetri • Una CPU in 0.3 millimetri crea problemi di surriscaldamento 17 Modello dei SD 18 Differenza con i Sistemi Paralleli • Array processors (processori strettamente accoppiati) • Multiprocessori (con accesso diretto alla shared memory UMA) ▫ Diversi tipi di interconnessione (bus, multistage switch, come ad esempio butterfly oppure shuffle exchange network) • Multicomputer parallel systems (processori omogenei con una propria memoria NUMA) ▫ Non c’è una memoria condivisa ▫ Utilizzano una specifica rete di interconnessione (ring, mesh, ipercubo) 19 UMA vs NUMA Models 20 Butterfly and Hypercube networks 21 Tassonomia di Flynn • SISD: Single Instruction Stream Single Data Stream ▫ Modello tradizionale • SIMD: Single Instruction Stream Multiple Data Stream ▫ Applicazioni scientifiche su dati di grande dimensione ▫ vector processors, systolic arrays, Pentium/SSE, DSP chips • MISD: Multiple Instruciton Stream Single Data Stream ▫ Meno usato • MIMD: Multiple Instruction Stream Multiple Data Stream ▫ Il modello più potente, ma anche il più complesso ▫ La maggior parte dei sistemi paralleli e distribuiti 22 Terminologia • Accoppiamento (Coupling): livello di interdipendenza fra i moduli di un SD (tightly/loosely) • Parallelismo o SpeedUp, T(1)/T(n): misura l’accelerazione ottenuta usando n moduli invece di 1. • Concorrenza: rapporto fra il tempo speso a fare computazione ed il tempo totale speso (include tempo di comunicazione, sincronizzazione) • Granularità di un programma 23 Message Passing vs Shared memory • Shared Memory: La comunicazione fra i processori si basa su una zona di memoria condivisa ▫ Tightly coupled multiprocessor ▫ Problema: gestione dei conflitti di accesso concorrente alla memoria • Message Passing: I computer comunicano attraverso lo scambio di messaggi asincrono ▫ Loosely coupled systems 24 SD Obiettivi (Sistema) • Diverse problematiche devono essere affrontate nella realizzazione di un SD: ▫ ▫ ▫ ▫ ▫ ▫ Comunicazione Gestione dei processi Naming Synchronizzazione Data Storage Consistency and Replication 25 SD Obiettivi (Sistema) ▫ ▫ ▫ ▫ ▫ Fault-tolerance (nodi/link) Security Scalability API Trasparenza 26 SD Obiettivi (Algoritmi) ▫ Modello di esecuzione Interleaving Partial order ▫ Algoritmi distribuiti su grafi dinamici Topologia del sistema Algoritmi su grafi (permettono la comunicazione, la sincronizzazione ecc.) Topologia dinamica Efficienza ▫ Timing 27 SD Obiettivi (Algoritmi) ▫ Sincronizzazione Logical time Leader Election Mutual exclusion Distributed deadlock detection and resolution Distributed termination detection Distributed garbage collection 28 SD Obiettivi (Algoritmi) • Group communication, multicast, and ordered message delivery ▫ Group: processi che condividono un contesto e/o che collaborano ▫ joins, leaves, fails ▫ Invio concorrente dei messaggi: gestione della semantica dell’ordine di arrrivo • Monitoring distributed events and predicates ▫ Predicate: condition on global system state ▫ Debugging • Progettazione dei programmi distribuiti e dei tool di verifica • Debugging di programmi distribuiti 29 SD Obiettivi (Algoritmi) • Data replication, consistency models, and caching ▫ Fast, scalable access ▫ coordinate replica updates ▫ optimize replica placement • Reliable and fault-tolerant distributed systems ▫ Failure detectors: Difficult to distinguish a "slow" process/message from a failed process/ never sent message algorithms that "suspect" a process as having failed and converge on a determination of its up/down status 30 SD Obiettivi (Algoritmi) • Load Balancing ▫ Computation migration ▫ Data migration ▫ Distributed scheduling • Come comparare gli algoritmi ▫ Metriche 31 SD Applicazioni • • • • • • • • • Mobile systems Sensor networks Ubiquitous and pervasive computing (domotica) Peer to Peer computing Publish and Subscribe content distribution Distributed agents Distributed data mining Grid Computing Security 32