Sistemi Distribuiti - Dipartimento di Informatica

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