1 Sistemi Distribuiti Corso di Laurea Magistrale in
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 (P 2 P). 4. Infine descriveremo una piattaforma per applicazioni P 2 P: JXTA. 3 e 4 sono mutuati dal corso di Sistemi P 2 P (3 CFU). 2
3
Contenuti • Parte A) Sistemi distribuiti: Fondamenti. ▫ Introduzione ai Sistemi Distribuiti 4
Contenuti • Parte B) Sistemi P 2 P ▫ Introduzione alle Architetture Parallele L’Ipercubo, la Butterfly (CCC e Benes), i grafi di de Bruijn. ▫ Introduzione ai sistemi P 2 P ▫ Reti P 2 P non strutturate: Random Graphs, Small-Worlds and Scale-Free Networks ▫ Reti P 2 P 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, Bidi. Pipe 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 ISISLAB 2
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 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 Speed. Up, 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
- Slides: 32