Introduzione al corso

Sistemi Distribuiti
Rocco Aversa
Tel. 0815010268
rocco aversa@unina2 it
rocco.aversa@unina2.it
Ricevimento:
Martedì 14:16
Giovedì 14:16
1
Libri di Testo
• Testo Principale
– A.S. Tanenbaum, M. van Steen, Distributed Systems
y
(2
( ed),
)
Prentice-Hall 2007
• Approfondimenti
Lucidi dalle lezioni e materiale vario
disponibili di volta in volta sul sito del corso:
http://193.206.100.156/~aversa/SistemiDis/
http://193.206.100.156/
aversa/SistemiDis/
2
1
Introduzione ai Sistemi Distribuiti
Motivazioni, definizioni e una prima
classificazione
l ifi i
delle
d ll architetture
hit tt
hw/sw
h /
3
Definizione di Sistema Distribuito
“Un sistema distribuito è una collezione
di computer indipendenti che appare
all’utente come un singolo sistema e
che consente a più processi di cooperare
per risolvere
i l
più
iù velocemente
l
t problemi
bl i
complessi”
complessi
4
2
Dai Sistemi centralizzati ai Sistemi
distribuiti
Prima degli anni ’80 i sistemi informatici avevano una
organizzazione centralizzata, cioè si basavano sulla
presenza di un unico grande centro di elaborazione
dati mainframe a cui si accedeva per mezzo di un
certo numero di terminali.
Passaggio graduale verso sistemi informatici distribuiti,
caratterizzati dalla presenza di molti calcolatori che
interagiscono fra di loro attraverso un sottosistema di
comunicazione (rete)
5
Sistemi distribuiti:motivazioni
• Economia: condivisione di risorse, riduzione dei costi,
accesso remoto alle risorse
• Tecnologia: i vincoli tecnologici sulla velocità dei
processori rende inevitabile il ricorso al parallelismo per
affrontare l’esigenza di maggiore potenza di calcolo
• Prestazioni: incremento del throughput e del tempo di
risposta (e.g. speed-up, scale-up)
• Disponibilità e integrità: migliore gestione dei guasti
hardware e software attraverso la replicazione delle risorse
e la distribuzione del controllo
•Flessibilità ed estendibilità: facilita la modularità del
software, la sua verifica e manutenzione.
6
3
Requisiti generali di un SD: Trasparenza (1)
• Un sistema distribuito dovrebbe nascondere come
i processi e le risorse sono fisicamente distribuite
su più computer
– Accesso
Accesso: nascondere le differenze nella
rappresentazione dei dati e nell’accesso alle
risorse
• Codifica little-endian o big-endian dei dati
• Diversa modalità di gestione dei file
– Ubicazione:
Ubicazione nascondere dove una risorsa è
collocata
• Utilizzare nomi che non dipendono dalla locazione
fisica (es. URL)
7
Requisiti generali di un SD: Trasparenza (2)
– Migrazione:
Migrazione nasconde l’eventuale spostamento di una
risorsa
• Richiede un meccanismo di localizzazione della risorsa
(naming)
– Rilocazione:
Rilocazione possibilità di rilocare una risorsa mentre è
in uso da parte di un utente
• Sistemi mobili
– Replicazione : nascondere che esistono più copie della
stessa risorsa o dello stesso processo
• Miglioramento della velocità di accesso e della disponibilità
(es. caches)
– Concorrenza:
Concorrenza gestione dell’accesso di più utenti alla
stessa risorsa condivisa
• Necessità di lasciare la risorsa in uno stato consistente
8
4
Requisiti generali di un SD: Trasparenza (3)
– Guasto:
Guasto un utente non si accorge che una
risorsa non funziona e che il sistema risolve il
malfunzionamento
• “Si sa di avere a che fare con un sistema distribuito
quando il crash di un computer di cui non avete mai
sentito parlare impedisce di portare a termine il
vostro lavoro” (Definizione di Lamport)
9
Requisiti funzionali di un SD: Uso di standard aperti
• Definizione di regole standard che descrivono la
sintassi e la semantica dei servizi offerti dal sistema
– Definizione delle funzioni disponibili, tipo dei
parametri,
t i valori
l i ritornati
it
ti e possibili
ibili eccezioni
i i
– Formato, contenuto e significato dei messaggi
scambiati
RICHIEDONO
INTERFACCE e PROTOCOLLI
– Una specifica deve essere completa (specificare
tutti gli aspetti dell’interfaccia) e neutrale (non
specificare dettagli dell’implementazione)
– I protocolli permettono la comunicazione fra un
processo che richiede una certa interfaccia e un
processo che la implementa
10
5
Interoperabilità e portabilità
• Interoperabilità
– Capacità di due implementazioni di un sistema
o componente da parte di produttori diversi di
coesistere e lavorare insieme basandosi sui
servizi offerti come specificato da uno standard
comune
• Portabilità
– Capacità di eseguire un’applicazione sviluppata
su un sistema distribuito A su un altro sistema
distribuito B che implementa le stesse
interfacce di A senza apportare modifiche
11
Un protocollo può avere molte API
Es., TCP/IP
• TCP/IP APIs includono le BSD sockets, Winsock, System
V streams
streams, …
• Il protocollo fornisce interoperabilità: I programmi usano
diverse API per scambiare informazioni
• Non occorre conoscere le API utilizzate dall’utente remoto
Application
Application
WinSock API
Berkeley Sockets API
TCP/IP Protocol: Reliable byte streams
6
API e Protocolli Standard sono
entrambi importanti
• Standard APIs/SDKs sono importanti
– S
Supportano
t
l portabilità
la
t bilità delle
d ll applicazioni
li i i
– Ma senza protocolli standard, l’interoperabilità è
difficile
• Protocolli Standard sono importanti
– Supportano l’interoperabilità inter-sito
– Supportano una infrastruttura condivisa
– Ma senza API/SDK, la portabilità delle applicazioni è
difficile (differenti piattaforme accedono ai protocolli in
modi diversi)
Requisiti non funzionali di un SD
• Prestazioni
– tempo di risposta;
– produttività (throughput);
– bilanciamento del carico (load balancing)
•
•
•
•
•
Scalabilità
Sicurezza
Affidabilità
Disponibilità
Qualità del servizio (QoS)
14
7
Scalabilità
• Dimensioni su cui misurare la scalabilità
– Numero di utenti e di risorse
– Distanza geografica di utenti e risorse
– Amministrazione del sistema (facilità di amministrazione anche
quando il sistema comprende più organizzazioni)
• Le difficoltà sono dovute alle limitate capacità dei server
che ospitano servizi centralizzati, alla presenza di algoritmi
centralizzati, a politiche di sicurezza e amministrazione
di
diverse
in
i domini
d i i differenti
diff
ti e alla
ll banda
b d dei
d i canali
li di
comunicazione
15
Tecniche per migliorare la scalabilità
– Nascondere la latenza di comunicazione
Evitare di attendere le risposte dei server
(comunicazione
comunicazione asincrona)
asincrona
Spostare parte delle operazioni dal server al client
(controllo delle form)
– Distribuzione del servizio
Scomporre una componente in parti più piccole che
vengono distribuite nel sistema (ad es. tra client e
server, domini del DNS)
– Replica
Per aumentare le prestazioni si possono replicare
componenti in un sistema distribuito. Una copia
“vicina” riduce i tempi di latenza (es. caching)
16
8
Tipi di Sistemi Distribuiti
– Sistemi di calcolo distribuiti ad alte prestazioni
• Sistemi di calcolo a cluster
• Grid Computing
– Sistemi informativi distribuiti
• Sistemi transazionali
• Applicazioni aziendali integrate
• Cloud Computing
– Sistemi distribuiti pervasivi
• Sistemi domestici
• Sistemi elettronici per l’assistenza sanitaria
• Reti di sensori
17
Cluster Computing Systems
•
Figure 1-6.
1 6 An example of a cluster
computing system.
18
9
Il concetto di Grid
• Analogia con la rete di distribuzione dell’energia
elettrica
– Accesso “on demand” a risorse di calcolo
– Accesso trasparente a data base distribuiti di
grandissime dimensioni
– Facilità e scalabilità nell’integrazione di nuove risorse
– La
L complessità
l ità dell’infrastruttura
d ll’i f t tt
è mascherata
h t
all’utilizzatore
19
Sistemi transazionali
•
Figure 1-10.
1 10 The role of a TP monitor in
distributed systems.
20
10
Integrazione di applicazioni
aziendali
Uno strato di middleware basato su standard per
integrare applicazioni aziendali
21
Cloud Computing
Cloud computing is a
style of computing in
which dynamically
scalable and often
virtualized resources
are provided as a
service over the
internet (Wikipedia)
22
11
Main Deployment Models
• Public Cloud: The cloud infrastructure is
made
d available
il bl to
t the
th generall public
bli or a large
l
industry group and is owned by an
organization selling cloud services.
• Private Cloud: The cloud infrastructure is
operated
p
solelyy for an organization.
g
It mayy be
managed by the organization or a third party
and may exist on premise or off premise.
23
Sistemi distribuiti pervasivi
Sono, in genere, composti da dispositivi con scarse
capacità di memoria e di elaborazione che sono in grado
di ottenere informazioni dall’ambiente in cui essi sono
inseriti, di adattare il loro funzionamento al contesto e di
condividerle con altri dispostivi. Caratteristiche
principali:
– Adattatività e reattività
– Comunicazione
– Possibile elaborazione locale
24
12
Sistemi domestici
25
Sistemi per l’assistenza sanitaria
a distanza
26
13
Reti di sensori
27
Reti di sensori
In questa organizzazione i dati possono elaborati
anche nei sensori
28
14