ARCHITETTURE DISTRIBUITE e SERVIZI di RETE motivazioni

Transcript

ARCHITETTURE DISTRIBUITE e SERVIZI di RETE motivazioni
ARCHITETTURE DISTRIBUITE e
SERVIZI di RETE
Sistemi Distribuiti
MOTIVAZIONI
tecnologiche ed economiche
(Local Area Network LAN Wide Area Network WAN)
DEFINIZIONE
Insieme di sistemi distinti per località che
comunicano e cooperano per
consentire servizi coordinati e risultati congiunti
INFOS
motivazioni tradizionali
introducono la possibilità di
- accedere a risorse remote
- condividere risorse remote come locali
COMMS
SISTEMI di ENORMI DIMENSIONI e MOLTE
RISORSE
TRASPARENZA della ALLOCAZIONE
QUALITÀ dei SERVIZI (QoS)
garantire modalità e proprietà
DINAMICITÀ del SISTEMA
aggiungere risorse al sistema aperto
seri problemi teorici (COMPLESSITÀ)
-..
affidabilità
per tollerare guasti dependability
accessibilità e condivisione delle risorse
adeguamento alle richieste distribuite
domande distribuite (prenotazioni aeree)
eterogeneità degli accessi
Concorrenza: moltissime attività (processi) possono essere
in esecuzione
Nessun tempo globale: non è possibile una perfetta
sincronizzazione degli orologi di un sistema distribuito
uniformità in crescita e scalabilità
indipendenza dal numero dei nodi del sistema
Fallimenti indipendenti: molte cause di fallimento, crash di
macchine e possibili problemi di rete.
Una macchina isolata dalla rete potrebbe peraltro continuare
computazione ...
Architetture Distribuite e Servizi di Rete – Modelli C/S
apertura del sistema
capacità di evoluzione secondo necessità
1
Architetture Distribuite e Servizi di Rete – Modelli C/S
2
PROBLEMI della distribuzione
Progetto di un programma (applicazione)
eterogeneità
varietà di hardware, reti, protocolli, sistemi operativi,
linguaggi di programmazione, implementazioni fatte
da diversi programmatori
complessità intrinseca
sistemi più complessi da specificare e risolvere
sicurezza (security)
più difficile garantire integrità e correttezza
sbilanciamenti nell'uso delle risorse
necessità di sfruttare in modo giusto le risorse
capacità di esecuzione totale limitata
inferiore a quella di un mainframe equivalente
Applicazione
Problema
Architettura
Algoritmo
codifica
mapping
binding
Tecnologia
Linguaggio
di Alto Livello
Aree di interesse
• previsioni meteorologiche
• dinamica molecolare
• modelli biologici
• evoluzione di sistemi spaziali
• sistemi globali (Internet, Web, ...)
PROGRAMMAZIONE
Algoritmo ==> in un linguaggio di alto livello
(più linguaggi)
- calcolo scientifico ed ingegneristico
- progetto automatico VLSI
- operazioni database
- intelligenza artificiale
obiettivi a breve e lungo termine
- sistemi distribuiti ad amplissimo raggio
accesso ad informazioni globalmente distribuite
Architetture Distribuite e Servizi di Rete – Modelli C/S
Sistema Operativo
3
MAPPING
- decisioni di allocazione per l'architettura scelta
configurazione a risorse e località
BINDING di processi e oggetti
- decisione di aggancio di ogni entità del programma
sulle risorse del sistema
GESTIONE STATICA
il binding differito alla esecuzione ==> NECESSITÀ di
GESTIONE DINAMICA del BINDING e delle RISORSE
Architetture Distribuite e Servizi di Rete – Modelli C/S
4
Tipica architettura MIMD
Multiple Instruction Multiple Data (MIMD)
Ambiente di programmazione
Interfaccia grafica
Strumenti debugging
Compilatori
Strumenti di allocazione
Necessità di controllo della soluzione
Strumenti di ambiente
Nodo
processore collegato alla memoria privata
anche organizzata a livelli
Nodo
Linguaggio di programmazione
Linguaggio
Processore
Processore
MM
Controllo di Qualità di Servizio
Monitoraggio sistema
Bilanciamento del carico
Supporto al routing
Supporto run-time al parallelismo
Nodo
PP
MM
PP
Cache
Processore
Memoria
Processore
Architettura parallela
Insieme di nodi
Rete interconnessione
Rete
Rete didi
Interconnessione
Interconnessione
Nodo
Nodo
PP
MM
PP
MM
Nodo
PP
MM
Un ambiente di programmazione tende a ottenere
Reti di workstation
Calcolatori indipendenti connessi da una rete locale
(LAN)
trasparenza e indipendenza dalla architettura
(portabilità su nuove architetture)
astrazione
(nascondere complessità parallelismo)
corretta gestione delle risorse (statica e dinamica)
NON esistono ancora ambienti di programmazione
soddisfacenti e completamente trasparenti
LAN
In ogni caso, soluzione ==>
uso diretto di funzioni dinamiche, con visibilità della
architettura - tipo primitive di KERNEL
Rete di workstation
problemi di portabilità
Architetture Distribuite e Servizi di Rete – Modelli C/S
5
Architetture Distribuite e Servizi di Rete – Modelli C/S
6
ETEROGENEITÀ E APERTURA
LOCALITÀ DISTINTE
i più comuni sistemi aperti sono i
Sistemi Eterogenei
PROBLEMI intrinseci alla distribuzione
costituiti da
processori e interconnessioni
per la rete fissa
terminali diversissimi
per la rete fissa e mobile
creazione e gestione di risorse globali
sistemi di supporto (sistemi operativi) diversi
per workstation, per personal,
per dispositivi limitati (LAPtop, PDA, telefonini)
complessità intrinseca
sistemi più complessi da specificare e risolvere
sicurezza (security)
più difficile garantire integrità e correttezza
sbilanciamenti nell'uso delle risorse
necessità di sfruttare in modo giusto le risorse
applicazioni e servizi differenziati
forniti a clienti molto diversi
capacità di esecuzione totale limitata
inferiore a quella di un mainframe equivalente
utenti con competenze diversissime
progettisti, esperti, medi, scarsi di conoscenze
Legge di Grosh
migliore bilancio costo/performance
con un monoprocessore mainframe
(senza problemi di memoria e I/O)
proprietà di apertura va oltre
APERTURA di un SISTEMA distribuito
☺ capacità di adattamento alle condizioni di stato
successive alla messa in opera senza blocchi
necessità di identificare (monitor) e controllare
(gestione) lo stato del sistema
non esiste un sistema aperto in assoluto, ma solo
in relazione a una specificata esigenza
ovviamente con i limiti alla potenza di calcolo
- velocità della luce
- costi elevati aumentando l'integrazione
NOTA - la distribuzione delle risorse è
sempre più
un vincolo di tutte le architetture disponibili
un assunto necessario per le risorse più comuni
Se il sistema è aperto si devono potere cambiare
alcune parti o strategie durante la esecuzione
(senza dovere fermare il servizio e ripartire da zero
con una nuova esecuzione)
Architetture Distribuite e Servizi di Rete – Modelli C/S
7
Architetture Distribuite e Servizi di Rete – Modelli C/S
8
Sistemi di rete e Servizi
MODELLO CLIENTE/SERVITORE
Spesso i sistemi sono solo sistemi di rete in cui le
potenzialità non sono sfruttate
Il modello Client/Server mette in gioco due entità:
l’entità Client richiede il servizio
l’entità Server offre il servizio
Scenario di un servizio Web
Informazioni presentate in modo trasparente
ELABORAZIONE
FORM
INPUT UTENTE
Nodo C
OUTPUT
Processo
Client
elemento
...
richiesta servizio
...
< attesa risposta >
...
ricezione risposta
...
abcdef
VISIONE LOCALE
RETE
applicazioni esterne
applicazioni di supporto
richiesta
risposta
il modello Client/Server C/S risolve il problema del
coordinamento o sincronizzazione (quando e come
sincronizzare i processi comunicanti) definendo il
Server come un processo sempre in attesa di richieste
di servizio
Si semplifica in questo modo il protocollo di
comunicazione sottostante che non deve
occuparsi di attivare un processo alla ricezione di
un messaggio
HTTP
server
CGI
sistema locale
utente
TCP / IP
Processo
Server
...
< attesa richiesta >
ricezione rich. serv.
...
< servizio >
...
invio risposta
...
tipico caso di invocazione procedurale:
il cliente aspetta il completamento del servizio
attuato dal servitore
NODI REMOTI
HTTP
client
Nodo S
sistema remoto
TCP / IP
rete
DINAMICITÀ
Se cominciamo a replicare i dati e memorizzare le
informazioni su siti intermedi => evoluzione
Architetture Distribuite e Servizi di Rete – Modelli C/S
9
Architetture Distribuite e Servizi di Rete – Modelli C/S
10
MODELLO CLIENTE/SERVITORE
MODELLO CLIENTE/SERVITORE
È un modello di comunicazione asimmetrica, molti:1
Il Cliente designa esplicitamente il destinatario
Il Servitore non esprime il nome del processo con cui
desidera comunicare
Se mettiamo in gioco due processi:
potremmo anche avere schemi diversi
Nodo A
Processo
Client 1
Se il cliente non vuole bloccarsi in attesa
CICLO di richieste ad intervallo (polling)
che deve essere o esaudita subito
o restituire un insuccesso
Nodo S
Processo
Server
Questo modo carica il cliente della responsabilità
dell'ottenere le informazioni
modello pull
Nodo Z
Processo
Client N
Si potrebbe anche risolvere in modo diverso, dividendo
le responsabilità
il cliente segnala il proprio interesse, poi fa altro
è compito del server di inviare la informazione
se e quando disponibile
il Server deve accedere alle risorse del sistema
considerando i problemi di:
autenticazione utenti
autorizzazione all’accesso
integrità dei dati
privacy delle informazioni
e deve gestire richieste contemporanee da molti Client
(server concorrenti)
Questa interazione divide i compiti tra cliente e servitore
modello push (per il servitore)
che forza le informazioni rovesciando i ruoli
Maggiore complessità di progetto dei Server rispetto ai
Client.
Architetture Distribuite e Servizi di Rete – Modelli C/S
Se il cliente ha bisogno di una informazione la richiede
=> in genere aspetta fino a quando non è disponibile
(sincronizzazione con la risposta)
11
MOLTE MODALITÀ DIVERSE ED ETEROGENEITÀ
Architetture Distribuite e Servizi di Rete – Modelli C/S
12
MODELLO CLIENTE/SERVITORE
MODELLO DI STATO DEL SERVITORE
Due tipi principali di interazioni:
L’interazione tra un Client e un Server di due tipi
stateful, cioè si mantiene lo stato dell’interazione
e un messaggio e la operazione conseguente può
dipendere da quelli precedenti
stateless, non si tiene traccia dello stato, ogni
messaggio è completamente indipendente dagli
altri
Lo stato dell’interazione usualmente memorizzato nel
Server (che può essere stateless o stateful)
• interazione connection-oriented
si stabilisce un canale di comunicazione virtuale
prima di iniziare lo scambio dei dati (es.
connessione telefonica)
• interazione connectionless
non c’è connessione virtuale, ma semplice
scambio di messaggi isolati tra loro (es. il sistema
postale)
Un Server stateful garantisce efficienza
(dimensioni messaggi più contenute e migliore
velocità di risposta del Server)
Un Server stateless è più affidabile in presenza di
malfunzionamenti (soprattutto causati dalla rete)
Il Server stateful deve poter identificare il Client
Per esempio, si consideri le differenze tra un file server
stateless e stateful (NFS di SUN è stateless)
La scelta tra le due forme dipende dal tipo di
applicazione e anche da vincoli imposti dal livello di
comunicazione sottostante
Per esempio, in Internet il livello di trasporto prevede i
protocolli TCP e UDP
La scelta tra server stateless o stateful deve tenere in
conto anche dell’applicazione
Un’interazione stateless è possibile SOLO se il
protocollo applicativo è progettato con operazioni
idempotenti
• TCP con connessione, reliable (affidabile) e
preserva l’ordine di invio dei messaggi
maggiore Qualità del Servizio
• UDP senza connessione, non reliable e non
preserva ordine messaggi
Architetture Distribuite e Servizi di Rete – Modelli C/S
Operazioni idempotenti producono sempre lo stesso
risultato, per esempio, un Server fornisce sempre la
stessa risposta a un messaggio M indipendentemente
da altri messaggi (anche M) ricevuti dal Server stesso
13
Architetture Distribuite e Servizi di Rete – Modelli C/S
14
CONCORRENZA NEL SERVITORE
POSSIBILI SERVITORI
Lato Client
I Client sono programmi sequenziali, eventuali
invocazioni concorrenti supportate dal sistema
operativo multitasking
RIEPILOGO
Tipo di comunicazione
con connessione senza connessione
S iterativo
E
R concorrente
singolo
singolo
processo
V
processo
E
concorrente
RTipo di multi
Server
Lato Server
La concorrenza è cruciale per migliorare le prestazioni
di un Server
Un Server iterativo processa le richieste di servizio
una alla volta
Possibile basso utilizzo delle risorse, in quanto non
c’è sovrapposizione tra elaborazione ed I/O
concorrente
multi
processo
processo
Un Server concorrente può gestire molte richieste di
servizio concorrentemente, cioè una richiesta può
essere accettata anche prima del termine di quella (o
quelle) attualmente in corso di servizio
Migliori prestazioni ottenute da sovrapposizione
elaborazione ed I/O
Maggiore complessità progettuale
Si pensi ad un Web server che deve rispondere a
moltissime richieste contemporaneamente
Architetture Distribuite e Servizi di Rete – Modelli C/S
La scelta del tipo
di Server dipende
dalle caratteristiche
del servizio da fornire
Vari tipi di Server
dipende dal tipo di protocollo e
dalla tecnologia realizzativa della esecuzione
e della comunicazione tra cliente e servitore
servizio sequenziale vs concorrente
servizio con vs senza connessione
servizio con vs senza stato
Per esempio, in Unix è facile realizzare un Server
concorrente generando un processo nuovo (fork)
per ogni richiesta di servizio (server concorrente
multi processo)
15
Architetture Distribuite e Servizi di Rete – Modelli C/S
16
PROGETTO DI CLIENTI E SERVITORI
Modelli di SERVIZIO
Come si distribuisce la logica applicativa tra i Client e i
Server?
servizio sequenziale
il servitore considera le richieste una alla volta
ritardi nel servizio stesso ai clienti
servizio concorrente
il servitore serve più richieste insieme
maggiore complessità progettuale del server
NON è necessario il parallelismo nel server
In genere il server prevede un progetto complesso e il
client deve essere più snello
Fat Client vs. Thin Client
servizio senza connessione
(ad esempio usando UDP)
costo basso, ma si devono realizzare ordinamenti
e reliability
servizio con connessione
(ad esempio usando TCP)
costo superiore della realizzazione
Considerazioni di configurazione del sistema, di carico
sul server, di traffico di rete
Server
Presentation
(GUI)
Presentationlogic
logic
(GUI)
Application
Applicationlogic
logic
Database
Databaselogic
logic
servizio senza stato (stateless server)
il servitore considera le richieste e le dimentica
appena fornite
problemi nella gestione di richieste replicate
senza rieseguire il servizio
servizio con stato (stateful server)
il servitore tiene traccia dello stato di interazione dei
servizi con i clienti
maggiore complessità progettuale del server
NON facile decidere lo stato in concorrenza
Architetture Distribuite e Servizi di Rete – Modelli C/S
Thin Client
Client
17
Fat Client
Client
Server
Presentation
(GUI)
Presentationlogic
logic
(GUI)
Application
Applicationlogic
logic
Databaselogic
Databaselogic
Architetture Distribuite e Servizi di Rete – Modelli C/S
18
SISTEMI MULTI TIER
Un sistema C/S può essere anche decomposto in parti
(3-tier C/S), per distribuire il carico di lavoro di un
Server su diverse macchine
MODELLO astratto
interazione sincrona
Si possono anche avere molti nodi diveris che si
incaricano di svolgere funzioni molto diverse e sono
separate nel sistema per ragioni diverse
schemi più complessi
clienti / servitori multipli
- 1 solo servizio per ogni richiesta
(stampa di un file)
- 1 servizio da ogni possibile servitore
(aggiorna copie di un file)
Server
Server
Presentation logic (GUI)
Presentation logic (GUI)
Necessità di coordinamento tra i servitori
con Replicazione o Suddivisione
Application logic
Application logic
Database logic
Database logic
Socket, RPC, HTTP
asincrona / non bloccante
I servizi sono forniti da più servitori (molti:molti)
con diverse possibilità
di bilanciamento di carico
di limiti di esecuzione
di disponibilità e tolleranza ai guasti
di vicinanza geografica
Client
(default)
SQL
importanza di stabilire il numero di operazioni che
si vogliono ottenere
modello di comunicazione
• 1 sola stampa
• aggiornamento di tutte le copie
(e attesa del completamento di tutte le operazioni)
schema di base cliente servitore
I servizi sono forniti da un servitore che
risponde a diversi clienti (molti:1)
- i clienti conoscono il servitore
- il servitore rappresenta la astrazione dei servizi e
non conosce i possibili clienti
Architetture Distribuite e Servizi di Rete – Modelli C/S
(O ATTESA PARZIALE)
19
Architetture Distribuite e Servizi di Rete – Modelli C/S
20
SCHEMA CLIENTI E AGENTI MULTIPLI
SCHEMI A CLIENTI AGENTI/SERVITORI
MULTIPLI
I servizi sono forniti dal coordinamento di più servitori
che forniscono un servizio globale unico
modello two tier
CLIENTE
clienti
AGENTI / SERVITORI e RISORSE
servitori
agenti
gli agenti forniscono il servizio e possono:
- partizionare le capacità di servizio
- replicare le funzionalità di servizio
in modo trasparente al cliente
CLIENTE
AGENTI
cliente
risorse
entità
richiesta di servizio
AGENTI
anche paralleli e capaci di coordinarsi
SERVITORI
anche paralleli replicati e coordinati
PROTOCOLLI
di coordinamento, sincronizzazione, rilevazione e
tolleranza ai guasti
agenti
servizio coordinato
Mail
sistema B
Posta
Due livelli di coordinamento nell'accesso alle risorse
da parte dei clienti
modello three tier
MTA
UA
MTA
sistema A
MTA
MODELLI a LIVELLI MULTIPLI
per la divisione dei compiti
confinando il lavoro sul livello meno congestionato
schemi di comunicazione a multicast/broadcast
UA
sistema C
Architetture Distribuite e Servizi di Rete – Modelli C/S
21
Architetture Distribuite e Servizi di Rete – Modelli C/S
22
RIUSO dell'esistente e dei COMPONENTI
Framework, librerie di componenti
modello cliente/servitore
I modelli non prevedono stato della connessione per
il servitore
NESSUNO STATO nel SERVER (stateless)
LIBRERIE
Un insieme di librerie costituisce un set di funzioni
(interfaccia nota) che possono essere chiamate da un
livello che le usa
Concetto di STATO della interazione
STATO PERMANENTE della interazione
? mantenuto dal cliente o dal servitore
STATO SOFT nel SERVER
(mantenuto solo per un tempo predeterminato)
-
-
Applicazione
Servitore che tiene traccia dei clienti
servitore con stato
Servitore che tiene traccia della storia della
interazione con ogni cliente
servitore con stato partizionato: una
partizione per ogni sessione di interazione
Servitore che conosce i clienti
uso di una lista per la autorizzazione
Servitore che consente interazione tra i clienti
servitore con stato e interazione mutua tra i
clienti attraverso i servizi
Servitori coordinati con interazione tra i clienti
coordinamento dei servitori con stato
interazione mutua tra clienti e servitori
ADT
matematiche
Database
GUI
3D rendering
internet
Librerie (anche OO)
Ogni applicazione si deve uniformare a questa
struttura
In caso di più applicazioni, ogni applicazione deve
replicare la stessa organizzazione
• Giochi di simulazione distribuita (MOO)
• Prenotazione aerei
• Navigazione in Web
• mantenere stato su Web
e la consistenza delle copie replicate?
Architetture Distribuite e Servizi di Rete – Modelli C/S
internet
Main LOOP
Le librerie sono ad aggancio dinamico (DLL)
Dynamic Linked Libraries
non SONO SVILUPPATE insieme con i programmi
utilizzatori
23
Architetture Distribuite e Servizi di Rete – Modelli C/S
24
FRAMEWORK
MODELLO ad EVENTI
in contrapposizione ad un modello sincrono di richiesta
e di attesa della risposta
Un FRAMEWORK costituisce un modello di esecuzione
ed un ambiente di richiesta di funzionalità più integrato
tende:
• a non replicare la struttura implicita
• a rovesciare il controllo (per eventi di sistema)
vedi Windows struttura a loop di attesa di eventi
che vengono smistati ai richiedenti
si gestisce la possibilità di inviare messaggi su
necessità disaccoppiando gli interessati
• I consumatori eseguono le attività
• I produttori segnalano le necessità
• Il gestore degli eventi segnala l'occorrenza degli
eventi significativi agli interessati
meccanismi di supporto della cornice
Servizio di Notifica Eventi
Classi esistenti
3D rendering
produce quotazione
GUI
internet
LOOP
matematiche
logica specifica
SISTEMA gestore
dell'offerta degli eventi
BACKCALL
della applicazione
ADTs
CONSUMATORE
PRODUTTORE
gestione
eventi
PRODUTTORE
di sistema
Database
produce quotazione
Funzioni e servizi
CONSUMATORE
consuma offerta
push dell'evento alle entità interessate e registrate
Vedi la maggior parte dei sistemi a finestre
Sono possibili backcall o upcall (push del framework)
dal Framework alle applicazioni
eventi asincroni
Architetture Distribuite e Servizi di Rete – Modelli C/S
consuma offerta
25
Architetture Distribuite e Servizi di Rete – Modelli C/S
26
MODELLI a DELEGAZIONE
MODELLI a CONTENIMENTO
in contrapposizione ad un modello C/S
in contrapposizione ad un modello C/S
per ragioni di trasparenza
si lascia la possibilità di delegare una funzionalità ad
una diversa entità che opera al posto della principale
ad esempio, di svolgere una funzione per noi
entità PROXY, DELEGATE, AGENTI, ATTORI
un server lascia ad aspettare una risposta ad una
operazione una altra entità che lavora in modo push per
fornire la risposta al server stesso
Servizio di Delega e Notifica
si lasciano molte funzionalità come responsabilità ad
una entità responsabile (contenitore) che se ne
occupa, spesso introducendo politiche di default,
evitando che si verifichino errori ...
entità CONTENITORI, CONTAINER, ENGINE, ...
ad esempio attuando azioni necessarie
ad esempio introducendo nuove azioni
ad esempio consentendo politiche diverse senza che
il cliente (e a volte il servitore) se ne accorgano
invia richiesta, con delega a un proxy
Un servizio potrebbe essere integrato in un ambiente
(middleware) che si occupa di aspetti diversi (vedi
CORBA, framework a finestre, servlet, ecc.)
richiedente
A
C
SISTEMA che svolge
la operazione
CONTAINER
Richieste
PROXY
B
il proxy invia la risposta al richiedente
ad esempio usando eventi locali
Cliente 1
OPERAZIONI VARIE
Cliente 2
La notifica avviene usando eventi come nei
framework
che si interpongono tra utenti e basso livello e
gestiscono il sistema in tutti i suoi dettagli
Vedi la maggior parte dei sistemi a finestre
Architetture Distribuite e Servizi di Rete – Modelli C/S
OPERAZIONE
SEMPLIFICATA
Cliente i
Cliente i
Cliente i
27
Architetture Distribuite e Servizi di Rete – Modelli C/S
28
modelli preventivi/reattivi
PROCESSI
modelli ottimisti e pessimisti
si usa il termine processo per indicare una
entità dinamica che concentra capacità di esecuzione
Esempi
Programma: entità statica rappresentata da un file (su
disco) che specifica il codice e i dati su cui si deve
eseguire per produrre un risultato
il problema della interferenza/congestione
- ring previene la congestione con regole precise di
controllo di accesso
- CSMA/CD tenta l'accesso senza controllo e deve
tenere conto della interferenza possibile, con
opportune strategie
I primi sono approcci
I secondi sono approcci
Processo: entità dinamica che associa ad un
programma tutte le risorse necessarie alla esecuzione
(processore, disco, file, memoria, stack, heap,
comunicazione, ...)
pessimisti/preventivi
ottimisti/reattivi
Possiamo quindi avere molti processi che fanno
riferimento allo stesso programma, anche sulla stessa
macchina in esecuzione contemporaneamente
Naturalmente, in genere
i sistemi preventivi sono statici per l'aspetto
considerato
i sistemi reattivi sono dinamici
CONCORRENZA vs PARALLELISMO
Processi concorrenti (che usano la stesso processore)
Processi paralleli (che usano processori diversi)
modelli STATICI
modelli DINAMICI
concorrenza è uno dei modi per ottenere un buon uso
delle risorse: se un processo si ferma (ad esempio, un
processo cliente aspetta una risposta), il processore
può eseguire altri processi
VEDI ANCHE IL CASO DEI PROCESSI
Architetture Distribuite e Servizi di Rete – Modelli C/S
Coda dei processi pronti ad eseguire e
scheduling dei processi sul processore
29
Architetture Distribuite e Servizi di Rete – Modelli C/S
30
SOLUZIONE
Possibilità di creare entità più leggere
con limiti precisi di visibilità e barriere di
condivisione
PROCESSI
Processi differenziati
Processi leggeri
Thread 1
Stack Thread 2
Thread 3
Processo pesante
Stack /Heap
Processi leggeri
attività che condividono visibilità tra di loro e
che sono caratterizzata da uno stato limitato
overhead limitato
Dati
Dati
Thread 1
Codice
Codice
ad esempio in UNIX, i thread o
lightweight process
Thread 2
Thread 3
Quale contenitore unico si può considerare per la
visibilità dei thread?
In genere, un processo pesante
che contiene più processi leggeri
modello dei processi
processi pesanti/processi leggeri
Processo
IMPLEMENTATIVAMENTE
Tutti i sistemi vanno nel senso di offrire
granularità differenziate per ottenere
un servizio migliore e più adatto ai requisiti dell'utente
SPAZIO di indirizzamento
SPAZIO di esecuzione
insieme di codice, dati (statici e dinamici),
parte di supporto, cioè di interazione con il
sistema operativo (file system, shell, socket,
etc.) e per la comunicazione
Si useranno processi pesanti quando è il caso e
processi leggeri se si vuole avere un overhead più
limitato
Il processo pesante funziona anche da
contenitore di processi leggeri
un'aggregazione di parecchi componenti
Processo pesante ad esempio in UNIX
cambiamento di contesto operazione molto pesante
overhead
Architetture Distribuite e Servizi di Rete – Modelli C/S
31
In caso di mobilità, si deve considerare cosa muovere
e se siamo facilitati nel farlo
Architetture Distribuite e Servizi di Rete – Modelli C/S
32
Caso 1: Server sequenziale o iterativo
Caso 2: Server concorrente
più richieste alla volta
una richiesta alla volta (con connessione o meno)
I tempi di risposta al servizio aumentano ==>
servizi brevi
1a) server sequenziale senza connessione servizi
senza stato (che introduce ritardi) e non soggetti a
guasti
unica coda
C1
risposta sulla
2a) SERVER PARALLELO:
uso di processi multipli, un master server
generazione di processi interni per ogni servizio
massimo parallelismo per servizi non interferenti
Si deve garantire che il costo di generazione del
processo non ecceda il guadagno ottenuto
Processo
Server
Controllore
porta cliente
Cn
Azioni
#portaserver
1b) server sequenziale con connessione
servizi con requisiti di reliability
limitando lo stato (uso di TCP)
difficile realizzazione pratica
overhead delle azioni di controllo della connessione
C1
#portac1
unica coda iniziale
Soluzione con processi creati in precedenza
che consentano di essere velocemente smistati al
servizio necessario
numero prefissato di processi iniziali e altri
creati su necessità e mantenuti per un certo
intervallo
2b) Un unico server, che gestisce la concorrenza
servizi devono condividere lo stato
uso di asincronismi interni
Processo
Server
Controllore
risposta sulla
porta cliente
#portaserver
Cn
Azioni
unica connessione stabilita
C1
#portac1
#portaserver
Architetture Distribuite e Servizi di Rete – Modelli C/S
con connessione
più processi, generati dal server per i servizi
contemporanei
senza connessione
più processi ciascuno con una porta privata del
cliente
33
Architetture Distribuite e Servizi di Rete – Modelli C/S
34
2a) Server parallelo senza connessione
C1
Processo
Server
Controllore
Cn
#portaserver
#portan
Porte differenziate
C1
2b)
SERVER concorrente non parallelo
in caso di connessione e stato (limitati)
realizzato con un unico processo che produce effetti di
concorrenza
#porta1
l'unico processo master deve considerare tutte le
richieste ed servirle al meglio (mantenendo le
connessioni)
generazione
processo
#porta1
Azioni
Facciamo il caso di connessione (ma anche senza)
Ci
Cn
#portan
C1
Processi Client attivi
#porta1
richieste
iniziali
Processi Server
Cn
#portan
C1
connessione
2a) Server parallelo con connessione
#portaserver
Azioni
C1
Processo
Server
Controllore
Processo
Server
Controllore
Processo
Server
Controllore
Ci
connessione
Cn
Cn
Processi Client in attesa
Unico Processo Server
Processi Client attivi
C1
Azioni
Connessioni
Ci
Cn
Processi Client attivi
Processi Server
Necessità di rispondere in modo veloce alle richieste
successive e sollecitazioni
Un canale unico e un processo per ogni servizio
Architetture Distribuite e Servizi di Rete – Modelli C/S
35
Architetture Distribuite e Servizi di Rete – Modelli C/S
36
altri modelli di comunicazione
Tuple
pipeline, farm, etc.
Astrazione della memoria condivisa +
comunicazione
Lo spazio delle tuple è un insieme strutturato di
relazioni, intese come attributi e valori
Operazioni di scrittura e lettura concorrenti
Accesso in base al contenuto degli attributi
pattern di interconnessione concorrenti
publish-suscribe
Pipeline
Stage1
Stage2
Operazioni di In e Out
Su uno spazio di tuple si possono depositare / estrarre
informazioni di alto livello senza possibilità di causare
interferenze
Out inserisce una tupla nello spazio
In estrae una tupla, se esiste
attende nel caso la tupla non sia ancora presente
==> una tupla con alcuni attributi non specificati
Stage3
Insieme di entità che comunicano in modo ordinato:
uscita di uno stage è l'ingresso del successivo
Ogni stage lavora sui dati elaborati dal precedente
Possibilità di concorrenza nei servizi
di richieste diverse
Aumento del throughput (efficienza)
throughput
esempio: Una possibile relazione potrebbe essere:
messaggio (dachi, achi, corpo)
Lo spazio serve da contenitore per valori di tuple in
accordo al pattern specificato (ai tipi degli attributi, qui
stringhe ASCII)
Tuple possibili per lo spazio messaggio:
{Antonio, Giovanni, msg1}
{Giovanni, Antonio, msg1}
{Antonio, Giovanni, msg2} …
numero di servizi per unità di tempo
Farm
suddivisione del lavoro
Slave1
Master
SlaveI ...
SlaveN
Out:
In:
con attese diverse degli slave da parte del master
Architetture Distribuite e Servizi di Rete – Modelli C/S
37
messaggio (P, Q, testo1)
messaggio (?, Q, ?)
Architetture Distribuite e Servizi di Rete – Modelli C/S
38
altri modelli di comunicazione
SPAZI di TUPLE
tuple meccanismo generale
per la comunicazione e sincronizzazione
Linda (Gelertner)
realizzazione della memoria condivisa a confronto con
lo scambio di messaggi
Non ci sono limiti alle tuple che si possono depositare e
che possono rimanere nello spazio delle tuple senza
limiti di tempo o di memoria
Portano a comunicazione disaccoppiata
poco sincronizzata e compresente
In tempo
Un processo potrebbe lasciare tuple in un sistema
e solo molto dopo i consumatori potrebbero
arrivare a prelevare le tuple stesse
In conoscenza reciproca
i consumatori non devono conoscere in alcun
modo i processi produttori e non possono
interferire (una operazione estrae una tuple,
eventuali altre aspettano)
In qualità - QoS
Gli spazi delle tuple sono persistenti e tendono a
mantenere le tuple depositate senza limiti di
memoria (come requisiti) senza introdurre
interferenza tra processi
Spazi di tuple sono messi a disposizione per favorire
comunicazioni ben fatte di alto livello
Javaspaces, …
Architetture Distribuite e Servizi di Rete – Modelli C/S
39
Pari (peer-to-peer)
le entità in gioco sono tutte pari e possono prendere
l’iniziativa secondo necessità e senza ruoli predefiniti
(es. Napster)
Publish/Subscribe
Da una parte una serie di utenti (consumatori)
specificano il proprio interesse ad
alcuni eventi (subscribe)
Dall’altra, un gestore (produttore) registra
le loro richieste e notifica gli
eventi ai consumatori (es. mailing list)
Cliente 1
Cliente 2
Subscribe
LAN
Notifica
Subscribe
Subscribe
Notifica
Cliente 3
Servitore
di Notifica
Notifica
Architetture Distribuite e Servizi di Rete – Modelli C/S
40
MODELLO di interconnessione
modello di interconnessione
concetto di località (limiti alla comunicazione)
vs. globalità (nessun vincolo)
a connessione/ senza connessione
CONNESSIONE
le entità stabiliscono di preallocare le risorse per la
comunicazione (statico)
modelli globali
non impongono restrizioni alle interazioni
entità
risorse
statiche
dedicate
comunicazione
operazioni non scalabili
dipendenti dal diametro del sistema
SENZA CONNESSIONE
le entità comunicano utilizzando le risorse che sono
disponibili al momento della azione (dinamico)
modelli locali (RISTRETTI)
prevedono una limitazione alla interazione
entità
comunicazione
località
routing
dinamico
operazioni (forse) scalabili
poco dipendenti dal diametro del sistema
Alcuni modelli, detti a connessione (TCP), non
impegnano risorse intermedie
Vedremo questi comportamenti meglio più avanti...
verso la località, i domini, i vincoli
per la scalabilità
Architetture Distribuite e Servizi di Rete – Modelli C/S
41
Architetture Distribuite e Servizi di Rete – Modelli C/S
42
STATO DELL'ARTE
Anziché
usare kernel monolitici (vedi UNIX)
e che si accettano in blocco (o meno)
e che pesano sulle performance
STATO DELL'ARTE
esaminando i sistemi operativi
dal concentrato verso il distribuito
UNIX rappresenta un modello di conformità
per caratteristiche di accesso ai file
per possibilità di concorrenza
per possibilità di comunicazione
I sistemi operativi general-purpose tendono a fornire
soluzioni ispirate o analoghe. Si pensi a:
•
evoluzioni che fanno ancora i conti con le proprietà
di UNIX (vedi anche Linux)
•
Microsoft Windows NT che introduce processi e
controllo di accesso
rinforzato da
OPEN SOURCE e FREE SOFTWARE
UNIX rappresenta un limite
per caratteristiche di concorrenza
processi pesanti
I sistemi operativi evoluti preservano la compatibilità
con migliori prestazione per la gestione delle risorse
per i processi (leggeri) e per la distribuzione delle
risorse (processi e dati)
Le politiche sono realizzate al disopra in spazio utente
I microkernel non sono sviluppati solo
da ambienti tipo UNIX, ma anche come modello
per ambienti tipo Windows
in cui l'accento è
sulle interfacce grafiche,
sulla interazione visuale, etc.
In ogni caso, anche gli approcci proprietari devono
tenere e tengono in conto di questa evoluzione
Inoltre si cercano standard per la eterogeneità
•
Object-Oriented
CORBA
•
Linguaggio Java
Architetture Distribuite e Servizi di Rete – Modelli C/S
Uso di microkernel
realizzazioni minimali del supporto di un S.O.
le politiche specificate al disopra del kernel
a livello applicativo
a livello utente processi applicativi e di sistema
☺
apertura a nuove strategie (generalità)
costi superiori delle strategie realizzate
(rispetto a soluzione ad-hoc)
I microkernel contengono il supporto per i processi e
per le comunicazioni tra processi
43
Architetture Distribuite e Servizi di Rete – Modelli C/S
44
Approcci ad ambienti aperti
possibilità di avere un ambiente aperto per superare la
eterogeneità delle diverse piattaforme anche durante
la esecuzione senza fare ripartire il sistema
Il primo aspetto richiede un ambiente standard
ANSA, DCE, OSF, etc.
Il secondo aspetto richiede un ambiente interpretato
linguaggi script
tipo Shell, TCL/Tk, Perl, Python
Java legato allo scenario Web
Java si basa su un interprete e una macchina virtuale
che supporta e produce la esecuzione
Applet
e
Applicazioni Java
Estensione di Classi di Java
Classi Base
Java Virtual Machine
Interfaccia di portabilità
Adattatore
Browser
S.O.
Adattatore
Browser
S.O.
Adattatore
Browser
S.O.
Adattatore
Browser
S.O.
Hw
Hw
Hw
Hw
Interconnessione via Rete
Java consente una facile integrazione con le
informazioni Web attraverso applet e la facile
integrabilità
Inoltre, comincia ad avere strumenti per il supporto di
molte funzionalità
nuove versioni di Java
nuove proprietà e alcune incompatibilità
Architetture Distribuite e Servizi di Rete – Modelli C/S
45