Realizzazione di un supporto per la
progettazione di applicazioni
in ambiente distribuito
Università degli studi di Bologna
Facoltà di ingegneria
Reti di calcolatori L-S
Fiorani Enrico
Matr.196232
Scopo del progetto
Il sistema sviluppato vuole offrirsi come supporto alla
progettazione di applicazioni in ambiente distribuito,
adottando una struttura fortemente centralizzata e
basandosi su una architettura di riferimento nota e
consolidata come quella delle Remote Method
Invocation di Sun.
2
Enrico Fiorani
Obiettivi e criticità
Garanzia ed elevata disponibilità del servizio
Distribuzione del carico di lavoro
Down-time minimo
Tolleranza e individuazione di guasti
Monitoraggio a minima intrusione e basso overhead
Architettura fault-tolerant
Problemi legati alla centralità dell’architettura:
– Forte ripercussione sul sistema di guasti all’unità centrale
– Congestione
– Sovraccarico di responsabilità
3
Enrico Fiorani
Dualità dei requisiti
4
Realizzare una struttura solida e ben organizzata che
risponda alle esigenze di interazione, coordinamento e
replicazione necessarie allo sviluppo di applicazioni
distribuite;
Fare in modo che essa sia allo stesso tempo anche
dinamica e flessibile per adattarsi il più possibile ad
esigenze e scenari differenti.
Enrico Fiorani
Architettura del sistema
Caratterizzata da tre unità fondamentali:
–
–
–
Client
Server
CenterService (gestore e coordinatore del sistema)
Riferimenti remoti via RMI;
Trasparenza lato client e server:
–
–
Invocano metodi solo sul center (*);
Center unico ad avere conoscenza globale del sistema;
* modalità di default
5
Enrico Fiorani
Diagramma di sequenza (semplificato)
Fase iniziale
comune:
Init & Configure node
Possibile
richiesta dei
servizi
presenti
Risposta
mediata dal
Center
6
Selezione
server per il
servizio
richiesto
Enrico Fiorani
Estensioni al modello C/S
Possibilità di delegare l’attesa, il recupero e la gestione
del risultato ad una entità (ClientResponse) indipendente
dal client :
–
–
7
Modalità poll
Modalità call-back
Sincronizzazione e coordinamento tra le varie entità
server (* mediate dal Center)
Risposta al client ritardata e asincrona (Delegator)
Enrico Fiorani
Center consulente
(no intermediario)
Un sistema centralizzato:
il CenterService
Modalità
sincrona
Modalità
asincrona
public interface NewCenterServiceInterface extends Remote {
C
L
I
E
N
T
S
E
R
V
E
R
C
E
N
T
E
R
public Object chiediServizio(String metodo,Object o) throws RemoteException;
public Object chiediServizio(AddressInfo aCl,String metodo,Object o)...
Broadcast
public Object chiediServizioMulticast(String metodo,Object o) ...
(sincrona)
public AddressInfo dammiServerPerServizio(String metodo) ...
public String[] mostraListaMetodi() throws RemoteException;
public boolean registraMetodi(AddressInfo as) throws RemoteException;
public Object chiediServizioAlCenter(String metodo,AddressInfo aiServer,Object in)
public boolean copiaRegistroServer(AIContainer as) throws RemoteException;
public void aggiornaSlave(Object in) throws RemoteException;
public Object aggiornaMasterFromSlave(Object in) throws RemoteException;
}
8
Aggiornamento
copie calde
Aggiorna
stato Master
Sincronizzazione/
Coordinamento
Registrazione
servizi
Enrico Fiorani
Architettura CenterService
Deferred response
Selezione Server
Distribuzione carico
Salvataggio stato
su file XML
Monitoraggio
Server & Slave
Boot da file
Check-point di
Aggiornamento
Slave
9
Gestione richieste
Sequenziale/Concorrente
Enrico Fiorani
Distribuzione del carico
Suddivisione del lavoro tra i vari server che soddisfano
quel particolare servizio.
Selezione:
– Random (per N>1);
– Il più scarico nella categoria (per server differenziati);
– Il più scarico globalmente;
– Quello con meno clienti al momento collegati;
10
Classi utilizzate: DistributionService
Enrico Fiorani
Monitor
Controllo periodico dello stato dei server registrati:
11
Ping periodici “Center to Server” a tutti quelli attivi;
Stato di allerta per il server al primo ping mancato;
Eliminazione dalla lista degli attivi a seguito di due ping
consecutivi falliti;
Ping di ritorno utilizzato anche per eventuali
informazioni sui clienti connessi e sulle invocazioni
ricevute;
Classi utilizzate: Monitor e PingResponse.
Enrico Fiorani
Tolleranza ai guasti
Garantire un comportamento del sistema prevedibile e
corretto anche in caso di:
Caduta o failure del nodo server :
Comuni fault applicativi:
12
Politica preventivaMonitor;
Politica di recoverySelezione nuovo server.
Gestione tramite timeout per socket;
Successiva ritrasmissione richiesta fallita;
Operazione abortita e ripresa dell’esecuzione.
Crash del CenterService.
Enrico Fiorani
Replicazione
Affiancare al CenterService una seconda entità copia in
grado di sostituirsi a questo in ogni momento
Replicazione in spazio (CS+copia);
Copie calde(*);
Modello passivo (Master/Slave);
Check-point di aggiornamento time-driven;
(*)Rispettare il principio di minima intrusione.
13
(+frequenzacopia calda ma +overhead)
(-frequenzacopia tiepida ma -overhead)
Enrico Fiorani
Master & Slave: il CenterService2
Aggiornamento periodico lista e stato server:
Con salvataggio su file xml da parte di CS2;
Aggiornamento periodico di dati e informazioni del center
o dei clienti:
14
Public void aggiornaSlave(Object in)
Re-boot del Master riprendendo dallo stato globale
mantenuto aggiornato dallo slave
Public boolean copiaRegistroServer(AIContainer as)
public Object aggiornaMasterFromSlave(Object in)
Classi utilizzate:CenterComunicator,XmlCreator, Parser
Enrico Fiorani
Test
In ambiente distribuito composto da tre e quattro PC con
caratteristiche tecniche e prestazioni differenti:
Simulazione di diversi possibili malfunzionamenti e guasti
15
Caduta nodo server
Caduta nodo client
Caduta nodo center
Realizzazione di un prototipo per la verifica di tutti i
metodi presentati
Sfruttamento ed utilizzo del supporto per la realizzazione
di applicazioni reali distribuite.
Enrico Fiorani
Un’applicazione reale:
“Bacheca elettronica sicura distribuita”
Consentire ad un gruppo chiuso di utenti di potersi
trasmettere informazioni riservate.
Accesso mediante autenticazione sul Center
Chiave comune unica
Messaggi firmati ma leggibili da tutti gli utenti
Operazioni possibili:
16
Numero chiuso di utenti (dati salvati sul Center)
Chiave e dati personali riservati (TripleDEIS)
Creazione nuove bacheche elettroniche;
Inserimento messaggi;
Lettura messaggi e identificazione dell’autoreEnrico Fiorani
Autenticazione e Identificazione
Rand
Y
CenterBacheca
Client / Server
UserID
X = R_ID
+
RandY
Bacheca
Key
Bacheca
Key
RandY
Ok!
Servizi disponibili
17
Database:
UserID
R_ID
In chiaro
Cifrato
Enrico Fiorani
UserKey
Un’applicazione reale:
“Search Engine Distribuito e Replicato”
Fornire operazioni tipiche di un motore di ricerca:
CenterService in modalità consulente per il cliente
18
public AddressInfo dammiServerPerServizio(String metodo)
Sincronizzazione server e aggiornamento copie mediate
dal center
Effettuare ricerca di un dataset esistente di dati che presentano
le caratteristiche desiderate;
Aggiunta di nuovi record al dataset.
..Object chiediServizioAlCenter(String m,AddressInfo ai,Object in)
Replicazione e monitoraggio offerta dal supporto
Enrico Fiorani
Conclusioni e sviluppi futuri
19
Il supporto realizzato ha superato le diverse fasi di
test proposte;
Offre funzionalità e metodi utili nell’ambito del
distribuito e con una architettura robusta e flessibile;
Facilità nell’estenderlo ed applicarlo ad applicazioni
reali, tra le quali quelle proposte.
Aggiunta di nuove funzionalità a problematiche
comuni e importanti, non completamente affrontate;
Interventi di ottimizzazione della soluzione proposta.
Enrico Fiorani