15.06.2013 Views

9 - Dipartimento di Informatica ed Applicazioni - Università degli ...

9 - Dipartimento di Informatica ed Applicazioni - Università degli ...

9 - Dipartimento di Informatica ed Applicazioni - Università degli ...

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!