Andrea Antonio Garganico 197474
CdLS Ingegneria Informatica (0234) Reti di Calcolatori LS a.a. 2006/2007
Middleware basato sullo scambio di messaggi caratterizzato da:
o
o
o
o
o
Forte disaccoppiamento tra le entità in gioco.
Asincronicità
Persistenza
Supporto naturale alla comunicazione many-to-many
Scalabile
Due tipologie di comunicazione:
o
Publish/Subscribe:
o
o
modello many to many
Message queueing:
o
modello point to point o point to many
o
MOM con le funzionalità di
o
o
o
o
o
o
o
o
o
publish/subscribe topic-based .
message queueing.
Servizio di message storing e tipizzazione dei messaggi;
Interfacce e strutture dati a supporto dello scambio di informazioni su file multimediali, come musica e
film.
Gestione automatica del salvataggio dei messaggi.
Supporto per la comunicazioe sincrona e asincrona.
Implementazione schema di comunicazione point-to-point e point-to-many per quanto riguarda il
message queueing.
Tecnica di replicazione hot stand by .
Invio e ricezione dei messaggi con semantica at-most-once e once-and-only-once.
o
Sistemi pensati per operare in ambienti eterogenei.
o
Servizi accessibili a qualsiasi applicazione e qualsiasi sistema operativo.
o
o
Piattaforma Java come punto di partenza: concepita tenendo conto di questo
aspetto; fornisce strumenti di comunicazione orientati alla trasparenza della
locazione.
Package RMI come meccanismo di invocazione remota trasparente alle
applicazioni.
o
Authoring service: fornisce funzionalità di
autenticazione al sistema.
o
Discovery service: si occupa della gestione nomi dei
servizi.
o
Publish-Subscribe subsytem: implementa le
funzionalità definite dal modello P/S.
o
Message Queueing: implementa le funzionalità
definite dal modello MQ.
o
I componenti non condividono lo stesso ambiente di esecuzione:
•Distribuzione del carico computazionale.
•Guasti isolati.
•Sottosistemi riusabili e indipendenti.
•Facile modifica del sistema.
Data Manager: si occupa della gestione dei dati.
gestione dei dati. Fornisce interfacce di accesso
interfacce di accesso trasparenti al sistema di
sistema di memorizzazione delle informazioni.
informazioni.
o
o
o
La tipizzazione è stata introdotta come
caratteristica aggiuntiva.
La scelta di utilizzare uno schema predefinito e
proprietario, spetta al cliente dei servizi.
L’utilizzo di formati standard, come l’XML,
ormai diffusissimo, rende il sistema estendibile
sotto questo punto di vista.
o
Per scrivere un’applicazione client si possono
adottare due tecniche:
1) Implemetare iAppInterface creando un client
ex-novo.
2) Estendere la classe iApplication sfruttando
l’implementazione proprietaria.
o
Proponendo due metodi alternativi, si dà al
programmatore la possibilità di creare
un’applicazione in maniera semplice e veloce.
o
o
o
Il package authoring fornisce un insieme di
strumenti per l’accesso al sistema.
Gestisce la comunicazione da e verso i
e verso i clients.
Si occupa degli accessi.
o
o
o
Il Data Manager gestisce la persistenza dei
dati.
Fornisce una soluzione basata su hashtable
memorizzate localmente e accessibili
secondo gli schemi e le interfacce standard
del linguaggio java.
E’ possibile implementare un meccanismo
di memorizzazione dei dati diverso da
quello fornito agendo in maniera
localizzata e velocizzando in questo modo
il processo di refactoring.
iApplication
(sender)
ASConnectionManager
DataManager
Naming.Rebind(name,remObj)
remote invocation
sendMsg(msg)
checkScheme()
remote invocation
lookupUser(user)
data access
call back
getMsg(msg)
iApplication
(receiver)
true
o
o
Altri casi d’uso come la registrazione oppure
la pubblicazone di un nuovo messaggio
afferente ad un topic seguono uno schema
uniforme di comunicazione descritto di
seguito.
L’applicazione client crea un nuovo server as-
o
o
Cluster di tipo “Attivo-Passivo” con una
replicazione di tipo passivo “Hot Stand by”.
Garantisce il servizio anche a fronte di un guasto
del server primario in modo del tutto
trasparente per le applicazioni client.
o
“Canale di heartbeating” .
o
“Stato del server attivo” memorizzato nel server
in stand by.
o
Concentriamo innanzitutto la nostra attenzione
sullo stato del server attivo; quali sono le
informazioni che lo caratterizzano?
Init
DataManager
start: DataManager(master)
DataManagerThread
init
start: DataManager(slave)
init
alive()
remote invocation
true
suspend
remote invocation
DataManager
init
start: DataManager(master,restore)
iApplication
(sender)
ASConnectionManager
DataManager
Naming.Rebind(name,remObj)
remote invocation
register( app)
forward request
remote invocation
register(app)
update source
access time
response
response
Viene privilegiata la consistenza piùttosto che il tempo di
risposta.
o
o
o
o
o
o
o
o
o
o
Lista di utenti per il multicast
Topic da creare o cancellare, ALL
effettua la deregistrazione da tutti i
topic.
Accesso al sistema.
Invia un messaggio non tipizzato.
Invia messagi tipizzati.
Visualizza i topic presenti sul
server.
Pubblica un nuovo messaggio.
Effettua le deregistrazione.
Crea un nuovo topic.
Iscrizione ad un topic.
o
o
o
o
o
Tabbed pane per messaggi tipizzati.
Il sistema è stato realizzato con eclipse
Per effettuare il testing bisogna
aggiungere le librerie standard
\eclipse\plugins\org.eclipse.swt.win32.w
v3232m.jar.
La gestione e lo sviluppo degli oggetti
dal plugin rmi scaricabile all’indirizzo
http://www.genady.net/.
Una volta configurato l’ambiente non
configurazioni predefinite
iApplication,MasterDataManager,
SDataManager, ASConnectionManager
DConnectionManager nell’ordine
o
o
o
o
o
Limiti derivanti dalla scelta di usare RMI come strumento di interconnessione tra Client e
Server. L’applicazione Client deve conoscere l’indirizzo fisico del server attivo.
Introduzione di un DNS che permetta l’uso di nomi logici piuttosto che indirizzi fisici.
L’altra limitazione è dovuta al fatto di essere legati alla tecnologia Java; per superarla ed
aumentare così l’interoperabilità si potrebbe usare SOAP e portare tutto sul web.
Implementazione di politiche di sicurezza.
Estensione della modalità publish-subscribe in modo che sia possibile effettuare anche
sottoscrizioni di tipo content-based.
Scarica

presentazione