3/24/2011 1 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. Sistemi Distribuiti Corso di Laurea Magistrale in Informatica Indirizzo Reti Facoltà di Scienze Matematiche Fisiche e Natuali 3 e 4 sono mutuati dal corso di Sistemi P2P (3CFU). Docente: Prof. Alberto Negro 2 Contenuti • Parte A) Sistemi distribuiti: Fondamenti. ▫ Introduzione ai Sistemi Distribuiti 4 3 Contenuti Contenuti • Parte B) Sistemi P2P • Parte C) JXTA ▫ 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 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 1 3/24/2011 Testi Modalità di Esame 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. • Scritto + Orale (progetto JXTA facoltativo) 7 8 9 Introduzione ai Sistemi Distribuiti Sistema Distribuito • Una collezione di dispositivi autonomi che comunicano attraverso una rete di interconnessione 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 10 Caratteristiche dei SD I Sistemi distribuiti (SD) sono: • 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 Incredibilmente flessibili Incredibilmente efficienti Difficili da mettere a punto…... Hardware eterogeneo Asincronia Conoscenza locale limitata Fallimenti 11 12 2 3/24/2011 Gli Algoritmi Distribuiti: Gli Algoritmi Distribuiti: Algoritmo Distribuito: Usano il numero totale dei messaggi spediti come misura di complessità - Algoritmo per un Sistema Distribuito Sono difficili da progettare: Non c’è un modello accettato Message passing vs shared memory Timing Failure Usano anche il tempo come misura di complessità E’ difficile dimostrarne la correttezza 13 14 Motivazioni per il Calcolo Distribuito Perchè computazione distribuita? • Utilizzo parallelo di risorse distribuite – CPU – Memoria • Data Set difficilmente rilocabili vengono processati localmente • Fault-tolerance • Scalabilità • Modularità • Rapporto Prestazioni/Prezzo – attenzione alla manutenzione • 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 16 Modello dei SD 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 18 3 3/24/2011 Differenza con i Sistemi Paralleli UMA vs NUMA Models • 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 20 Tassonomia di Flynn Butterfly and Hypercube networks • 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 21 Terminologia Message Passing vs Shared memory • Shared Memory: La comunicazione fra i processori si basa su una zona di memoria condivisa • 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 ▫ 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 23 24 4 3/24/2011 SD Obiettivi (Sistema) SD Obiettivi (Sistema) • Diverse problematiche devono essere affrontate nella realizzazione di un SD: ▫ ▫ ▫ ▫ ▫ ▫ ▫ ▫ ▫ ▫ ▫ Comunicazione Gestione dei processi Naming Synchronizzazione Data Storage Consistency and Replication Fault-tolerance (nodi/link) Security Scalability API Trasparenza 25 SD Obiettivi (Algoritmi) 26 SD Obiettivi (Algoritmi) ▫ Modello di esecuzione ▫ Sincronizzazione Interleaving Partial order ▫ Algoritmi distribuiti su grafi dinamici Topologia del sistema Algoritmi su grafi (permettono la comunicazione, la sincronizzazione ecc.) Topologia dinamica Efficienza Logical time Leader Election Mutual exclusion Distributed deadlock detection and resolution Distributed termination detection Distributed garbage collection ▫ Timing 27 SD Obiettivi (Algoritmi) 28 SD Obiettivi (Algoritmi) • Group communication, multicast, and ordered message delivery • Data replication, consistency models, and caching ▫ Fast, scalable access ▫ coordinate replica updates ▫ optimize replica placement ▫ Group: processi che condividono un contesto e/o che collaborano ▫ joins, leaves, fails ▫ Invio concorrente dei messaggi: gestione della semantica dell’ordine di arrrivo • Reliable and fault-tolerant distributed systems • Monitoring distributed events and predicates ▫ Failure detectors: ▫ Predicate: condition on global system state ▫ Debugging 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 • Progettazione dei programmi distribuiti e dei tool di verifica • Debugging di programmi distribuiti 29 30 5 3/24/2011 SD Obiettivi (Algoritmi) SD Applicazioni • Load Balancing • • • • • • • • • ▫ Computation migration ▫ Data migration ▫ Distributed scheduling • Come comparare gli algoritmi ▫ Metriche 31 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 6