TECN.PROG.SIST.INF. – Sistemi distribuiti
2015 - Roberta Gerboni
TECN.PROG.SIST.INF. – Sistemi distribuiti
Sistemi centralizzati e distribuiti
Le architetture dei sistemi informativi si sono sviluppate ed evolute nel corso degli
anni passando da:
schemi centralizzati
schemi distribuiti
rispondendo alle necessità di decentralizzazione e cooperazione delle moderne
organizzazioni.
Un sistema informatico è centralizzato quando i dati e le applicazioni risiedono
in un unico nodo elaborativo
Un sistema informatico è distribuito
quando si verifica almeno una delle due
condizioni:
• Elaborazione distribuita
• Base di dati distribuita
2
TECN.PROG.SIST.INF. – Sistemi distribuiti
Sistemi distribuiti
Sistema centralizzato
Sistema distribuito
Un sistema distribuito è costituito da:
• un insieme di applicazioni logicamente indipendenti
• una collezione di computer autonomi
che appaiono all’utente come un solo sistema coerente e che collaborano tra
loro attraverso un’infrastruttura di comunicazione hardware e software.
Utenti e applicazioni non devono notare la sostituzione, riparazione e aggiunta
di nuovi componenti.
3
TECN.PROG.SIST.INF. – Sistemi distribuiti
Tipi di Sistemi distribuiti
Sistemi di calcolo distribuiti
• Cluster
• Grid
Sistemi informativi
• Sistemi transazionali
• Integrazione di applicazioni aziendali
Sistemi pervasivi
• Sistemi domestici
• Sistemi per l’assistenza sanitaria
e sicurezza sul lavoro
• Reti di sensori
Un computer CLUSTER è un insieme di computer omogenei
connessi tramite una rete con lo scopo di distribuire una
elaborazione parallelizzabile tra computer componenti il
cluster.
La tecnologia GRID, a differenza del cluster, prevede la
interconnessione tra macchine anche eterogenee per
realizzare attività cooperative di calcolo.
Sistemi dedicati ad attività di elaborazione dei dati di tipo
gestionale, caratterizzati da più utenti che accedono
concorrentemente a dati condivisi mediante procedure
predefinite. Ogni transazione corrisponde a un insieme di
operazioni elementari, incapsulate fra due comandi di
inizio e fine della transazione.
C’è anche l’esigenza di far comunicare tra loro le diverse
applicazioni.
Sistemi in cui l’elaborazione dell’informazione è integrata
in modo trasparente negli oggetti di uso comune e nelle
attività quotidiane. Questi sistemi sono composti da
dispositivi eterogenei come reti di sensori, dispositivi RFID
(Radio Frequency Identification) e/o NFC (Near Field
Communication) in grado di connettersi in reti di grandi
dimensioni, che non richiedono la presenza di una
infrastruttura di rete cablata.
4
TECN.PROG.SIST.INF. – Sistemi distribuiti
Tipi di Sistemi distribuiti
Sistemi di calcolo distribuiti
• Cluster
• Grid
Cray XT4
Sistemi informativi
18.688 compute nodes each a
16-Core AMD Opteron 6200.
Capable 20 petaflops
Banca
• Sistemi transazionali
• Integrazione di applicazioni aziendali
Sistemi pervasivi
• Sistemi domestici
• Sistemi per l’assistenza sanitaria
e sicurezza sul lavoro
• Reti di sensori
5
TECN.PROG.SIST.INF. – Sistemi distribuiti
Sistemi distribuiti
Organizzazione di un sistema Distribuito
Per offrire
una visione unica del sistema che in realtà è
composto da computer e reti eterogenei
è necessaria
un’organizzazione a strati
Livello superiore: utenti e applicazioni
Livello intermedio: strato software
Livello basso:
sistema operativo
Il livello intermedio è spesso chiamato
middleware.
S.O
Hardware
S.O
Hardware
S.O
Hardware
Il middleware è un software di connessione che consiste di un insieme di servizi e/o di ambienti
di sviluppo di applicazioni distribuite che permettono a più entità (processi, oggetti ecc.),
residenti su uno o più elaboratori, di interagire attraverso una rete di interconnessione
indipendentemente dalle differenze dei protocolli di comunicazione, dalle architetture dei sistemi
locali, dai sistemi operativi ecc..
6
TECN.PROG.SIST.INF. – Sistemi distribuiti
Sistemi distribuiti
Il middleware offre delle tecnologie software sviluppate per facilitare i programmatori a realizzare
applicazioni per sistemi distribuiti che si presentano complessi proprio per l’eterogeneità dei sistemi
stessi.
Il middleware è il software che risiede al di sopra della rete ed al di sotto delle applicazioni software.
Permette e garantisce quindi l’interoperabilità delle applicazioni sui diversi sistemi operativi.
I software che implementano i servizi offerti dal middleware utilizzano le API messe a disposizione.
La presenza del middleware rende facilmente programmabili i sistemi distribuiti offrendo dei
paradigmi di interazione basati su chiamata di procedure remote (RPC) o sullo scambio di messaggi.
Funzionalità del middleware
7
TECN.PROG.SIST.INF. – Sistemi distribuiti
Sistemi distribuiti
Caratteristiche principali che un sistema distribuito deve avere:
• essere trasparente, cioè nascondere che le risorse sono distribuite
• consentire facilmente la connessione tra utenti e risorse
• essere aperto
• essere flessibile
• essere scalabile
Trasparente
Un sistema distribuito deve nascondere che i suoi processi e risorse sono fisicamente
distribuite:
• trasparenza di accesso: nascondere le differenze di rappresentazione dei dati e del modo
in cui gli utenti accedono alle risorse, siano esse locali o remote
• trasparenza di locazione: nascondere la locazione fisica di una risorsa e permettere di
accedervi anche senza conoscere la locazione (URL nasconde l’indirizzo IP)
• trasparenza di migrazione: permettere il continuo accesso a risorse che possono essere
spostate (trasparenza di rilocazione se avviene mentre una risorsa è in uso)
• trasparenza di replicazione: nascondere la duplicazione delle risorse (es. per migliorare le
prestazioni)
• trasparenza di concorrenza: nascondere agli utenti che competono per le medesime
risorse pur mantenendole in uno stato consistente
• trasparenza ai guasti: nascondere all’utente eventuali guasti di risorse
• trasparenza di scalabilità: espandere il sistema senza interrompere o modificare il
funzionamento.
8
TECN.PROG.SIST.INF. – Sistemi distribuiti
Sistemi distribuiti
Facilità di connessione
Un sistema distribuito deve rendere semplice l’accesso a risorse remote (stampanti condivise,
dati, file) per motivi economici e per agevolare la collaborazione e lo scambio di informazioni.
La facilità di connessione e condivisione fanno insorgere però anche problemi di sicurezza:
• Informazioni sensibili
• Tracciabilità delle comunicazione
Aperto
Un sistema distribuito si dice aperto se offre servizi secondo regole standard per descrivere la
sintassi e la semantica del servizio.
Le regole sono di solito specificate attraverso interfacce, che specificano i nomi delle funzioni
disponibili e la loro intestazione.
Flessibile
Un sistema distribuito deve essere flessibile, cioè deve rendere semplice:
• la configurazione del sistema
• l’aggiunta di nuove componenti
Scalabile
La scalabilità di un sistema si può misurare secondo 3 dimensioni:
• rispetto alla dimensione: posso aggiungere utenti e risorse
• geograficamente: utenti e risorse possono essere fisicamente molto distanti
• dal punto di vista amministrativo: facile da gestire anche in presenza di organizzazioni
amministrative indipendenti.
9
TECN.PROG.SIST.INF. – Sistemi distribuiti
Sistemi distribuiti
Vantaggi
• Costi ridotti: i sistemi con grandi capacità di calcolo sono molto costosi, mentre il
costo delle CPU e dell’infrastruttura di comunicazione si è ridotto notevolmente;
• Scalabilità: è più facile gestire la crescita del sistema (nodi o numero di utenti) in
modo incrementale;
• Distribuzione carico di lavoro: è possibile ripartire il carico di lavoro sulle varie
macchine in maniera più efficiente;
• Condivisione: è possibile condividere dati e risorse computazionali;
• Tolleranza ai guasti maggiore .
10
TECN.PROG.SIST.INF. – Sistemi distribuiti
Sistemi distribuiti
Svantaggi
“Un sistema distribuito è un sistema in cui il mio programma non funziona per colpa
di una macchina di cui non ho mai sentito parlare.” - Leslie Lamport.
• Complessità di realizzazione: hardware e software
• Latenza: la differenza tra l’invocazione locale e remota di un servizio è di 4-5 ordini di grandezza;
• Fallimenti parziali e concorrenza:
- una computazione locale può essere concorrente; una distribuita lo è sicuramente;
- una computazione locale fallisce soltanto in maniera completa, ma una distribuita può fallire
anche parzialmente;
- in una computazione locale, esiste un solo punto di controllo per l’allocazione delle risorse, la
sincronizzazione, la gestione dei malfunzionamenti ciò non è più vero in un sistema
distribuito.
• Gestibilità: cambia il modo con cui si accede alle risorse, perché dati e servizi sono acceduti
ignorando la loro locazione fisica (spazi di indirizzamento distinti)
• Sicurezza: più difficile da gentire in questi tipi di sistemi (si devono garantire: canali sicuri per le
comunicazioni tra utenti e processi e il controllo degli accessi verificando le autorizzazioni di
utenti e processi)
11
TECN.PROG.SIST.INF. – Sistemi distribuiti
Sistemi distribuiti
Esempio: Domain Name System (DNS)
Il DNS è un esempio di distribuzione
• Organizza lo spazio gerarchicamente attraverso un albero di domini
• Ogni dominio è diviso in zone non sovrapposte
• Dato un nome composto da parti diverse (che rappresentano le diverse zone) si
risolve navigando l’albero
• Nessun name server ha la mappa di tutti gli host su internet
• La mappa degli host è distribuita su tutti i name server
12
TECN.PROG.SIST.INF. – Sistemi distribuiti
Sistemi distribuiti
Modelli architetturali
Descrivono l’organizzazione del sistema distribuito nelle sue parti componenti, le relazioni tra
esse, la loro allocazione sui nodi del sistema di elaborazione e i modelli di cooperazione.
Es. di architetture:
• client-server:
2-tiers, 3-tiers, n-tiers;
• peer-to-peer
(richiede algoritmi per la localizzazione
e la gestione delle risorse)
• varianti:
proxy e cache;
server multipli;
codice mobile;
agenti mobili;
thin client.
Cache situate sui client e/o sul proxy
(condivisa dai client)
• service-oriented Architecture (SOA).
(Architettura orientata ai servizi realizzata dai Web Services)
web applets
a) le richieste dei clienti provocano il
download del codice di una applet
b) il cliente interagisce localmente con
l’applet
13
TECN.PROG.SIST.INF. – Sistemi distribuiti
Il modello client/server
Sistemi distribuiti
Un sistema distribuito può essere pensato come “clienti che richiedono servizi offerti da
servitori”.
In questo modello ci sono solo due tipi di processi: client e server:
• Un server è un processo che implementa un servizio
• Un client è un processo che richiede un servizio da un server inviando una richiesta
Sempre più spesso si assiste ad una integrazione di servizi di database con servizi di web, in cui
le pagine vengono costruite dinamicamente sulla base dei dati contenuti nel database.
In tutti questi casi il problema fondamentale
di una architettura client-server è che
la richiesta di un servizio da parte di un gran numero di client
si scontra con
il collo di bottiglia dell'accesso diretto ad un unico server,
con problemi di scalabilità.
Questo causa gravi problemi di manutenibilità dei servizi, in particolare per quanto riguarda la
sincronizzazione dei dati, e di inefficienza dell'uso delle risorse.
Tra i problemi più gravi quello che riguarda i database che non possono essere replicati e
sincronizzati facilmente, inoltre la loro replicazione è costosa e complessa.
Dalle problematiche esposte nasce l’idea di realizzare un modello client/server 3-tier.
14
TECN.PROG.SIST.INF. – Sistemi distribuiti
Il modello client/server 3-tier
Sistemi distribuiti
Un'applicazione Web, nella maggior parte dei
casi, si sviluppa su:
tre livelli logico-funzionali.
Si introduce il modello 3-tiers (o multi-tiers in
generale se si introducono server intermedi) per
poter separare logicamente le parti di
presentazione, elaborazione ed accesso ai dati.
che saranno eseguiti su processori diversi.
15
TECN.PROG.SIST.INF. – Sistemi distribuiti
Il modello client/server 3-tier
Parte client
• Livello di presentazione
rappresenta l'interfaccia
utente dell'applicazione e
si occupa di acquisire dati
e visualizzare risultati.
In pratica è l’ambiente in
cui opera il client.
Sistemi distribuiti
Parte server suddivisa in due livelli
• Livello intermedio (elaborazione)
si occupa della logica di analisi
delle richieste dei client per
ottimizzare l'accesso al terzo
livello e delle elaborazioni dei dati
tenendo conto delle regole per
cui i dati sono considerati
significativi e delle loro relazioni
consistenti.
• Livello accesso ai dati rappresenta l'insieme dei
servizi offerti da applicazioni
indipendenti dal Web, come
ad esempio un gestore di
database, un sistema di
gestione di posta, ecc.
Si limita a fornire i dati
dinamici che verranno usati
dalla logica implementata nel
middle-tier per eseguire le
operazioni richieste dai client.
16
TECN.PROG.SIST.INF. – Sistemi distribuiti
Sistemi distribuiti
Il modello client/server 3-tier
Avendo tre diversi livelli si può scindere:
• la logica elaborativa
• dai dati
Si replica la logica elaborativa, che è
molto meno soggetta a cambiamenti ed
evoluzione, e non soffre di problemi di
sincronizzazione.
Si centralizzano
o si distribuiscono
opportunamente i dati.
Le applicazioni sono residenti in un server
o in diversi server che avviano processi
eseguiti su processori diversi e che
rispondono ai numerosi client che inviano
le loro richieste.
In questo modo si può distribuire il carico di
elaborazione ed accedere in maniera efficiente i dati.
Esempio
Un sistema di internet banking
- il computer dell’utente, dotato di un browser per navigare in Internet, è il client
- un server web fornisce i servizi applicativi: estratti conto, invio di pagamenti, ecc.
- un mainframe fornisce i servizi di gestione dei dati
- i dati richiesti risiedono nel database dei clienti
17
TECN.PROG.SIST.INF. – Sistemi distribuiti
Sistemi distribuiti
Architettura N-tier o multi-tier
Il modello 3-tier può essere esteso ad un
modello multi-tier in cui sono presenti server
aggiuntivi.
In genere è usato quando le applicazioni
devono accedere e utilizzare dati di database
diversi o comunque si vogliono suddividere
ulteriormente i compiti dei vari strati.
Tra il server applicativo e i server database si
posiziona un server di integrazione che
raccoglie i dati distribuiti e li invia
all’applicazione come se provenissero da un
unico database.
In questo esempio il web server è responsabile
per la gestione del collegamento tra i browser
client e il server delle applicazioni.
Il vantaggio è che più server Web possono
connettersi a un singolo server delle
applicazioni, consentendo in tal modo la
gestione di più utenti simultaneamente.
18
TECN.PROG.SIST.INF. – Sistemi distribuiti
19
TECN.PROG.SIST.INF. – Sistemi distribuiti
Oracle Real Application Clusters
Oracle Real Application Clusters (RAC) supporta l'utilizzo trasparente di un singolo
database su un gruppo di server, fornendo caratteristiche di tolleranza agli errori,
da guasti all'hardware a interruzioni volontarie. Disponibile come opzione con
Oracle Database 11g, Oracle RAC è un componente chiave dell'architettura cloud
privata di Oracle.
Oracle RAC support up to 100 servers in a pool.
20