9 - Dipartimento di Informatica ed Applicazioni - Università degli ...
9 - Dipartimento di Informatica ed Applicazioni - Università degli ...
9 - Dipartimento di Informatica ed Applicazioni - Università degli ...
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano<br />
Lezione 9<br />
Architetture dei sistemi<br />
<strong>di</strong>stribuiti (2)<br />
Vittorio Scarano<br />
Corso <strong>di</strong> Programmazione Distribuita (2003-2004)<br />
Laurea <strong>di</strong> I livello in <strong>Informatica</strong><br />
<strong>Università</strong> <strong>degli</strong> Stu<strong>di</strong> <strong>di</strong> Salerno<br />
Le opzioni offerte dalle reti<br />
Ricevere informazioni<br />
Permettere delle transazioni<br />
Affiliare: stabilire e mantenere gruppi<br />
3<br />
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano<br />
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano<br />
Struttura della lezione<br />
• Sistemi <strong>di</strong>stribuiti: ma perché?<br />
La architettura <strong>di</strong> un sistema <strong>di</strong>stribuito<br />
– layer logici<br />
– tier fisici<br />
Struttura a livelli: il middleware<br />
Il valore aggiunto <strong>di</strong> una rete <strong>di</strong> N utenti<br />
Legge <strong>di</strong> Sarnoff: il valo re aggiunto <strong>di</strong> una rete è:<br />
– la connettività potenziale offerta al singolo utente che cresce<br />
con il numero <strong>di</strong> offerte possibili<br />
– crescita lineare in N<br />
Legge <strong>di</strong> Metcalfe: il valo re aggiunto <strong>di</strong> una rete è:<br />
– il numero <strong>di</strong> transazioni potenziali che vengono permesse<br />
agli N utenti<br />
– quadratico in N<br />
2<br />
4
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano<br />
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano<br />
La legge <strong>di</strong> Sarnoff: Sarnoff:<br />
aste online<br />
Www.OnSale.com: prim a host per aste online<br />
Numero fissato <strong>di</strong> prodotti<br />
Numero variabile <strong>di</strong> utenti<br />
Totale del “Valore” ~ N<br />
www.OnSale.com<br />
La collaborazione su sistemi <strong>di</strong>stribuiti: la legge <strong>di</strong> Re<strong>ed</strong><br />
5<br />
7<br />
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano<br />
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano<br />
La legge <strong>di</strong> Metcalfe: Metcalfe:<br />
aste online<br />
Annunci messi a <strong>di</strong>sposizione dagli utenti<br />
– classifi<strong>ed</strong>s.yahoo.com<br />
Sia la offerta che la do manda <strong>di</strong>pendono dal numero <strong>di</strong><br />
utenti<br />
Valore ~ N 2<br />
Un esempio della legge <strong>di</strong> Re<strong>ed</strong><br />
Www.eBay.com: un mercato per aste online<br />
Ogni sottoinsieme <strong>di</strong> utenti può formare una asta<br />
Valore totale ~ 2 N<br />
Beanies<br />
www.eBay.com<br />
Pez<br />
Classifi<strong>ed</strong>s.yahoo.com<br />
6<br />
8
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano<br />
Le leggi <strong>di</strong> crescita dei sistemi <strong>di</strong>stribuiti<br />
Valore<br />
Esempi<br />
Connessione <strong>di</strong><br />
due reti con N e<br />
M utenti e<br />
relativo<br />
incremento <strong>di</strong><br />
valore<br />
Sarnoff<br />
Broadcast<br />
N<br />
OnSale<br />
N+M<br />
Una conseguenza<br />
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano<br />
N 2<br />
Metcalfe<br />
Network<br />
(N+M) 2 =<br />
N2 +M2 Email,<br />
Annunci<br />
+2NM<br />
2 N<br />
Re<strong>ed</strong> Community<br />
AOL Chat, eBay<br />
2N+M =<br />
2N +2M +<br />
(2N ·2M -(2N +2M ) )<br />
All’aumentare della <strong>di</strong>mensione, si entra in nuovi<br />
mercati con nuove possibilità e nuove richieste <strong>di</strong><br />
servizi per i sistemi <strong>di</strong>stribuiti<br />
r<br />
e<br />
o<br />
l<br />
V<br />
a<br />
Miglior<br />
contenuto<br />
N<br />
Regioni <strong>di</strong> valore dominante<br />
Migliori<br />
Transazioni<br />
N 2<br />
N<br />
Migliori<br />
facilities per gruppi<br />
2 N<br />
9<br />
11<br />
La combinazione delle leggi<br />
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano<br />
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano<br />
Valore Totale<br />
Valore aggiunto<br />
N<br />
Valore totale = a N + b N 2 + c 2 N<br />
Tipicamente a >> b >> c<br />
Struttura della lezione<br />
Sistemi <strong>di</strong>stribuiti: ma perché?<br />
La architettura <strong>di</strong> un sistema <strong>di</strong>stribuito<br />
– layer logici<br />
– tier fisici<br />
Struttura a livelli: il middleware<br />
a N + b N 2 + c 2 N<br />
a N + b N 2<br />
a N<br />
10<br />
12
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano<br />
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano<br />
La architettura <strong>di</strong> un sistema informativo<br />
La architettura <strong>di</strong> un Sistema Informativo:<br />
– descrive come componenti hardware e software vengono<br />
usati per rispondere ai requisiti organizzativi<br />
Architettura (standard IEEE 1471):<br />
– La organizzazione <strong>di</strong> un sistema rappresentato<br />
dai suoi componenti,<br />
dalle relazioni tra loro e l’ambiente,<br />
dai principi che guidano il proge tto e la evoluzione del sistema<br />
Alcuni commenti<br />
Rete<br />
Client/Server sono spesso ruoli <strong>di</strong>namici<br />
– all’interno dello stesso sistema, possono scambiarsi i ruoli<br />
Esempi:<br />
– una connessione telefonica/chat 1-to-1<br />
– concatenazione <strong>di</strong> sistemi client/server<br />
13<br />
15<br />
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano<br />
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano<br />
Una architettura <strong>di</strong> base<br />
Client<br />
– utilizzata <strong>di</strong>rettamente dall’utente, genera la richiesta<br />
Server<br />
– contiene le risorse da acc<strong>ed</strong>ere (dati/programmi)<br />
Rete<br />
– assicura la connessione<br />
Struttura della lezione<br />
Rete<br />
Sistemi <strong>di</strong>stribuiti: ma perché?<br />
La architettura <strong>di</strong> un sistema <strong>di</strong>stribuito<br />
– layer logici<br />
– tier fisici<br />
Struttura a livelli: il middleware<br />
14<br />
16
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano<br />
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano<br />
I livelli logici <strong>di</strong> una architettura: i layer<br />
Detti anche Application Layer<br />
Caratterizzati dagli aspetti funzionali rispetto alla<br />
localizzazione fisica<br />
– centrali per la progettazione e manutenzione<br />
Strati <strong>di</strong> software in cui si partizionano le applicazioni<br />
– logica <strong>di</strong> presentazione (la interfaccia utente)<br />
– logica <strong>di</strong> business (o applicativa) (funzionalità)<br />
– logica <strong>di</strong> accesso ai dati<br />
Configurazione single tier<strong>ed</strong> (mainframe mainframe)<br />
Logica <strong>di</strong><br />
accesso ai dati<br />
business<br />
presentazione<br />
17<br />
19<br />
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano<br />
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano<br />
I livelli hardware <strong>di</strong> una architettura: i tier<br />
I livelli software ( layer) sono realizzati e <strong>di</strong>stribuiti sui<br />
livelli hardware (tier)<br />
Configurazioni:<br />
– single tier<strong>ed</strong> (un livello <strong>di</strong> <strong>di</strong>stribuzione)<br />
configurazione su mainframe<br />
– two tier<strong>ed</strong> (due livelli <strong>di</strong> <strong>di</strong>stribuzione)<br />
la logica <strong>di</strong> business è <strong>di</strong>visa tra un client (es. PC) <strong>ed</strong> un server (es.<br />
un mainframe)<br />
la logica <strong>di</strong> presentazione è sul client, la logica <strong>di</strong> accesso ai dati è<br />
su server<br />
– three tier<strong>ed</strong> (tre livelli <strong>di</strong> <strong>di</strong>stribuzione)<br />
Configurazione two-tier two tier<br />
A seconda <strong>di</strong> come separiamo i layer sui 2 tier si<br />
ottengono <strong>di</strong>verse architetture.<br />
Una notazione:<br />
– per denotare servizi offerti <strong>ed</strong> acc<strong>ed</strong>uti via una interfaccia<br />
Server Client<br />
interfaccia connessione<br />
18<br />
20
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano<br />
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano<br />
Two-tier Two tier: : 1 - Presentazione <strong>di</strong>stribuita<br />
Accesso<br />
ai dati<br />
Applicazione<br />
Presentazione<br />
Presentazione<br />
rete<br />
Il layer <strong>di</strong> presentazione viene<br />
<strong>di</strong>stribuito sui due tier<br />
– il client si occupa solamente della<br />
visualizzazione finale<br />
Il traffico <strong>di</strong> rete risulta<br />
sostenuto:<br />
– le due componenti che<br />
implementano il layer <strong>di</strong><br />
presentazione necessitano <strong>di</strong> banda<br />
Alta flessibilità e facilità <strong>di</strong><br />
mo<strong>di</strong>fica<br />
21<br />
Two-tier Two tier: : 3 - Funzionalità <strong>di</strong>stribuita<br />
Accesso<br />
ai dati<br />
Applicazione<br />
Applicazione<br />
Presentazione<br />
rete<br />
Il client viene coinvolto nella<br />
logica <strong>di</strong> business<br />
– necessarie capacità computazionali<br />
Aumentano i problemi <strong>di</strong><br />
gestione e manutenzione del<br />
client<br />
– upgrade, recovery, etc.<br />
– sensibilità della logica <strong>di</strong> business<br />
ai malfunzionamenti <strong>di</strong> ret<br />
23<br />
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano<br />
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano<br />
Two-tier Two tier: : 2 - Presentazione remota<br />
Accesso<br />
ai dati<br />
Applicazione<br />
Presentazione<br />
rete<br />
Two-tier Two tier: : 4 - Gestione dati remota<br />
Accesso<br />
ai dati<br />
Applicazione<br />
Presentazione<br />
rete<br />
Maggiore carico sul client<br />
Minore richiesta <strong>di</strong> banda:<br />
– le informazioni trasmesse al client<br />
sono solo quelle specifiche della<br />
applicazione<br />
– la presentazione è a carico solo del<br />
client<br />
Moderata flessibilità e facilità <strong>di</strong><br />
mo<strong>di</strong>fica<br />
Il client risulta completamente in<br />
carico della logica <strong>di</strong> business<br />
Poco flessibile:<br />
– una mo<strong>di</strong>fica della applicazione<br />
necessita dell’upgrade della<br />
applicazione su tutti i client<br />
22<br />
24
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano<br />
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano<br />
Two-tier Two tier: : 5 - Base <strong>di</strong> dati <strong>di</strong>stribuita<br />
Accesso<br />
ai dati<br />
Accesso<br />
ai dati<br />
Applicazione<br />
Presentazione<br />
rete<br />
Three-tier Three tier: : … a “Thin “ Thin client” client<br />
Accesso<br />
ai dati<br />
Applicazione<br />
Presentazione<br />
Presentazione<br />
Presentazione<br />
rete<br />
rete<br />
Anche parte del layer <strong>di</strong> accesso<br />
ai dati risulta in carico al client<br />
Architettura fat client<br />
Traffico notevole sui dati<br />
Para<strong>di</strong>gma spesso “ imposto” da<br />
sistemi <strong>di</strong> sviluppo integrato<br />
Distribuzione <strong>di</strong> servizi ad un<br />
insieme aperto <strong>di</strong> utenti<br />
Facile gestione<br />
Notevole carico sul server del tier<br />
3<br />
Permette (insieme con altre<br />
configurazioni) la completa<br />
separazione fisica tra utenti e dati<br />
attraverso il tier 2<br />
– sicurezza implicita<br />
27<br />
– policy enforcement su tier 2<br />
25<br />
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano<br />
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano<br />
Three-tier Three tier: : Ampia scelta da “Fat “ Fat client” client”<br />
…<br />
Accesso<br />
ai dati<br />
Accesso<br />
ai dati<br />
Accesso<br />
ai dati<br />
Applicazione<br />
Presentazione<br />
rete<br />
rete<br />
Una visione finale: N-tier tier<br />
Supporto elevato richiesto dalla<br />
utenza impone una soluzione<br />
sbilanciata verso il client<br />
Onerosa gestione e manutenzione<br />
del client<br />
Presentazione Accesso<br />
ai dati<br />
26<br />
28
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano<br />
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano<br />
Struttura della lezione<br />
Sistemi <strong>di</strong>stribuiti: ma perché?<br />
La architettura <strong>di</strong> un sistema <strong>di</strong>stribuito<br />
– layer logici<br />
– tier fisici<br />
Struttura a livelli: il middleware<br />
Il middleware come servizio comune<br />
29<br />
31<br />
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano<br />
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano<br />
Gli strati <strong>di</strong> software<br />
La piattaforma<br />
– eterogenea<br />
– Es. Wintel, Intelx86/Linux,<br />
Sparc/Solaris, PowerPc/MaxOS<br />
Middleware<br />
– nasconde l’eterogeneità<br />
– offre un modello <strong>di</strong><br />
programmazione<br />
– offre servizi ad alto livello<br />
(buil<strong>di</strong>ng-blocks)<br />
Tipi <strong>di</strong> middleware<br />
Middleware generale<br />
applications &<br />
services<br />
middleware<br />
sistema<br />
operativo<br />
computer &<br />
network<br />
hardware<br />
piattaforma<br />
– strumenti <strong>di</strong> comunicazione, <strong>di</strong> sicurezza, in<strong>di</strong>ririzzamento,<br />
sincronizzazione, etc.<br />
Middleware orientato a specifici tipi <strong>di</strong> servizio<br />
– accesso a basi <strong>di</strong> dati<br />
ODBC, JDPC<br />
– gestione <strong>di</strong> transazioni<br />
Distribut<strong>ed</strong> Transaction Processing (X/Open)<br />
– etc. etc.<br />
30<br />
32
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano<br />
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano<br />
Modello basato su oggetti <strong>di</strong>stribuiti<br />
Basato sul modello orientato a oggetti (locale)<br />
Componenti:<br />
– oggetto (stato, comportamnto <strong>ed</strong> identità)<br />
creato come istanza <strong>di</strong> una classe<br />
– interfaccia<br />
servizi messi a <strong>di</strong>s posizione dall’oggetto<br />
– connessione tra oggetti<br />
sincrona/asincrona,<br />
pull/push<br />
Middleware basato su oggetti <strong>di</strong>stribuiti (2)<br />
Interme<strong>di</strong>azione per s cambio <strong>di</strong> messaggi (Message<br />
broker)<br />
– gestori <strong>di</strong> code <strong>di</strong> messaggio<br />
Altri servizi <strong>di</strong> supporto<br />
– gestione del ciclo <strong>di</strong> vita <strong>di</strong> un oggetto <strong>di</strong>stribuito<br />
– servizi <strong>di</strong> trasparenza<br />
fault, migrazione, eteroge neità, replica, etc.<br />
– servizi <strong>di</strong> sicurezza<br />
– servizi <strong>di</strong> monitoraggio, gestione e tuning<br />
Esempi:<br />
– CORBA, Microsoft .NET, Enterprise Java Beans<br />
33<br />
35<br />
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano<br />
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano<br />
Middleware basato su oggetti <strong>di</strong>stribuiti (1)<br />
Formalismi <strong>di</strong> definizione <strong>degli</strong> oggetti<br />
– Interface Definition Language (IDL)<br />
Protocolli <strong>di</strong> interoperabilità<br />
– trasformazione <strong>di</strong> oggetti in messaggi trasferibili sulla rete<br />
marshalling<br />
– e relativa trasformazione inversa (unmarshalling)<br />
Interme<strong>di</strong>azione tra oggetti ( object broker)<br />
– in<strong>di</strong>viduazione e localizzazione<br />
Gestione <strong>di</strong> transazioni<br />
– Atomicità, Consistenza, Isolamento, Durability (ACID)<br />
I limiti del middleware<br />
In generale, ci sono aspetti del sistema <strong>di</strong>stribuito che<br />
vanno trattati a livello application<br />
End-to-End argument (Saltzer, Re<strong>ed</strong>, Clarke)<br />
“Alcune funzioni legate alla comunicazione possono essere<br />
implementate completamente <strong>ed</strong> affidabilmente solo con la<br />
conoscenza e l’aiuto delle applicazioni che si trovano agli<br />
end-point del sistema <strong>di</strong> comunicazione”<br />
La conseguenza:<br />
– fornire le funzioni da parte del sistema <strong>di</strong> comunicazione<br />
non è buona pratica introdurre comp letamente la funzione nello<br />
strato <strong>di</strong> comunicazione<br />
anche se può essere parzialment e implementata per ragioni <strong>di</strong><br />
efficienza<br />
34<br />
36
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano<br />
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano<br />
L’End-to L’End to-end end negli oggetti <strong>di</strong>stribuiti<br />
La <strong>di</strong>fferenza tra<br />
– oggetti nello stesso processo<br />
– oggetti in processi <strong>di</strong>fferenti<br />
Il principio dell’End-to-End<br />
viene espanso (e confermato)<br />
dagli ambienti ad oggetti<br />
<strong>di</strong>stribuiti<br />
– una “nota” <strong>di</strong> Waldo (<strong>ed</strong> altri)<br />
nel campo del calcolo<br />
<strong>di</strong>stribuito<br />
che v<strong>ed</strong>remo in seguito a<br />
proposito <strong>di</strong> RMI<br />
I possibili problemi<br />
oggetto<br />
processo<br />
1. il file originariamente scritto correttamente viene letto<br />
in maniera errata da A<br />
2. il software del file system, il programma <strong>di</strong> FT, o il<br />
Vi.ttorio<br />
sistema <strong>di</strong> comunicazione può fare un errore nel<br />
copiare dati sul buffer (sia su A che su B)<br />
(2003-2004).<br />
3. il processore o la memoria possono avere un errore<br />
(transiente) sia su A che su B<br />
Distribuita<br />
4. il sistema <strong>di</strong> comunicazione può perdere bit/pacchetti<br />
5. gli host possono andare in crash Programmazione Scarano<br />
37<br />
39<br />
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano<br />
Un esempio: file-transfer file transfer da A verso B<br />
I passi coinvolti:<br />
– A: il programma <strong>di</strong> FT usa il file system per leggere il file<br />
– A: il programma <strong>di</strong> FT chi<strong>ed</strong>e al sistema <strong>di</strong> comunicazione <strong>di</strong><br />
trasmettere il file, <strong>di</strong>videndolo in pacchetti<br />
– La rete muove i pacchetti da A a B<br />
– B: il sistema <strong>di</strong> comunicazione rimuove i pacchetti e li passa<br />
al programma <strong>di</strong> file transfer<br />
– B: il programma <strong>di</strong> FT scrive i dati ricevuti sul proprio file<br />
system<br />
Le possibili contromisure<br />
Rinforzare tutti i passi<br />
– il passo 2 equivale a scrivere programmi corretti<br />
riconducibile al problema della fe rmata della Macchina <strong>di</strong> Turing<br />
Rendere bassa la probabilità <strong>di</strong> errore (in ogni passo) e<br />
reiterare (forza bruta)<br />
–costoso<br />
“End-to-End check and retry”<br />
–checksumcalcolata dalle applicazioni<br />
– eventuale retry<br />
38<br />
40
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano<br />
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano<br />
Un esempio reale all’ MIT<br />
Reti locali connesse da gateway<br />
– che usavano checksum sulla trasmissione<br />
I programmatori assumevano trasmissioni affidabili<br />
– ma i dati non erano protetti durante la memorizzazione<br />
temporanea nei gateway<br />
Un errore <strong>di</strong> copia da un input buffer ad un output<br />
buffer in un gateway:<br />
– relativamente poco frequente: 1 byte su 1 milione <strong>di</strong> byte<br />
– ha corrotto <strong>di</strong>versi file nell’intero sistema<br />
– richi<strong>ed</strong>endo un check manuale (end-to-end !)<br />
Altre linee-guida linee guida simili…<br />
Architetture RISC<br />
– ridurre le istruzioni fornite dall’hardware e spostarne la<br />
“responsabilità” verso gli strati superiori<br />
Il successo <strong>di</strong> Internet (TCP/IP)<br />
– fosse stato progettato per circuiti virtuali (come lo erano<br />
SNA e TYMNET, altre reti <strong>degli</strong> anni 80)<br />
– non avrebbe potuto supportare<br />
i protocolli request -response (tipo HTTP..!)<br />
i milioni <strong>di</strong> Internet Service Providers.<br />
41<br />
43<br />
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano<br />
Una linea-guida linea guida .. ma con “buon “ buon senso”<br />
E’ semplicistico affermare che gli strati bassi della rete<br />
non devono avere alcun ruolo nella affidabilità<br />
– sono in grado <strong>di</strong> migliorare notevolmente la efficienza<br />
Nel caso del File Transfer<br />
– limitano le ritrasmissioni richieste dagli end-points<br />
Comunque non realizzano la pe rfetta affidabilità <strong>di</strong> un<br />
sistema <strong>di</strong>stribuito<br />
42