Professional Documents
Culture Documents
Tesi di Laurea
Relatore: Laureando:
Prof. Roberto Baldoni Fabio Papale
Correlatore:
Dott. Leonardo Querzoni
Tesi di Laurea
Relatore: Laureando:
Prof. Roberto Baldoni Fabio Papale
Correlatore: matricola: 1197571
Dott. Leonardo Querzoni
Controrelatore:
Prof. Giuseppe Santucci
Indice
1
Un meccanismo efficiente per limplementazione del
modello content-based Publish-Subscribe su sistemi topic-based
Conclusioni..........................................................................................................................................64
I risultati ottenuti..............................................................................................................64
Sviluppi futuri.....................................................................................................................65
Bibliografia.......................................................................................................................................75
2
Un meccanismo efficiente per limplementazione del
modello content-based Publish-Subscribe su sistemi topic-based
Capitolo 1
Introduzione
3
Capitolo 1: Introduzione
entrambi gli host siano attivi al momento della comunicazione: se il client invia
una richiesta, ma il server che deve riceverla non in quel momento attivo, il
client aspetter inutilmente una risposta che non arriver mai, fino allo scadere
di un timeout; questa caratteristica prende il nome di accoppiamento
temporale. Per concludere, come abbiamo gi accennato, il paradigma prevede
che i due host siano bloccati per tutto il periodo della comunicazione e non
possano, durante questo periodo, compiere ulteriori operazioni: questa
caratteristica detta accoppiamento nel flusso delle operazioni.
Nonostante i limiti che abbiamo ora visto, il modello client/server ha riscosso,
dalla nascita delle reti di elaboratori ad oggi, un incredibile successo. Ci da
imputare sia alla semplicit del modello stesso (solo due entit interagiscono
con un chiaro flusso temporale delle operazioni), sia alla sua adattabilit a
moltissimi ambiti applicativi. Pi in generale il paradigma client/server risulta
adeguato per tutte quelle applicazioni in cui esiste un soggetto che necessita di
un servizio o di un informazione solo in un certo istante nel tempo e sa gi da
chi ottenere questo servizio; il fatto che linformazione venga prelevata dalla
sorgente su richiesta ha portato a definire questo sistema anche come
information pull.
Naturalmente non tutte le applicazioni ricadono in questa categoria. Esistono
applicazioni in cui linformazione ad iniziare la comunicazione, e non la
necessit di ottenere questa stessa informazione. In questo tipo di applicazioni
linformazione interessa solitamente pi di un soggetto e pu essere prodotta in
un istante imprecisato nel tempo: per questo genere di applicazioni pi
naturale pensare ad una forma di interazione in cui sia lentit che produce
linformazione ad inviarla a chi ha espresso un interesse verso
quellinformazione (information push).
Un tipico esempio di information push offerto dai sistemi di monitoring delle
quotazioni azionarie: ad ogni variazione nella quotazione di un singolo titolo,
vengono avvertite (ma dora in poi diremo notificate) tutte le persone che hanno
espresso il proprio interesse nei confronti di quel titolo. In questo ambito, gli
4
Capitolo 1: Introduzione
5
Capitolo 1: Introduzione
Come si vedr nel capitolo successivo (cfr. paragrafo 2.4), i sistemi Publish-
Subscribe si differenziano principalmente in base al meccanismo di selezione
delle notifiche. Nel corso degli anni, uno dei meccanismi che ha riscosso maggior
successo il topic-based, ed il motivo di tale successo facilmente
riconducibile alla sua estrema semplicit (per un approfondimento vedi anche
paragrafo 2.5), la quale porta ad implementazioni molto efficienti. Il rovescio
della medaglia di questo meccanismo il problema dei falsi positivi, o pi
comunemente detti spam: siccome in un tale sistema gli utenti possono
scegliere soltanto largomento, cio il topic, degli eventi o delle sottoscrizioni da
pubblicare, senza poter esprimere ulteriori vincoli, la probabilit di ricevere
degli eventi che in realt non sono di interesse alta.
Per questo motivo, negli ultimi anni, la ricerca si spinta verso altri meccanismi
di selezione delle notifiche, individuando in quello content-based una valida
alternativa al precedente.
Ad oggi molte sono le proposte di sistemi Publish-Subscribe basate su tale
meccanismo (cfr. paragrafo 2.6), che quindi permettono una selezione molto pi
granulare dellinsieme di eventi di interesse, basata sui contenuti degli eventi
pubblicati e non solo sullargomento; di conseguenza, tali sistemi riescono ad
abbattere la probabilit di ricezione dei falsi positivi.
Purtroppo, data la complessit di tali sistemi, che durante le pubblicazione
devono essere in grado di realizzare un instradamento che sia funzione del
contenuto degli eventi stessi, non si riesce ancora a raggiungere i livelli di
efficienza dei sistemi Publish-Subscribe di prima generazione.
6
Capitolo 1: Introduzione
7
Capitolo 1: Introduzione
8
Un meccanismo efficiente per limplementazione del
modello content-based Publish-Subscribe su sistemi topic-based
Capitolo 2
I sistemi Publish-Subscribe
9
Capitolo2: I sistemi Publish-Subscribe
10
Capitolo2: I sistemi Publish-Subscribe
11
Capitolo2: I sistemi Publish-Subscribe
12
Capitolo2: I sistemi Publish-Subscribe
13
Capitolo2: I sistemi Publish-Subscribe
14
Capitolo2: I sistemi Publish-Subscribe
15
Capitolo2: I sistemi Publish-Subscribe
16
Capitolo2: I sistemi Publish-Subscribe
spaziale tra i partecipanti, ma richiedono che il prelievo delle tuple dallo spazio
condiviso sia sincrono.
17
Capitolo2: I sistemi Publish-Subscribe
18
Capitolo2: I sistemi Publish-Subscribe
19
Capitolo2: I sistemi Publish-Subscribe
20
Capitolo2: I sistemi Publish-Subscribe
Indubbi sono i vantaggi di una tale soluzione, ma come anticipato nel paragrafo
precedente, essa comporta implementazioni dei livelli di routing e di matching
abbastanza complesse.
2.6 Implementazioni
21
Capitolo2: I sistemi Publish-Subscribe
22
Capitolo2: I sistemi Publish-Subscribe
2.6.3 SCRIBE
SCRIBE [6] un implementazione del modello Publish-Subscribe topic-based
basato su una overlay network gestita da Pastry [14]. SCRIBE in grado di
gestire un alto numero di topic, ciascuno associato al proprio gruppo di
publisher e subscriber. Ogni subscriber deve dichiarare il proprio interesse per
un certo topic al sistema; questo mantiene, per ogni topic, un albero di multicast
che ha la sua base in un nodo di rendez-vous, e che contiene tutti i nodi che
hanno dichiarato il proprio interesse nei confronti del topic.
Allinserimento di un evento allinterno della rete, questo viene per prima cosa
inviato al nodo di rendez-vous responsabile per il suo topic, e da questo
inoltrato, tramite lalbero di multicast, a tutti i subscriber.
23
Capitolo2: I sistemi Publish-Subscribe
2.6.4 TERA
TERA [24] unimplementazione del modello Publish-Subscribe topic-based
basato su overlay. La novit interessante che introduce questo lavoro un
meccanismo chiamato Interest Clustering, con il quale si cerca di ridurre il
traffico inutile allinterno dellENS e soprattutto il numero di messaggi
indesiderati, i cosiddetti spam, notificati agli utenti.
Dato che questo il sistema topic-based utilizzato per simulare e testare il
sistema sviluppato in questo lavoro di tesi, doveroso trattarlo un po pi
approfonditamente.
Il meccanismo di interest clustering basato sul concetto di similarit delle
sottoscrizioni: quando le sottoscrizioni di un insieme di client sono
sufficientemente simili, allora possibile unire i client in un unico cluster. In
questo modo il cluster ricever principalmente traffico dati relativo alle
sottoscrizioni che hanno dato vita al cluster stesso, diminuendo quindi la
probabilit di ricevere spam. In un sistema Publish-Subscribe cos fatto, la
diffusione di un evento si divide in due fasi ben distinte: in una prima fase,
chiamata Outer-Cluster Routing, levento deve essere instradato nel sistema fino
a trovare il cluster associato alle sottoscrizioni che coprono levento; quindi,
trovato il cluster, inizia la seconda fase, chiamata Inner-Cluster Diffusion, in cui
levento viene inviato a tutti i client costituenti il cluster.
TERA, essendo topic-based, implementa un controllo della similarit delle
sottoscrizioni molto semplice ed efficiente: due sottoscrizioni si dicono simili se
esse si riferiscono allo stesso topic. In questo modo quindi, possiamo avere due
casi: o le sottoscrizioni non sono simili perch si riferiscono a diversi topic,
oppure sono perfettamente simili, in quanto si riferiscono allo stesso topic.
Come mostrato in figura 2.6, TERA implementa una overlay a due livelli: il
primo livello costituito da una overlay generale a cui appartengono tutti i
client del sistema Publish-Subscribe, ed qui che viene effettuata la prima fase
del processo di diffusione di un evento (in TERA anche le sottoscrizioni vengono
diffuse in questa overlay), tramite un cammino random nel grafo costituito dai
24
Capitolo2: I sistemi Publish-Subscribe
nodi della overlay; il secondo livello costituito invece da una serie di overlay,
una per ogni cluster di similarit, ed qui che avviene la seconda fase del
processo di diffusione di un evento, diffondendo levento in tutti i client della
cluster overlay che copre levento.
2.6.5 Elvin
Elvin [15, 16] un prototipo avanzato di sistema Publish-Subscribe content-
based. La sua caratteristica principale un meccanismo, chiamato di quenching,
usato dai publisher per ridurre il numero di notifiche generato; in base a questo
meccanismo ciascun publisher pu interrogare il sistema per ottenere una
rappresentazione degli interessi espressi dai subscriber; sulla base di questa
rappresentazione il publisher pu quindi stabilire quali eventi devono essere
notificati e quali invece possono essere scartati, in quanto non sarebbero di
interesse per nessun subscriber.
Il problema generato da questo metodo dato dal fatto che, quando un
publisher abilita il quenching su di un server, questi girer su di lui lintero
database delle sottoscrizioni per ogni singolo cambio di sottoscrizione,
generando una notevole quantit di traffico.
2.6.6 Gryphon
Gryphon [17] un implementazione del modello Publish-Subscribe realizzata
dalla IBM. Esso implementa sia un meccanismo di selezione delle notifiche
basato su topic sia un pi complesso content-based. Il sistema composto da
25
Capitolo2: I sistemi Publish-Subscribe
una serie di broker (architettura multi broker) suddivisi in cluster detti celle;
ciascuna cella copre una limitata area geografica ed, allinterno di questa, offre
un servizio scalabile e tollerante ai guasti; per ottenere una maggiore copertura
geografica, pi celle possono essere connesse tramite un numero arbitrario di
link, in modo da garantire che la rete rimanga sempre connessa; eventuali cicli
allinterno della rete vengono gestiti dai protocolli interni a Gryphon.
Oltre a queste caratteristiche Gryphon implementa anche diversi sistemi di
sicurezza che ne permettono luso anche su reti pubbliche.
2.6.7 SIENA
Siena [10, 18] un ENS distribuito con content-based routing.
La grande novit introdotta da Siena consiste in un meccanismo, chiamato di
covering delle sottoscrizioni che permette di ridurre la quantit di
sottoscrizioni che il sistema deve inoltrare sulla rete per poi poter effettuare un
corretto routing delle notifiche.
Oltre a questo Siena introduce anche il concetto di Advertising delle
pubblicazioni tramite cui i publisher possono annunciare in anticipo il tipo di
eventi che intendono pubblicare sulla rete.
Queste due caratteristiche permettono di tagliare parti della rete che
costituisce lENS (che deve avere obbligatoriamente una topologia aciclica) dalla
propagazione di certi eventi in quanto, le informazioni ottenute dalle
sottoscrizioni e dagli advertisement delle pubblicazioni, garantiscono che tali
rami non contengono subscriber interessati.
2.6.8 JEDI
JEDI [19] unimplementazione del modello Publish-Subscribe con content-
based routing sviluppata presso il Politecnico di Milano.
26
Capitolo2: I sistemi Publish-Subscribe
2.6.9 Hermes
Hermes offre unarchitettura molto simile a quella gi vista con SCRIBE; si tratta
quindi di un ENS distribuito sviluppato su uninfrastruttura offerta da una
overlay network [20, 21, 22] sottostante.
Ci che distingue Hermes da SCRIBE limplementazione di una tipologia di
routing misto basata sia sullutilizzo di un topic per gli eventi (chiamato in
questo caso tipo), sia sul contenuto degli eventi stessi. La parte di filtering
degli eventi basato sul loro contenuto, trae forte ispirazione dal lavoro svolto
con Siena.
2.6.10 REBECA
REBECA [23] un prototipo di sistema Publish-Subscribe realizzato nellambito
di un lavoro per una tesi di dottorato. Anche in questo caso il routing degli
eventi basato sul loro contenuto.
La caratteristica pi interessante di REBECA quella di permettere luso di
diversi tipi di routing delle sottoscrizioni per poter analizzare le loro
prestazioni; a seconda dellalgoritmo scelto vengono sfruttati vari gradi di
similarit tra le sottoscrizioni per ridurre il traffico dovuto alla loro diffusione
allinterno dellENS.
27
Un meccanismo efficiente per limplementazione del
modello content-based Publish-Subscribe su sistemi topic-based
Capitolo 3
Trasformare un sistema topic-based in content-based
28
Capitolo 3: Trasformare un sistema topic-based in content-based
29
Capitolo 3: Trasformare un sistema topic-based in content-based
Da quanto appena detto, risulta evidente che lobiettivo principale di questa tesi
quello di sviluppare lo strato intermedio, lMPL, il cui scopo quello di
realizzare un mapping tra lo spazio continuo multidimensionale che
caratterizza i sistemi content-based, e il mondo discreto su cui si basano i
sistemi topic-based. La figura seguente (3.3) illustra quanto detto: il Mapping
Module, contenuto nel Mapping Layer, dovr riuscire a determinare, per ogni
evento, ovvero per ogni punto dello spazio multidimensionale, qual il topic
responsabile dellinstradamento del particolare evento, in modo da poter poi
inoltrare il messaggio nel sistema topic-based sottostante.
Figura 3.3: Mapping tra uno spazio continuo ed un insieme discreto di topic
30
Capitolo 3: Trasformare un sistema topic-based in content-based
31
Capitolo 3: Trasformare un sistema topic-based in content-based
32
Capitolo 3: Trasformare un sistema topic-based in content-based
33
Capitolo 3: Trasformare un sistema topic-based in content-based
34
Capitolo 3: Trasformare un sistema topic-based in content-based
35
Capitolo 3: Trasformare un sistema topic-based in content-based
36
Capitolo 3: Trasformare un sistema topic-based in content-based
FPS =
Come possiamo vedere nellesempio di figura 3.6, in cui abbiamo tre sottospazi
associati a tre topic, la sottoscrizione SS1, essendo coperta da S1 e S2, si traduce
in una sottoscrizione ai topic A e B. Perci, tutti gli eventi che appartengono a S1
o S2, e non appartengono alla sottoscrizione SS1, sono dei potenziali falsi
positivi per SS1.
Figura 3.6: un esempio di sottoscrizione in una discretizzazione che genera elevati falsi positivi
37
Capitolo 3: Trasformare un sistema topic-based in content-based
Data la natura del sistema, basata sulla discretizzazione di uno spazio continuo,
tale problema non pu essere eliminato, ma, gestendolo in maniera opportuna,
lo si pu sfruttare per migliorare le prestazioni complessive: nel nostro sistema,
infatti, i falsi positivi sono il cardine della discretizzazione dinamica.
Nel sottoparagrafo successivo viene descritto il protocollo di discretizzazione, il
quale definisce il comportamento di un nodo del sistema, sia nello scenario in
cui esso ritiene necessario un livello successivo di discretizzazione, perch
riceve troppi falsi positivi, sia nello scenario duale, ovvero nel caso in cui il
sistema, o meglio un sottoinsieme di nodi del sistema, ritiene necessario
annullare un livello della discretizzazione.
38
Capitolo 3: Trasformare un sistema topic-based in content-based
= ,
#
>
# + #
39
Capitolo 3: Trasformare un sistema topic-based in content-based
40
Capitolo 3: Trasformare un sistema topic-based in content-based
unitario dei contatori. In realt questo incremento multiplo serve a tener traccia
del fatto che, nonostante ci siano pi sottoscrizioni in un sottospazio, e quindi
una minore regione non coperta da sottoscrizioni, e quindi una minore
probabilit di ricevere un falso positivo, il sistema ha comunque notificato un
evento che falso per pi sottoscrizioni. Con questi incrementi multipli quindi,
riusciamo a determinare con maggiore precisione su quale dimensione
necessario effettuare una discretizzazione in modo da ridurre il pi possibile i
falsi positivi del sottospazio.
Lalgoritmo invece che viene attivato ogni volta che viene ricevuto un messaggio
di richiesta di discretizzazione generato dallalgoritmo precedente, e che crea un
nuovo livello negli alberi DT ed ST il seguente:
41
Capitolo 3: Trasformare un sistema topic-based in content-based
42
Capitolo 3: Trasformare un sistema topic-based in content-based
43
Capitolo 3: Trasformare un sistema topic-based in content-based
44
Capitolo 3: Trasformare un sistema topic-based in content-based
Come si pu capire da quanto detto fino ad ora, ogni nodo costituente il sistema
Publish-Subscribe distribuito ha la necessit di conoscere lo stato degli alberi
DT ed ST, almeno per quel che riguarda le porzioni di interesse, cio quelle
contenenti le foglie associate a sottospazi che coprono le proprie sottoscrizioni
o advertisement.
Data la completa distribuzione degli alberi DT ed ST che caratterizza il nostro
sistema, il paragrafo successivo presenta le soluzioni adottate per garantire la
consistenza tra le copie locali degli alberi che ogni nodo del sistema costruisce
in base alle proprie necessit.
45
Capitolo 3: Trasformare un sistema topic-based in content-based
di modifica degli alberi vengano eseguite allunisono da tutti gli attori del
sistema coinvolti.
46
Capitolo 3: Trasformare un sistema topic-based in content-based
47
Capitolo 3: Trasformare un sistema topic-based in content-based
48
Capitolo 3: Trasformare un sistema topic-based in content-based
49
Capitolo 3: Trasformare un sistema topic-based in content-based
Come possiamo vedere, questo algoritmo invia dei messaggi di richiesta stato
per un nodo e attende eventuali risposte o riceve eventuali messaggi di wait,
50
Capitolo 3: Trasformare un sistema topic-based in content-based
sempre relativi a singoli nodi. Vediamo come si comporta un nodo del sistema
quando riceve un messaggio di richiesta stato per un nodo:
51
Capitolo 3: Trasformare un sistema topic-based in content-based
52
Capitolo 3: Trasformare un sistema topic-based in content-based
prima parte, e cio i punti 2 e 2.1, che sono inutili. Dunque, lalgoritmo di
annullamento di un advertisement il seguente:
53
Un meccanismo efficiente per limplementazione del
modello content-based Publish-Subscribe su sistemi topic-based
Capitolo 4
Test e risultati sperimentali
Per quanto riguarda la terza attivit, bene chiarire che il flusso di esecuzione
sempre lo stesso, ed unico: quello associato allo scheduler del simulatore. Per
thread virtuale si intende invece un insieme di istruzioni che deve essere
eseguito solo al verificarsi di una precisa condizione, ad esempio in risposta a
determinati eventi, o dopo un certo numero di cicli. In altre parole, i thread
virtuali consentono di creare un meccanismo event-based allinterno di un
simulatore cycle-based.
54
Capitolo 4: Test e risultati sperimentali
55
Capitolo 4: Test e risultati sperimentali
56
Capitolo 4: Test e risultati sperimentali
(10% di falsi positivi tollerati), in modo da testare il sistema in uno scenario non
troppo favorevole. Sono ora riportati solo due dei grafici ottenuti, uno per K=2 e
uno per K=9, in modo da mostrare landamento del sistema nei due casi limite
(nel prototipo realizzato il valore K[2,9] ).
Analizzando i due grafici, vediamo che nel primo, ovvero con K=2, il sistema va a
regime intorno al round 1000 quindi, considerando che il sistema parte al round
57
Capitolo 4: Test e risultati sperimentali
Un ultimo test, sempre centrato sullanalisi del sistema nel tempo, stato
effettuato per capire cosa accade quando, una volta che il sistema a regime,
cambia linsieme di sottoscrizioni e/o advertisement. Per eseguire questo test,
al round 1300, sono state cambiate tutte le sottoscrizioni e gli advertisement,
annullando le precedenti ed effettuandone delle nuove.
58
Capitolo 4: Test e risultati sperimentali
59
Capitolo 4: Test e risultati sperimentali
60
Capitolo 4: Test e risultati sperimentali
degli eventi che garantisce tale valore. Il risultato dei test mostrato nel grafico
seguente:
Come si pu notare dal grafico, per valori bassi della percentuale (cio per
qualit richieste elevate), il sistema statico utilizza molti pi sottospazi del
sistema dinamico. Questo risultato si spiega considerando che per raggiungere
gli stessi livelli di qualit del sistema dinamico, quello statico ha bisogno di una
discretizzazione molto fitta e, a differenza del dinamico che crea granularit fine
solo quando e dove necessaria (vicino alle sottoscrizioni), il sistema statico
caratterizzato da una discretizzazione uniforme, cio con granularit uguale
sullintero spazio degli eventi. Questo implica, per il sistema statico, un elevato
numero di sottospazi ed unalta probabilit{ che una sottoscrizione sia coperta
da pi sottospazi.
Un secondo risultato interessante che si legge dal grafico precedente
linversione delle prestazioni che si ottiene per percentuali alte (qualit{
richieste basse): dato che il sistema dinamico legato al parametro K, esso
comunque crea un numero minimo di sottospazi, mentre il sistema statico
riesce a garantire gli stessi livelli di qualit utilizzando una discretizzazione
uniforme meno granulare.
61
Capitolo 4: Test e risultati sperimentali
62
Capitolo 4: Test e risultati sperimentali
63
Un meccanismo efficiente per limplementazione del
modello content-based Publish-Subscribe su sistemi topic-based
Conclusioni
64
Conclusioni
65
Un meccanismo efficiente per limplementazione del
modello content-based Publish-Subscribe su sistemi topic-based
Appendice A
Implementazione del sistema
66
Appendice A: Implementazione del sistema
Package dataModel
Questo package contiene tutte le classi che definiscono il modello dei dati di un
sistema Publish-Subscribe. Si pu infatti vedere la classe EventSpace, che
rappresenta lo spazio degli eventi multidimensionale, e le classi che
rappresentano attributi e sottoscrizioni (AttributeDef, Attribute, Subspace e
Constraint).
67
Appendice A: Implementazione del sistema
Package events
Questo package contiene tutta la gerarchia di classi che definisce gli eventi che
possono essere pubblicati. Possiamo vedere come da uninterfaccia generale che
rappresenta un evento, viene creato un tipo AppEvent che rappresenta gli
eventi pubblicati dai publisher, e una gerarchia di SysEvent, che rappresenta i
messaggi di controllo pubblicati dal sistema.
68
Appendice A: Implementazione del sistema
Package exceptions
Questo package contiene tutta la gerarchia di classi che definisce le eccezioni
che possono essere lanciate dal sistema. In particolare, queste eccezioni servono
a garantire che gli eventi che si vogliono pubblicare, e i sottospazi a cui ci si
vuole sottoscrivere o fare advertisements, siano effettivamente contenuti nello
spazio degli eventi del sistema.
69
Appendice A: Implementazione del sistema
Package mapping
Questo package rappresenta il cuore del sistema. In esso troviamo infatti
implementato il livello CBI, ovvero linterfaccia content-based, ed il livello MPL,
ovvero il livello che realizza il mapping dinamico tra spazi continui
multidimensionali e insiemi discreti.
70
Appendice A: Implementazione del sistema
Package threads
Questo package contiene tutte quelle classi necessarie per implementare un
meccanismo di esecuzione di codice basato su eventi. In altre parole, ogni classe
di questo package rappresenta un insieme di istruzioni da eseguire solo in
risposta ad un determinato evento, come la ricezione di un messaggio, o lo
scadere di un timeout. Come si pu vedere, le classi sono strutturate in una
gerarchia in cui la classe padre, SimulatedThread, rappresenta la classe di
interfacciamento con il simulatore; in questa classe infatti troviamo metodi
come start(), run() e sleep(), i quali ovviamente rappresentano implementazioni
simulate dei relativi metodi della classe Thread reale, la quale ribadisco, non
viene mai usata, in quanto bisognava avere, per le simulazioni, un unico flusso
di esecuzione.
71
Appendice A: Implementazione del sistema
Package topicInterfacing
Questo package contiene la gerarchia di classi necessaria per realizzare, nel
modo pi disaccoppiato possibile, linterfacciamento con il sistema topic-based
sottostante. Possiamo notare infatti la classe TopicAPI, la quale rappresenta per
il nostro sistema, la classe di interfacciamento con il sistema topic: essa infatti
una classe astratta che non implementa i metodi chiave di un sistema Publish-
Subscribe, ovvero publish(), subscribe() e unsubscribe(), i quali poi devono
essere implementati da una classe che estende TopicAPI. Dato che i nostri test
sono stati effettuati utilizzando solo TERA come sistema topic-based, abbiamo
implementato solo una classe di interfacciamento, TeraInterfacing, la quale sa
come comunicare con il sistema topic-based.
72
Appendice A: Implementazione del sistema
Package utilities
Questo package contiene tutte le classi di utilit utilizzate dal sistema. Notiamo
infatti il parser XML (ConfigurationReader) che importa i parametri di sistema
scritti in un file XML, controllando che esso sia ben formato rispetto allo schema
definito nel relativo XSD visto allinizio dellappendice. Inoltre notiamo la classe
che inizializza tutte le altre (DESMAStarter), la classe che genera le distribuzioni
casuali, ed infine una gerarchia, che rappresenta linterfacciamento con
lapplicazione sovrastante a cui bisogna notificare gli eventi di interesse. Tale
gerarchia consente di disaccoppiare il nostro sistema con lapplicazione
sovrastante, cos come avviene tra il nostro sistema ed il topic-based
sottostante.
73
Appendice A: Implementazione del sistema
Package trees
Questo package contiene tutte le classi necessarie per implementare gli alberi di
discretizzazione e tutti i metodi per visitarli.
74
Un meccanismo efficiente per limplementazione del
modello content-based Publish-Subscribe su sistemi topic-based
Bibliografia
[4] P.Th. Eugster, P. Felber, R. Guerraoui, and A.M. Kermarrec. The Many
Faces of Publish/Subscribe. Technical Report ID:2000104, EPFL, DSC, Jan
2001.
75
Un meccanismo efficiente per limplementazione del
modello content-based Publish-Subscribe su sistemi topic-based
[15] B. Segall and D. Arnold. Elvin Has Left the Building: A Publish-Subscribe
Notification Service with Quenching. In Proc. of the 1997 Australian
UNIX and Open Systems Users Group Conference, 1997.
76
Un meccanismo efficiente per limplementazione del
modello content-based Publish-Subscribe su sistemi topic-based
77