4.2. I test effettuati
4.2.3. Costo della discretizzazione dinamica
Un’ultima analisi è stata effettuata per capire quanto costa gestire la dinamicit{ della discretizzazione. In tale test è stata misurata la percentuale di messaggi di controllo inviati, rispetto al totale dei messaggi inviati. Anche in questo caso il test è stato eseguito al variare della percentuale di falsi positivi tollerati.
Come era facile intuire, all’aumentare della percentuale, siccome diminuisce la necessità di discretizzare, il numero di messaggi di controllo, ovvero quei messaggi inviati per gestire la discretizzazione, diminuisce. E’ interessante notare come anche nei casi critici, ovvero a percentuali basse, l’overhead non supera il 5% del totale dei messaggi inviati.
Un meccanismo efficiente per l’implementazione del modello content-based Publish-Subscribe su sistemi topic-based
Conclusioni
5.1 I risultati ottenuti
Abbiamo iniziato questo lavoro di tesi con un’introduzione ai sistemi Publish-Subscribe (cfr. capitolo 2), in cui abbiamo evidenziato le differenze fra i meccanismi topic-based e content-based (cfr. 2.5); quindi abbiamo creato, nel capitolo 3, un meccanismo efficiente per l’implementazione del modello
content-based partendo da un generico meccanismo topic-based,
trasformandolo in uno content-based. Nel quarto capitolo, infine, abbiamo presentato i risultati di una serie di test effettuati utilizzando un prototipo da me sviluppato (cfr. Appendice A) ed un simulatore del sistema TERA opportunamente modificato.
Tali risultati dimostrano principalmente come un sistema a discretizzazione dinamica, grazie ad una granularità della discretizzazione non uniforme, ma che segue le distribuzioni delle sottoscrizioni e degli eventi, riesca ad essere quasi sempre più efficiente di un sistema a discretizzazione statica, riducendo il numero di sottospazi necessari a garantire un determinato livello di qualità. Inoltre, i test mostrano come l’overhead introdotto per la gestione della discretizzazione dinamica sia relativamente contenuto, rimanendo sempre al di sotto del 5%.
Possiamo concludere, quindi, affermando che il sistema Publish-Subscribe da noi sviluppato riesce ad essere più performante di sistemi statici, ad un costo decisamente accettabile.
Conclusioni
5.2 Sviluppi futuri
Il prossimo passo da eseguire per continuare lo sviluppo ed il test di questo sistema, consiste nel cercare di eliminare i limiti introdotti dal prototipo utilizzato, purtroppo sviluppato rapidamente per motivi di tempo legati alla tesi. Una caratteristica che limita molto il sistema, infatti, è legata ad una proprietà del simulatore utilizzato: i nominativi dei topic sono dei numeri interi piuttosto che stringhe di caratteri. Questa caratteristica influenza due elementi fondamentali del nostro sistema, il quale deve necessariamente creare una corrispondenza biunivoca tra i nomi dei sottospazi, di tipo stringa, ed i nomi dei topic, di tipo intero: nel prototipo sviluppato la cardinalità della discretizzazione non può essere superiore a 9, e l’altezza degli alberi di discretizzazione non può essere maggiore di 9, altrimenti l’intero associato ai sottospazi foglia rischia di superare i valori massimi consentiti per il tipo intero.
Superato questo limite, sarebbe interessante testare il sistema con valori alti di K. In un tale scenario, ci aspettiamo comunque, che aumentando K, la durata del transitorio si assesti su un valore minimo, che l’efficienza continui a diminuire, e che i costi diminuiscano, anch’essi assestandosi su un valore minimo.
Inoltre, un altro test interessante da eseguire, sarebbe quello di analizzare la relazione tra il valore di K ed il valore di percentuale di falsi positivi tollerati dopo il quale si ha l’inversione di prestazioni tra sistema statico e dinamico. Come si intravede dall’analisi gi{ effettuata (cfr. 4.2.2), ci aspettiamo una relazione inversa tra le due grandezze, ovvero all’aumentare della cardinalit{ di discretizzazione, l’inversione di prestazioni dovrebbe avvenire dopo valori sempre più piccoli della percentuale di falsi positivi tollerati, fino ad assestarsi nell’intorno di un asintoto orizzontale.
Infine, uno sviluppo interessante sarebbe quello di modificare il prototipo sviluppato, in modo da disaccoppiarlo dal simulatore, per poi testarlo su un sistema topic-based reale, non simulato.
Un meccanismo efficiente per l’implementazione del modello content-based Publish-Subscribe su sistemi topic-based
Appendice A
Implementazione del sistema
In questa appendice sono mostrati i diagrammi dello schema XSD (XML Schema Definition) che definisce i parametri di input del sistema, ed i diagrammi delle classi del prototipo sviluppato per testare il meccanismo sviluppato in questo lavoro di tesi. In particolare, per ogni package sviluppato, è contenuta una breve descrizione delle funzionalità del package ed il diagramma delle classi contenute in esso.
XML Schema Definition per i parametri di input del sistema
Questo file XSD definisce le regole da rispettare per inserire i parametri di input del sistema.
Gli elementi contenuti in DESMAType sono i parametri di input del sistema. Seguendo poi il diagramma, si capisce ogni singolo parametro di che tipo è.
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).
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 un’interfaccia 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.
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.
Appendice A: Implementazione del sistema
Package mapping
Questo package rappresenta il cuore del sistema. In esso troviamo infatti implementato il livello CBI, ovvero l’interfaccia content-based, ed il livello MPL, ovvero il livello che realizza il mapping dinamico tra spazi continui multidimensionali e insiemi discreti.
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.
Appendice A: Implementazione del sistema
Package topicInterfacing
Questo package contiene la gerarchia di classi necessaria per realizzare, nel modo più disaccoppiato possibile, l’interfacciamento 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.
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 all’inizio dell’appendice. Inoltre notiamo la classe che inizializza tutte le altre (DESMAStarter), la classe che genera le distribuzioni casuali, ed infine una gerarchia, che rappresenta l’interfacciamento con l’applicazione sovrastante a cui bisogna notificare gli eventi di interesse. Tale gerarchia consente di disaccoppiare il nostro sistema con l’applicazione sovrastante, così come avviene tra il nostro sistema ed il topic-based sottostante.
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.
Un meccanismo efficiente per l’implementazione del modello content-based Publish-Subscribe su sistemi topic-based
Bibliografia
[1] A. Carzaniga, David S. Rosenblum, e Alexander L. Wolf, “SIENA: Design and Evaluation of a Wide-Area Event Notification Service”.
[2] R. Baldoni, C. Marchetti, e A. Virgillito, “Content-Based Publish-Subscribe over Structured Overlay Networks”.
[3] S. Voulgaris, E. Rivière, A.M. Kermarrec, e M. van Steen, “Sub2Sub: Self Organizing Content-Based Publish-Subscribe for Dynamic Large Scale Collaborative Networks”.
[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.
[5] Object Management Group. Common object services specification, March 1995.
[6] A. Rowston, A. Kermarrec, M. Castro, and P. Druschel. Scribe: The design of a large-scale notification infrastructure. In 3rd International Workshop on Networked Group Communication (NGC2001), 2001. [7] B. Oki, M. Pfluegel, A. Siegel, and D. Skeen. The Information Bus - An
Architecture for Extensive Distributed Systems. In Proceedings of the 1993 ACM Symposium on Operating Systems Principles, December 1993. [8] S. Q. Zhuang, B. Y. Zhao, A. D. Joseph, R. Katz, and J. Kubiatowicz. Bayeux:
An architecture for scalable and fault-tolerant wide-area data dissemination. In 11th Int. Workshop on Network and Operating Systems Support for Digital Audio and Video, 2001.
[9] G. Banavar, T. Chandra, B. Mukherjee, J. Nagarajarao, R.E. Strom, and D.C. Sturman. An Efficient Multicast Protocol for Content-based Publish-Subscribe Systems. In Proceedings of International Conference on Distributed Computing Systems, 1999.
Un meccanismo efficiente per l’implementazione del modello content-based Publish-Subscribe su sistemi topic-based
[10] Antonio Carzaniga, David S. Rosenblum, and Alexander L. Wolf. Design and evaluation of a wide-area event notification service. ACM Transactions on Computer Systems, 19(3):332–383, August 2001. [11] Peter R. Pietzuch and Jean M. Bacon. Hermes: A distributed event-based
middleware architecture. In Workshop on Distributed Event-Based Systems (DEBS), 2002.
[12] Object Management Group. Notification service: Joint revised submission, July 1999.
[13] Teknekron Software Systems. Rendezvous software bus programmer’s guide, 1995.
[14] A. Rowston and P. Druschel. Pastry: Scalable, distributed object location and routing for large-scale peer-to-peer systems. In IFIP/ACM Middleware, 2001.
[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.
[16] B. Segall, D. Arnold, J. Boot, M. Henderson, and T. Phelps. Content-Based Routing with Elvin4. In Proceedings of AUUG2K, Canberra, Australia, June 2000.
[17] Gryphon Web Site. http://www.research.ibm.com/gryphon/ .
[18] SIENA Web Site. http://www.cs.colorado.edu/users/carzanig/siena/ . [19] G. Cugola, E. Di Nitto, and A. Fuggetta. Exploiting an event-based
infrastructure to develop complex distributed systems. In Proceedings of the 10th International Conference on Software Engineering (ICSE ’98), April 1998.
[20] I. Stoica, R. Morris, D. Karger, M. F. Kaashoek, and H. Balakrishnan. Chord: a scalable peer-to-peer lookup service for internet applications. In ACM SIGCOMM, 2001.
[21] A. Rowston and P. Druschel. Pastry: Scalable, distributed object location and routing for large-scale peer-to-peer systems. In IFIP/ACM Middleware, 2001.
Un meccanismo efficiente per l’implementazione del modello content-based Publish-Subscribe su sistemi topic-based
[22] S. Q. Zhuang, B. Y. Zhao, A. D. Joseph, R. Katz, e J. Kubiatowicz. Tapestry: An infrastructure for fault-tolerant wide-area location and routing. Technical Report UCB/CSD-01-1141, University of California at Berkeley, Computer Science Division, April 2001.
[23] Gero M¨uhl. Large-Scale Content-Based Publish/Subscribe Systems. PhD thesis, September 2002.
[24] R. Baldoni, R. Beraldi, V. Quema, L. Querzoni, e S. Tucci-Piergiovanni. TERA: Topic-based Event Routing for peer-to-peer Architectures, in DEBS’07, June 2007.