Applicazioni Distribuite
Design di Applicazioni Distribuite
In COMET
Introduzione
Applicazioni Distribuite
Eseguono su nodi Geograficamente
Distribuiti connessi tramite
Reti locali
Reti geografiche
Introduzione
In COMET
Applicazione Distribuita strutturata in
Sottosistemi Distribuiti
Ogni Sottosistema corrisponde ad un nodo
logico
Sottosistema progettato come “componente
configurabile”
Ogni componente è definito come collezione
di Task concorrenti ognuno eseguito su un
nodo logico
Ogni componente ha un’ interfaccia ben definita
Interfaccia di comunicazione orientata ai
messaggi
Cosa vedremo…
Progettazione delle componenti di
Sottosistema in COMET
Interfacce di comunicazione distribuita
Gestione delle transazioni
Progettazione di sottosistemi server
Distribuzione dei dati
Passi da seguire nella fase di Design
Decomposizione del Sistema
Si struttura l’ Applicazione Distribuita in
Componenti
Possono eseguire su nodi separati in
ambiente distribuito
Decomposizione del Sottosistema
Si strutturano i Sottosistemi in
Task concorrenti
Oggetti che incapsulano l’ informazione
Decomposizione del Sistema
Per scomporre un’ Applicazione Distribuita in
Sottosistemi si utilizzano
Stessi criteri del caso Centralizzato
Criteri aggiuntivi necessari ad assicurare
Sottosistemi progettati come componenti
distribuite
Componenti mappabili su nodi distribuiti
Decomposizione del Sistema
Si fa distinzione tra
Aggregate Subsystems
Sottosistemi raggruppati per funzionalità
comuni
Composite Subsystems
Componenti che aderiscono al principio della
distribuzione geografica
Decomposizione del Sistema:
Aggregate Subsystems
In COMET un Aggregate Subsystem è un
raggruppamento logico di sottosistemi e/o
oggetti
E’ rappresentato con un Aggregate Object
Contiene altri oggetti
In UML può essere rappresentato con un
Package
un Package non può comparire in un
collaboration diagram
Decomposizione del Sistema:
Composite Subsystem
In COMET un Composite Subsystem è una
Componente che incapsula gli oggetti che
contiene
Non aggiunge funzionalità
è un contenitore logico e fisico
Tutte le funzionalità fornite dalla
componente derivano dagli oggetti che esso
contiene
Aspetti da considerare nella Progettazione
di Componenti Distribuite
In alcuni casi si hanno delle restrizioni nella
progettazione delle componenti
Servizi forniti da un Sottosistema associati
con una particolare locazione fisica
Servizi dipendenti da parametri di tipo
Hardware
Design delle Interfacce di
Comunicazione
Task in diversi Sottosistemi possono
comunicare usando diversi tipi di messaggi
Loosely Coupled Message Communication
Da l’ idea di una coda FIFO di messaggi o di
una coda rispetto alla priorità degli stessi
Comunicazione asincrona
In ambiente distribuito si può richiedere che il
produttore riceva una notifica positiva o negativa
che indica se il messaggio è arrivato oppure no
Un Timeout è associato ad ogni messaggio
Design delle Interfacce di
Comunicazione
Tightly Coupled Message Communication
Comunicazione sincrona
Un esempio è la comunicazione client/server
singola o multipla con attesa di risposta
Una risposta potrebbe essere una notifica
negativa quando il nodo server non ricevesse il
messaggio
Client e Server possono avere un dialogo che
coinvolge tanti messaggi e risposte
Si può aprire una connessione
Design delle Interfacce di Comunicazione:
Subscription/Notification Message Communication
E’ una forma di comunicazione uno a molti
Due tipi di comunicazione
Broadcast Comunication
un messaggio non atteso è spedito a tutti i
destinatari
Multicast Comunication
I Task sottoscrivono un gruppo e ricevono i
messaggi riferiti al gruppo
Il Sender manda un messaggio al gruppo senza
conoscere i membri
Un esempio di Subscription/Notification:
(message multicast) Comunication
Design delle Interfacce di Comunicazione:
Brokered Communication
Un object broker è un intermediario nelle
interazioni tra client e server
I server registrano con l’ object broker i servizi
che forniscono e le locazioni dei servizi stessi
questo tipo di mediazione è detto “Name
Service”
Il client non deve conoscere la locazione dei
servizi
Chiede al broker una lista dei servizi forniti
Design delle Interfacce di Comunicazione:
Brokered Communication
L’ object broker riceve la richiesta del client
determina la locazione del server (nodo su cui
risiede)
Inoltra il messaggio al server alla specifica
locazione
Il messaggio arriva al server e la richiesta viene
inoltrata
L’ object broker riceve la risposta dal server e la
inoltra al client
Due approcci
Forwarding design approach
Handle driven design approach
Due esempi di Brokered message
Comunication
Design delle Interfacce di Comunicazione:
Brokered Communication
Esiste una variante della Brokered
Communication detta Yellow Page Brokering
Il client conosce il tipo del servizio richiesto ma
non il server specifico
Il client manda una richiesta all’ object broker
richiedendo tutti i server per un dato servizio
L’ object broker risponde con una lista di server
che matchano con la richiesta del client
Il client specifica il server voluto
dopo aver comunicato con l’ utente
Il broker ritorna un “service handle” al client
che può comunicare direttamente con il server
Un esempio di Brokered
Communication (Yellow pages)
Design delle Interfacce di
Comunicazione: Negotiated
Communication
In Sistemi multi-agente è necessario permettere
agli agenti di negoziare con altri
Un agente client agisce in base all’ utente
fa una proposta “negoziabile” ad un agente
server
può richiedere una comunicazione con altri
agenti server
L’ agente server determina le opzioni disponibili
offre al client una o più opzioni (o rifiuta la
richiesta) che si avvicinano di più alla richiesta
del client
Design delle Interfacce di
Comunicazione: Negotiated
Communication
In particolare:
Il client può richiedere
una delle opzioni offerte dal server
proporre ulteriore opzioni
rifiutare l’ offerta
Il server a questo punto può
accettare la richiesta
se può soddisfarla
rifiutare la richiesta
Un esempio di Negotiated message
Communication
Transaction Management
Una Transazione consiste di due o più operazioni
che svolgono un’ unica funzione logica
Le operazioni possono essere completate
Tutte
Parzialmente
Le transazioni sono generate dal client e mandate
al server per il processing
Ci sono transazioni che devono essere atomiche
I servizi devono
Iniziare la transazione
fare il commit o abortire la transazione
Transaction Management: Un Esempio
Transazione di trasferimento tra due accounts in
due banche diverse
La transazione consiste di due operazioni
atomiche
di prelievo
di accredito
La transazione può essere
committed
entrambe le operazioni sono eseguite
aborted
nessuna operazione viene eseguita
Transaction Management: Protocollo di
Commit a due Fasi
Un server viene designato Commit Server
C’ è un partecipante server per ogni nodo
Nella prima fase del protocollo:
Il Commit Server manda un messaggio “prepareto-commit” a tutti i server
ogni partecipante
Blocca il record
effettua l’ update
Manda un messaggio “ready-to-commit” al
Commit Server
Un partecipante manda un messaggio “refuseto-commit” se non può fare l’ update
Transaction Management: Protocollo di
Commit a due Fasi
Il Commit Server aspetta di ricevere le risposte da
tutti i partecipanti
Ricevuti tutti i messaggi procede con la seconda
fase
Nella seconda Fase:
Il Commit Server manda il messaggio “commit” ai
partecipanti
Se tutti i partecipanti hanno risposto nella prima
fase “ready-to-commit”
Ogni server partecipante
Rende permanente l’ aggiornamento
Rilascia il record
manda un messaggio “commit-completed al
Commit Server
Il Commit Server aspetta i “commit-completed”
Schematizzazione della Prima fase del
protocollo di Commit s due fasi
Schematizzazione della Seconda fase del
protocollo di Commit a due fasi
Transaction Management: Note sul
Protocollo di Commit a due Fasi
Se un partecipante risponde ad un messaggio
“prepare-to-commit” con uno “ready-to-commit”
può completare la transazione
Un partecipante deve completare la
transazione anche se c’ è un ritardo
Se qualche partecipante risponde “refuse-tocommit” il Commit Server manda un messaggio
“abort” a tutti i partecipanti
Questi fanno il roll-back di tutti gli
aggiornamenti
Considerazioni sulla progettazione di
Transazioni
Una transazione composta potrebbe voler
effettuare solo roll-back parziale
In transazioni che coinvolgono l’ interazione con
l’ utente non è desiderabile tenere bloccata una
risorsa mentre l’ utente considera opzioni
E’ conveniente splittare le transazioni in più
sottotransazioni
Progettazione di Sottosistemi Server
Un Sottosistema Server fornisce un servizio per i
sottosistemi client
Incapsula oggetti (dati)
In questo modo un oggetto attivo (Thread fornito
dal sottosistema distribuito) accede l’ oggetto
passivo
Può incapsulare più oggetti passivi e fornire
servizi (thread) per ogni oggetto incapsulato
Il server risponde a richieste di lettura e/o
aggiornamento dei dati mantenuti dall’ oggetto
passivo
Sottosistema Server Sequenziale
Tratta le richieste dei client in modo sequenziale
Completa una richiesta prima di iniziare la
successiva
Tipicamente ha una coda di messaggi di
richieste di servizi
E’ progettato come un task
Fornisce uno o più servizi
Ha un tipo di messaggio per ogni servizio
Risponde a richieste inoltrate dai task client per
accedere il servizio
Sottositema Server Sequenziale
Il Server Coordinator
Interpreta il messaggio del client
Invoca l’ appropriata operazione fornita da un
oggetto server
Si usano i parametri del messaggio come
parametri dell’ operazione
Traduce la risposta dell’ oggetto server in un
messaggio di risposta al servizio
L’ oggetto Server
Processa la richiesta del client
Ritorna l’ appropriata risposta al Server
Coordinator
Esempio di
Sottositema Server Sequenziale
Sottositema Server Concorrente
Si Usa quando si ha un’ alta mole di richieste
Caratterizzato da diversi Task
Accedono in modo concorrente ai dati
C’ è bisogno di avere un accesso sincronizzato ai
dati
Per questo scopo si può utilizzare l’ algoritmo dei
lettori e scrittori multipli
I Task Lettori possono accedere il dato in modo
concorrente
Solo uno scrittore per volta può aggiornare il dato
in un certo momento
Dopo che i lettori hanno terminato
Sottositema Server Concorrente
Se il client comunica la richiesta in modo
asincrono si può usare un approccio a “callback”
Il client manda un puntatore ad un’ operazione
(funzione) al Server con la richiesta originale
Il Server usa questo Handle per effettuare una
chiamata di procedura remota
Dopo aver servito la richiesta
Esempio di
Sottositema Server Concorrente
Distribuzione dei Dati
Sia i server sequenziali che concorrenti sono
sottosistemi single-server
I dati che incapsulano sono centralizzati
Svantaggi potenziali dei Server centralizzati
possono diventare dei bottleneck per il sistema
sono soggetti a fallimento di tipo singolo
Se va giù un nodo non si può continuare
Esistono due approcci nella distribuzione dei dati
Distribuzione dei Dati
Basata su “Server Distribuiti”
I dati presenti in diverse locazioni sono
memorizza ti in quelle locazioni
Ogni locazione ha un server locale
Risponde alle richieste del client per i dati
relativi a quella locazione
Basata sulla “Replicazione dei Dati”
Gli stessi dati sono replicati in più di una
locazione
Devono esistere procedure per aggiornare in
modo coerente le copie locali dei dati replicati
Scarica

rizza