A Reliable Message Oriented Middleware based on Publish and Subscribe paradigm Mirko Matoffi 171419 a.a. 2003/2004.

Slides:



Advertisements
Presentazioni simili
Informazioni di base sul funzionamento
Advertisements

Gestione di un Sistema di Talk multiutente
UNIVERSITÀ DEGLI STUDI DI MODENA E REGGIO EMILIA
Gli ipertesti del World Wide Web Funzionamento e tecniche di realizzazione a cura di Loris Tissìno (
Architetture dei sistemi distribuiti Prof
PHP.
Sistema di gestione flussi documentali
Web Services.
Java Enterprise Edition (JEE)
una interfaccia internet per il sistema Momis
Java2 Esercitazioni del corso di Sistemi Informativi Marina Mongiello
Progetto Mini di Sistemi Distribuiti – AA 2007/08 Secure Group Communication with GDH.1 Alessandro Licata Caruso Matr:
Esercitazione con socket
2-1 Trasferimento di file: ftp Crediti Parte delle slide seguenti sono adattate dalla versione originale di J.F Kurose and K.W. Ross (© All Rights.
Integrazione di una piattaforma IPTV in un’architettura SOA
L'innovazione Tecnologica Per Il Federalismo Efficiente Roma 30 Giugno 2005 Sistema Pubblico di Cooperazione Applicativa.
Modello di replicazione attivo e di supporto alla tolleranza ai guasti in ambito MOM Autore: Claudio Fusconi Matricola: Esame: Reti di calcolatori.
Supporto per servizi di File Hosting Presentazione di progetto per lesame di Reti di Calcolatori LS Valerio Guagliumi
Delay Tolerant Networking Service per SAMOA. Il framework SAMOA SAMOA è un framework che consente di gestire e popolare la rete sociale e propagare a.
Un sistema software per la vendita di prodotti on-line Università degli studi di Bologna Facoltà di ingegneria Reti di calcolatori L-S Studente: Rinaldi.
Realizzazione di un supporto per la progettazione di applicazioni in ambiente distribuito Fiorani Enrico Matr Università degli studi di Bologna.
JARS JavaActiveReplicationSupport Anno Accademico Bellocchi Marco Maria.
Progetto di una architettura per lesecuzione distribuita e coordinata di azioni Progetto per lesame di Reti di Calcolatori L-S Prof. Antonio Corradi Finistauri.
DEIS Università di Bologna
Distributed File System Service Dario Agostinone.
Meteo Service Corso di Reti di Calcolatori LS Casarini Stefano matr
Ing. Enrico Lecchini BetaTre S.r.l.
Grid monitoring: sviluppi futuri
Guida IIS 6 A cura di Nicola Del Re.
U N INFRASTRUTTURA DI SUPPORTO PER SERVIZI DI FILE HOSTING Matteo Corvaro Matricola Corso di Reti di Calcolatori LS – Prof. A. Corradi A.A.
BROKER SERVER Progetto di Ingegneria del Web 2008 Alessio Bianchi Andrea Gambitta Giuseppe Siracusano.
Servizi Grid ed agenti mobili : un ambiente di sviluppo e delivering
Reti di calcolatori LS Manni Tiziano  IT e nuovi scenari applicativi …  … portabilità dei dati …  … condivisione dati …  … disponibilità.
1 di 15 Università degli studi di Modena e Reggio Emilia Mail Configurator: un’applicazione ad agenti mobili basata su ruoli dinamici Correlatori: Ing.
Java Enterprise Edition
Reti di Calcolatori ed Internet Fabio Massimo Zanzotto.
Distributed System ( )7 TCP/IP four-layer model.
Progetto RE.VE.N.GE. CORBA REliable and Versatile News delivery support for aGEncies Realizzazione del Sistema di Consegna UNIVERSITA’ DEGLI STUDI DI BOLOGNA.
Progetto Message Queues Service Olivelli Enrico Corso di Reti di Calcolatori LS A.A
Java Service Replication Mattia Righini Mat:
Nemesi Creazione e pubblicazione di una rivista online tramite l’utilizzo di Java Message Service.
Reti di calcolatori LS Enrico Pirazzini SSB un middleware basato su JMS per l'invocazione di servizi remoti.
Eprogram informatica V anno. ASP.NET Introduzione ASP.NET (Active Server Page) è il linguaggio che, sfruttando la tecnologia.NET, permette di: -scrivere.
Sistema pubblico di connettività Cooperazione Applicativa Cooperazione Applicativa Roberto Benzi 30 giugno 2005.
TW Asp - Active Server Pages Nicola Gessa. TW Nicola Gessa Introduzione n Con l’acronimo ASP (Active Server Pages) si identifica NON un linguaggio di.
Progetto RE.VE.N.GE. (REliable and VErsatile News delivery support for aGEncies) Reti di Calcolatori L-S Anno Accademico 2005/2006 Nardini Elena
Producer – Consumer System Di Carlo Matteo CdLS Ingegneria Informatica (0234) Reti di Calcolatori LS A.A. 2004/2005.
Progetto di Ingegneria del Web Anno Accademico 2007/2008 Stefano Pigiani Bruno Ricci Marco Ruzzon.
Supporto per la replicazione attiva di servizi Progetto per il corso di Reti di Calcolatori LS Montanari Mirko Matr:
Sistema di replicazione master-multislave con server di backup per un servizio di chat di Marco Andolfo matr
Infrastruttura per la gestione distribuita di un sistema di prenotazione Progetto di: Fabio Fabbri Matricola
Bonjour Post-It servizio di post-it distribuito di Elisa Rondini.
Java Distributed Event Service Bringing events to J2EE platform Università degli studi di Bologna Corso di Laurea Specialistica in Ingegneria Informatica.
Servizio di newsgroup con replicazione dei server Studente: Letizia Cheng Cheng Sun Matricola: Reti di Calcolatori LS – Prof. A. Corradi A.A. 2003/2004.
MUSE 2 WIFI MUSic Everywhere with WIFI presentazione di Pierangeli Diego Membri del gruppo: Bambini Stefano Bergamini Andrea Pierangeli Diego AA 2006/2007.
R.E.V.E.N.G.E. RELIABLE AND VERSATILE NEWS DELIVERY SUPPORT FOR AGENCIES Corso di Reti di Calcolatori LS – AA Professore: Antonio Corradi Referente.
Proxy-based infrastructure for LBS availability Bucco Nicola matr
Middleware per la sincronizzazione di ambienti eterogenei Progetto di Reti di Calcolatori LS Emanuele Crescentini matr Ingegneria Informatica LS.
1 RE.VE.N.GE CORBA REliver and VErsatile News delivery support for aGEncies. Sistema per la creazione di notizie e la loro trasmissione sul sistema di.
Progetto RE.VE.N.GE. MQ REliable and VErsatile News delivery support for aGEncies Sistema di Distribuzione Reti di Calcolatori LS – Prof. Antonio Corradi.
Reti di Calcolatori LS - Fabio Poli 15 Giugno 2006 Sviluppo di un player di Campo Minato multigiocatore con supporto di Chat MultiCast.
Live auction un’ infrastruttura di supporto per aste in tempo reale basata su JMS. Autore: Andrea Ceruti Matricola: Corso: Reti Di Calcolatori.
JDICS Java Dynamic Infrastructure for C/S systems Laura Galli matr Reti di calcolatori LS, Prof. A.Corradi A.A
Mots, programmazione collaborativa di Ettore Ferranti.
Reti di Calcolatori L-S Professor Antonio Corradi A.A Sistema Publish-Subscribe per la Gestione degli Eventi della Provincia di Rimini Provincia.
Sistemi distribuiti Sistema distribuito indica una tipologia di sistema informatico costituito da un insieme di processi interconnessi tra loro in cui.
Open City Platform è un progetto finanziato da Application Store Tutorial 30/09/2015.
Introduzione alle Classi e agli Oggetti in Java 1.
Android Intent, AlertDialog, SharedPreferences. Intents.
Controlli. ActionSheet e Alert Selezionare un’azione In molte situazioni è necessario fornire all’utente una scelta fra varie azioni disponibili. per.
Transcript della presentazione:

A Reliable Message Oriented Middleware based on Publish and Subscribe paradigm Mirko Matoffi a.a. 2003/2004

Message Oriented Middleware Middleware basato sullo scambio di messaggi caratterizzato da: forte disaccoppiamento tra le entità in gioco asincronicità persistenza supporto naturale alla comunicazione many-to-many altamente scalabile Tipicamente due tipologie di comunicazione: Message Queuing modello point-to-point Publish and Subscribe modello many-to-many (topic-based o content-based)

Connection Session Connection Factory Publisher Subscriber Topic crea invia riceve Architettura Logica (JMS)

Publisher Client Subscriber Client Topic Publish message TopicProxy Subcribe / Unsubscribe Message delivery DB Connection Factory Client getConnection()

Procedura di amministrazione NAMESPACE Topic1 Topic2 Topic3 Connection Factory 1: bind Client 2: lookup Message Service Provider 3: connection Sistema di Nomi

Server Attivo Topic1 Topic2 CF Client1 Client2 Server Passivo Stato Server Attivo Canale di Coordinazione Canale di HeartBeating DB Configurazione Cluster

Server Attivo Topic1 Topic2 CF Client1 Client2 Server Passivo Canale di Coordinazione Canale di HeartBeating DB Failure Topic1 Topic2 CF Failover

Canale di coordinamento Connessione attiva tra il server primario ed il server in standby attraverso la quale vengono inviate le informazioni di stato in modo da mantenere aggiornato il server secondario Un Topic!?!

Infrastruttura di Heartbeat (1) necessaria per monitorare il corretto funzionamento di una risorsa basata sullinvio di un messaggio di Alive inviati con una predeterminata frequenza da un apposito componente ad indicare il che tutto è ok in caso di mancata ricezione del messaggio per un certo periodo, è necessario informare un sistema di recovery che dovrà assumere le adeguate contromisure necessita di un canale di comunicazione Un Topic!!?

Infrastruttura di Heartbeat (2) Quella descritta in precedenza è unarchitettura del tutto generale che può essere utilizzata da qualunque applicazione necessiti di una simile funzionalità Nel nostro sistema questa infrastruttura viene realizzata imponendo al server in standby di registrarsi presso lapposito Topic LActivation Procedure non fa altro che caricare lo stato precedentemente salvato in modo da preparare il nuovo server a rispondere alle richieste degli utenti Quanti Server in stand-by?

Applicazione Server attiva Affinchè larchitettura Cluster progettata funzioni, allo startup il processo active server deve: 1. creare e registrare lHeartbeatTopic 2. creare un publisher relativo a questo topic ed impostarlo correttamente per linvio di messaggi di Im Alive 3. creare un oggetto HeartbeatPublisher che, utilizzando il publisher appena creato, invii i messaggi con una certa frequenza 4. creare e registrare un CoordinationTopic 5. creare un publisher associato ad esso 6. inviare tramite questo publisher un messaggio ogni volta cambia lo stato sul server inviando le nuove informazioni

Applicazione Server Passiva Affinchè larchitettura Cluster progettata funzioni, allo startup il processo standby server deve: 1. creare una connessione con il server attivo tramite la ConnectionFactory 2. creare una sessione con lHeartbeatTopic 3. creare un Subscriber per ricevere i messaggi provenienti dal topic in questione 4. creare un HeartbeatSubscriber che controlli la frequenza di arrivo dei messaggi e, in caso di anomalia, invochi la procedura di Recovery 5. creare una sessione con per il CoordinationTopic 6. creare un Subscriber per ricevere i messaggi provenienti da esso

Struttura di un messaggio Header Destinazione: nome del Topic MessageID: identificativo univoco di un messaggio CorrelationID: id del messaggio di riferimento DeliveryMode: Persistente o Non-Persistente Timestamp: ora di invio Expiration: istante di fine validità Priority: priorità del messaggio (da 0 a 9) MessageProperties insieme di proprietà di tipo nome-valore possibilità di inviare oggetti possiblità di fungere da selettore di un messaggio Body Testo del messaggio Oggetto java.lang.String compatibile con XML

Stringa Messaggio Publisher Session Connection Send Message to Topic Client Application Topic1 Topic2 CF Lookup topic Name Registry Topic Send Message Server Application Invio di un Messaggio

Client Application Server Application Topic Subscriber TopicProxy New Message Message IMessageObserver Message Ricezione di un messaggio

… quale connessione? Larchitettura ed i protocolli finora esposti valgono per qualunque tipo di connessione si voglia utilizzare; loggetto responsabile che incapsula tutta la logica di connessione è loggetto Connection Possibilità di fornire allutente più tipologie di connessione per inviare un messaggio aumentando così laffidabilità del sistema

Java RMI Con questa tecnologia loggetto Connection non deve far altro che effettuare un lookup sul Registry per ritrovare il riferimento remoto al Topic interessato ed invocare lappropriato metodo (interfaccia ITopicRMI) Il ClientConnectionManager dovrà invece recuperare il riferimento alloggetto ConnectionFactory per poter poi creare un oggetto Connection tramite lapposito metodo (interfaccia IConnectionFactoryRMI)

IConnectionFactoryRMI e ITopicRMI public interface IConnectionFactoryRMI extends Remote { public Connection createConnection(String userName, String password) throws RemoteException; } public interface ITopicRMI extends Remote { public boolean publish(Message message, String user) throws RemoteException; public boolean removeSubscriber(String user) throws RemoteException; public boolean subscribe(String user, IClientRMI client) throws RemoteException; public boolean setImOnLine(String user, IClientRMI client) throws RemoteException; }

RMI Callback (IClientRMI) Come mostrato precedentemente, la comunicazione non avviene soltanto dal Client verso il Server, ma anche nel verso opposto. In particolare il TopicProxy dovrà utilizzare il riferimento remoto fornito dal Subscriber in fase di sottoscrizione per passargli il nuovo messaggio arrivato public interface IClientRMI extends Remote { public boolean newMessage(Message m) throws RemoteException; public String getClientID() throws RemoteException; }

La classe Subscriber public class Subscriber extends UnicastRemoteObject implements IClientRMI, ILocalMessageRecipient{ public boolean newMessage(Message m) throws java.rmi.RemoteException { messages.addElement(m); for(int i=0; i<observers.size(); i++){ ((IMessageObserver)observers.get(i)).onMessage(m); } return true; } public void attach(IMessageObserver mo){ observers.addElement(mo); } public void detach(IMessageObserver mo){ observers.removeElement(mo); } … }

La classe Connection Responsabile della comunicazione tra Client e Server Effettua il lookup Salva localmente i riferimenti ai topic utilizzati in modo da non appesantire il Registry Deve gestire un eventuale failover del Server In caso di errore di connessione si rivolge al ClientConnectionManager chiedendo di trovare la nuova locazione del Server e di comunicargliela Gestione del refresh delle cache degli indirizzi a carico del Client

Tool di amministrazione

Possibili sviluppi Introduzione di un sistema di discovery Uso di SOAP per una maggiore interoperabilità Implementazione di politiche di sicurezza Implementazione del Message Queueing Sottoscrizioni di tipo Topic-based Rendere il middleware adattativo