Reti di Calcolatori LS REALIZZAZIONE DI UN SERVIZIO DI ANNUNCI DISTRIBUITO Studente: Ludovisi Cesidio Matricola: 0000169645 Aprile 2004 Reti di Calcolatori LS – Servizio di Annunci Distribuito 1 INTRODUZIONE Abstract: • descrizione generale del progetto • maggiore approfondimento sulla parte implementativa Lo scopo del progetto è quello di realizzare un servizio di annunci distribuito che consenta ad un cliente di: • inserire un nuovo annuncio • trovare annunci di interesse Obiettivi: Aprile 2004 • decentralizzazione della architettura • dinamicità della architettura • gestione della fault tollerance • gestione Qos • efficienza del servizio Reti di Calcolatori LS – Servizio di Annunci Distribuito 2 DESCRIZIONE DEL SISTEMA Il sistema è composto da un certo numero di nodi che formano il core del servizio Il servizio consiste nel gestire un insieme di annunci in modo distribuito Quindi un utente può: • inserire un annuncio su un nodo (asincrono) • trovare annunci di interesse su un nodo (sincrono bloccante - callback) • trovare annunci di interesse su l’insieme dei nodi (sincrono bloccante - callback) Inoltre si svolge la gestione dinamica del binding di nuovi nodi: • bind di un nuovo nodo (sincrono bloccante) • unbind di un nodo (asincrono) Aprile 2004 Reti di Calcolatori LS – Servizio di Annunci Distribuito 3 ARCHITETTURA LOGICA CORE del Servizio 1LevelRegistry 2LevelRegistry server_ID 1 AnnouncementService server_ID 2 BindingSevice server_ID N SLAVE NODO i Aprile 2004 Reti di Calcolatori LS – Servizio di Annunci Distribuito MASTER DB DB 4 ANNOUNCEMENT SERVICE Servizio Locale (lettura - inserimento) 1) readLocal / insert 2) read / write DataBase Nodo 2 host Nodo2 port registry2 Nodo2 bloccante – callback - asincrono Aprile 2004 Reti di Calcolatori LS – Servizio di Annunci Distribuito 5 ANNOUNCEMENT SERVICE Servizio Distribuito (lettura) 1) readAll 4) read DataBase Nodo 2 5) announcements 2) readLocal host Nodo2 3) readLocal port registry2 Nodo2 bloccante - callback Aprile 2004 Reti di Calcolatori LS – Servizio di Annunci Distribuito 6 BINDING SERVICE (1/2) registry 1 level 10) verify 9) update 6) verify registry 1 level registry 1 level 8) bindLocal 2) update 5) update 4) bindLocal 3) update 7) update ? 11) update ? Aprile 2004 registry 1 level 1) bindAll host NodoN port registry2 NodoN Reti di Calcolatori LS – Servizio di Annunci Distribuito 7 BINDING SERVICE (2/2) registry 1 level registry 1 level registry 1 level registry 1 level Aprile 2004 Reti di Calcolatori LS – Servizio di Annunci Distribuito 8 GESTIONE QoS QoS: • differenziazione del servizio • azioni preventiva per evitare congestione Servizio Locale (lettura - inserimento) Servizio Distribuito (lettura) Aprile 2004 Pay thmax Free Pay thmin Free Pay Free n° utenti contemporanei n° utenti contemporanei Full thmax PAY QUEUE Pay Empty Free Pay thmin Reti di Calcolatori LS – Servizio di Annunci Distribuito Free Pay Free 9 GESTIONE FAULT TOLLERANCE Ipotesi: • guasto singolo • probabilità di guasto bassa durante il recovery Gestione Fault Tollerance su tre livelli: • organizzazione gerarchica • replicazione REGISTRY OGGETTO SERVER MEMORIA STABILE Aprile 2004 • Master / Slave • modello a copia fredda • timestamp condiviso • gestione della consistenza delle copie • scrittura: • prima su copia 1 poi su copia 2 • lettura: • lettura da copia 1 lettura da copia 2 • confronto ricovery se necessario Reti di Calcolatori LS – Servizio di Annunci Distribuito 10 IMPLEMENTAZIONE DEL SISTEMA (1/5) Scelte Realizzative: • • • • uso di Java RMI database realizzati mediante file XML configurazione dei server mediante file XML programmazione concorrente attraverso Thread Considerazioni Introduttive sulla Implementazione: • attenzione concentrata su protocolli e politiche di gestione • rilassati vincoli di efficienza: uso di SAX per il parsering dei file XML Aprile 2004 Reti di Calcolatori LS – Servizio di Annunci Distribuito 11 IMPLEMENTAZIONE DEL SISTEMA (2/5) Setting IAnnouncementClient AnnouncementClientApplication ClientThread AnnouncementClientImpl AnnouncementServerApplication IAnnouncementServer BindingServerApplication callback gestisce CheckThreadMaster AnnouncementMaster lancia AnnouncementServerImpl usa Announcement MemoryManager lancia updateTimestamp ReadThread crea AnnouncementServer MasterCheckTimestamp crea lancia UnbindThread masterCheck lancia AnnouncementSlave PerticipationRequestImpl lancia CheckThreadSlave BindThread IParticipationRequest Java Package: announcement.execution announcement.application announcement.application.rmiInterface announcement.application.implementation announcement.application.thread Aprile 2004 Reti di Calcolatori LS – Servizio di Annunci Distribuito 12 IMPLEMENTAZIONE DEL SISTEMA (3/5) componenti che implementano le interfacce RMI remote Osservazioni: • Qos gestita attraverso i metodi di prologo ed epilogo • parallelismo realizzato attraverso le classi: ReadThread, BindThread, UnbindTread • gestione della “Memoria Stabile” attraverso il componente MemoryManager (read, write) Aprile 2004 Reti di Calcolatori LS – Servizio di Annunci Distribuito 13 IMPLEMENTAZIONE DEL SISTEMA (4/5) Realizzazione del Modello di Replicazione Master / Slave: updateTimestamp() Aprile 2004 masterChech() Reti di Calcolatori LS – Servizio di Annunci Distribuito 14 IMPLEMENTAZIONE DEL SISTEMA (5/5) Realizzazione del gestore del nodo: Responsabilità del componente: • parsering del file XML di configurazione del nodo • inizializzazione dei registry di primo e secondo livello • creazione dell’oggetto Master e di quello Slave • creazione dei Thread per la sincronizzazione tra Master e Slave Aprile 2004 Reti di Calcolatori LS – Servizio di Annunci Distribuito 15 TEST DEL SISTEMA Fasi: • creazione dei registry: rmiRegistry localhost port • esecuzione dei server dei nodi core del servizio: java announcement.execution.AnnouncementServerApplication serverId • esecuzione di un nuovo nodo che effettua il binding: java announcement.execution.BindingServerApplication host port serverId action • esecuzione dei clienti: java announcement.execution.AnnouncementClientApplication host port action pay ESECUZIONE TEST Aprile 2004 Reti di Calcolatori LS – Servizio di Annunci Distribuito 16 CONCLUSIONI Obiettivi: •decentralizzazione •dinamicità •fault tollerance Progettazione: Vantaggi: • scalabilità • robustezza Svantaggi: • costi • overhead Bilanciamento: • semplicità dei protocolli • non sincronizzazione ridondante • principio di Minima Intrusione Java RMI: • naming service • method invocation • interazione ad alto livello • interfacce del servizio • supporto per la concorrenza • supporto per la comunicazione Aprile 2004 Reti di Calcolatori LS – Servizio di Annunci Distribuito Realizzazione: 17