Antonio Giovannelli
Riccardo Gregori



Discovery
◦
◦
◦
◦
Basato su peer per garantire resistenza ai guasti
Registrazione/Rimozione di servizi e cluster (di servitori)
Ricerca di servizi (per descrizione o ID)
Propagazione delle informazioni tra peer
◦
◦
◦
◦
Creazione del contratto
Pubblicazione/Rimozione
Gestione dello stato
Gestione invocazione
Servant
Client
◦ Ricerca con bilanciamento di carico
◦ Invocazione

Ambiente di sviluppo:
◦ Microsoft Visual Studio .Net

Linguaggio:
◦ C#

Protocolli:
◦ TCP
◦ UDP
Discovery
Peer
FIND
Client
Peer
Peer
INVOKE
PUBLISH/REMOVE
Copy
Servant
Servant
Master
Servant
Copy
Cluster
Cluster a copie
calde/fredde
con un unico
servant attivo

Struttura multithread
Un Thread (Agente) per ogni funzionalità

Risorsa condivisa tra Threads

◦ Gli agenti comunicano tra di loro attraverso un sistema ad
eventi in memoria comune “EventDispatching”
◦ ServiceList: una struttura thread-safe, contenente i servizi e i
cluster registrati, con la quale interagiscono gli agenti.
ServiceList
Reference
Reference
Publisher
Finder
Event
Dispatching
Reference
StateAgent
Si occupa della registrazione/rimozione di un cluster e del suo
servizio nella ServiceList.
Le richieste possono giungere sia attraverso il sistema ad eventi, sia
attraverso la rete mediante protocollo TCP.
Se un servizio è già presente, il cluster pubblicante viene aggiunto
tra i cluster che offrono quel servizio.
La rimozione di un cluster implica anche la rimozione del servizio
nel caso in cui un cluster sia l’unico registrato per quel servizio.
In caso di richieste via TCP, viene inviata una notifica al sistema di
eventi per notificare gli interessati.
Event
Dispatching
Publish/Remove
Spread Event
Publish/Remove
Notification
Cluster
Publish/Remove
Request
Publisher
Publish/Remove
ServiceList
Ricerca i servizi registrati attraverso ID o descrizione del
servizio.
Si possono richiedere tutti i servant attivi (se sono disponibili
più cluster per un servizio) o solo uno.
Le richieste giungono via TCP dai Client.
La risposta contiene il contratto del servizio ricercato e il
servant attivo di ogni cluster che offre tale servizio.
Identificazione del servant attivo mediante uno specifico
protocollo di Liveness (UDP), partendo dal master e scorrendo via
via le copie se non si ha risposta.
Client
Find_by_ID/description
Finder
Response
Hello
Servant
Master
Hello
Copy
Find
Servant
ServiceList
Hello
Servant
Cluster
Copy
Propaga ai peer conosciuti le informazioni di pubblicazione/rimozione di un
cluster ed accetta richieste di Join e Remove (vedi diapositiva successiva).
Le informazioni da propagare possono giungere dal sistema di eventi (si
tratta degli eventi lanciati dal Publisher) o via TCP da un peer che sta
propagando a sua volta un’informazione.
Controlla sulla ServiceList che le informazioni non siano già presenti, se
sono presenti non si propaga il messaggio.
Notifica con la ricezione di un messaggio di propagazione al sistema di
eventi (evento di interesse al Publisher).
La propagazione delle informazioni avviene curandosi di non contattare i
vicini già notificati dal Peer che ha inviato le informazioni.
Anche in questo caso si effettua un controllo mediante il protocollo di
Liveness per identificare eventuali Peer inattivi
Event
Dispatching
Publish/Remove
Event
Publish/Remove
Spread Notification
Peer
Publish/Remove
Spread Request
Publish/Remove
Spread Request
Peer
StateAgent
Check
ServiceList
Publish/Remove
Spread Request
Peer




Protocollo di inserimento di un nuovo discovery server in una rete di
peer preesistente.
Permette ai peer di conoscere il nuovo vicino e al nuovo discovery di
avere informazioni sui servizi registrati (attraverso lo StateAgent).
Il nuovo peer conosce almeno un discovery server.
Si connette al massimo su 3 peer partendo dal più scarico (numero
di vicini a cui è collegato) per limitare il numero di connessioni.
Remove

Il peer si rimuove dai discovery con cui ha fatto il join
Peer
Peer
Join
Peer
Peer
Join
Peer
Join
Peer
Peer





Proxy incaricato di ricevere le richieste di servizio
(invoke).
Deserializza (da formato SOAP) e controlla i
parametri in ingresso, serializza quelli in uscita
(sempre SOAP) in modo dinamico mediante le
informazioni fornite dal contratto del servizio.
Registra, in maniera trasparente, il servizio sul
sistema di discovery se il servant è attivato come
master.
Prevede situazioni di recovery.
Si appoggia allo StateAgent per propagazione
dello stato (modello a PUSH o PULL) sulle copie.

Proxy lato client , permette di accedere al servizio di
discovery per la ricerca in maniera trasparente.
◦ I
discovery
server
conosciuti
vengono
contattati
ciclicamente, mediante il protocollo di Liveness, con
timeout sempre maggiori per determinare quello con il
tempo di risposta minore.


Usa un meccanismo uguale ed inverso al proxy dei
servant per (de)serializzare e controllare in modo
dinamico i parametri di invocazione mediante le
informazioni contenute nel contratto del servizio,
ottenuto durante la ricerca.
L’invoke di un servizio può essere effettuata in
maniera completamente trasparente, o scegliendo
direttamente il servant (attivo) su cui effettuare la
chiamata.

Formato XML in cui si definiscono:
◦ ID del servizio
◦ Descrizione
◦ Parametri




Direzione
Nome
Tipo (C#)
Descrizione




Checker lato chiamante che invia una stringa
“Hello this is [IP chiamante]” tramite UDP ad un
destinatario in cui sia attivo un LivenessAgent; un
thread che si limita a rispondere con un’altra
stringa.
Attesa della risposta entro un certo timeout.
Caching delle risposte per un periodo limitato
(true se risponde in tempo, false altrimenti). Se
entro tale periodo si effettua di nuovo un check,
non si contatta il destinatario ma si restituisce il
risultato presente in cache.
Meccanismi di invalidazione della cache.
Il meccanismo di Caching riduce notevolmente il ritardo di risposta.

Gli obbiettivi prefissati sono stati raggiunti
ottenendo anche risultati sperimentali
soddisfacenti (paper per dettagli)
Reingegnerizzazione del codice
 Autenticazione dei Cluster (simile a WSIL)
 Monitoring del traffico sui peer
 Estensione del contratto per eccezioni
…

Scarica

presentazione