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 Francesco Matricola Anno Accademico 2003/2004
Acquisti on-line Cliente tempi di risposta accettabili Sicurezza dellacquisto disponibilità del servizio Azienda soddisfacimento del cliente prevenzione di guasti qualità del servizio
Sistema Software Inserimento acquisti nel carrello Inserimento acquisti nel carrello Cancellazione acquisti dal carrello Cancellazione acquisti dal carrello Visualizzazione acquisti in ordine di costo Visualizzazione acquisti in ordine di costo Visualizzazione acquisti per data di immissione Visualizzazione acquisti per data di immissione Salvataggio acquisti su un supporto di memorizzazione Salvataggio acquisti su un supporto di memorizzazione Il sistema software terrà conto di modelli di comunicazione remota: modello publish and subscribe, modello callback replicazione di servizi tramite copie attive e passive politiche di sincronizzazione per l accesso ad una risorsa condivisa tecniche di load sharing
Modello publish-and-subscribe Il cambio di stato di un elemento A implica linvio di una notifica a uno o più componenti dipendenti, di cui A non conosce lidentità a priori. Si distinguono due categorie di oggetti: soggetti e osservatori. Un soggetto (o publisher) può essere associato a zero o pıù osservatori (o subscribers), ciascuno dei quali riceve una notifica ad ogni modifica di stato del soggetto.
I Java Bean Un bean in Java denota una classe di componenti Proprietà Proprietà Personalizzabilità Personalizzabilità Eventi Eventi Introspezione Introspezione Persistenza Persistenza Proprietà accessibili con metodi setXXX() e getXXX() Rappresentazione grafica esterna modificabile con un ambiente di lavoro sorgenti di eventi di tipo specifico Memorizzazione del bean in una forma personalizzata Rilevamento dinamico di proprietà, metodi e eventi supportati
Architettura di rete Livelli dellarchitettura di rete Livello applicativo Livello applicativo Livello di servizio Livello di servizio Rete Rete Livello Server Livello Server Tipi di server in esecuzione Server dellutente Server dellutente Server di sistema Server di sistema Server di supporto Server di supporto
Architettura logica BeanControllo Bean di elenco Bean del costo Bean di elenco AdapterElenco AdapterCosto Listener Costo Listener Elenco2 Listener Elenco1 Azione Login Azione Save Azione Insert Azione Logout Azione Remove 1 - registrazione 2 – arrivo di un evento 3 - notifica evento 4 - notifica evento 5 - notifica evento 9 - notifica evento 6 - notifica evento 8- notifica evento 10 - notifica evento 11 - notifica evento 7 - notifica evento Lelenco degli acquisti è stato modellato con due Bean a cui sono associati ordinamenti diversi Il bean del costo calcola la somma dei prezzi di tutti i prodotti presenti nel carrello
Tecnica di replicazione BeanControllo Azione Load Bean del costo Bean di Elenco Azione Load BeanControllo Bean di Elenco Bean del 2° Elenco Bean di Elenco Bean del 2° Elenco Bean del 2° Elenco Bean del costo Bean del costo Nodo del Bean del costo Nodo del Bean di Controllo Nodo del bean del 2° Elenco Evento Load Replicazione a copie passive server di sistema: una copia attiva e una copia passiva aggiornate in modalità eager Bean di controllo, bean di elenco, bean del costo: una tripla di copie attive e due triple di copie passive aggiornate in modalità eager
Gestore del Bean di Controllo ListenerLogin GestoreServizi BeanControllo1 BeanControllo2 BeanControllo3 GeneratoreCopie GestoreBeanControllo Autenticatore 1 – richiesta nome Bean di controllo Nodo Client 7 – crea 6 – nome Bean 3 – crea 4 – crea 2 – connect 5 – nome Bean 8 – connect ThreadPolling Ad ogni copia passiva del bean di controllo è associato un processo che rileva, ad intervalli regolari di tempo, lo stato di tutte le istanze associate alla copia attiva (Bean di controllo, Bean del secondo elenco, Bean del costo) e delle istanze associate alle copie passive. Il bean di controllo si presenta come un entità senza stato che notifica un evento alle azioni registrate: le singole copie rimangono in esecuzione per tutta la sessione utente
copia attiva Politica di prevenzione ai guasti BeanControllo1Bean del Costo1Bean 2°Elenco1 BeanControllo1 (BeanControlloFalso) BeanControllo2BeanControllo3 Fase di elezione BeanControllo1 (BeanControllo2) GestoreServizi BeanControllo1 1 – crash copia attiva2 – eliminazione copia3 – eliminazione copia 4 – crea copia fittizia 5 – elezione copia attiva 6 – inizializzazione 7 – invio richieste memorizzate 8- aggiornamento archivio Tecnica di recovery guasti su istanze attive: eliminazione delle istanze rimanenti associate alla copia attiva, fase di elezione guasti su istanze passive: eliminazione delle istanze rimanenti associate alla copia passiva Fase di elezione scambio dei codici identificativi tra tutte le copie passive del bean di controllo elezione della nuova copia attiva (copia con il codice minore) recupero eventi memorizzati nel Bean di controllo fittizio
Aggiornamento eager delle copie passive Aggiornamento eager delle copie passive il crash su una copia attiva del bean di controllo non impedisce laggiornamento delle copie passive restanti. il crash su una copia attiva del bean di controllo non impedisce laggiornamento delle copie passive restanti. Politica di prevenzione ai guasti Il protocollo è corretto se Il protocollo è corretto se ogni copia passiva del bean di controllo conosce le copie candidate attive ogni copia passiva del bean di controllo conosce le copie candidate attive altrimenti una copia può aspettare indefinitamente un codice da parte di una istanza passiva che potrebbe esser andata in crash. altrimenti una copia può aspettare indefinitamente un codice da parte di una istanza passiva che potrebbe esser andata in crash. La creazione delle copie fittizie (bean di controllo, bean del secondo elenco, bean del costo) La creazione delle copie fittizie (bean di controllo, bean del secondo elenco, bean del costo) evita lattivazione di più bean di controllo fittizi evita lattivazione di più bean di controllo fittizi nasconde la fase di elezione nasconde la fase di elezione
Server di naming GestoreNaming1GestoreNaming2GestoreNaming3 RilevatoreStatoGestori NamingObject 1 – arrivo richiesta 2 – crea stato 3 – memorizzazione richiesta in coda 4 – 102 : // /gestorenaming3 Laccesso ad un gestore di naming avviene tramite il NamingObject, una entità di servizio che dopo aver recuperato la lista di gestore di Naming disponibili accede ad un gestore in modo pseudocasuale. in caso di guasto, il NamingObject procede ad inviare la richiesta ad un altro gestore disponibile Il gestore di Naming accetta in ingresso il tipo di gestore a cui si vuole accedere e ritorna lelenco delle stringhe di connessione associate ai server che forniscono il servizio richiesto Codice prenotazione: indirizzo server
Server di Accesso allarchivio GestoreArchivio RichiestaAccesso Coordinatore Archivio1 Archivio2 Archivio3 Coordinatore coordinazione RichiestaAccesso Larchivio tiene traccia degli ordini effettuati da un cliente ed è localizzato su tre file: il recupero e la modifica delle informazioni include una fase di coordinamento tra le singole richieste che accedono alla risorsa. la suddivisione dellarchivio riduce i tempi medi di attesa in coda il gestore dellarchivio genera un processo per ogni richiesta di accesso il protocollo di sincronizzazione basato sull ordinamento dei tempi logici di Lamport coinvolge solo i coordinatori è fondamentale rilevare lo stato della Richiesta di accesso che utilizza al momento la risorsa
Server di autenticazione Autenticatore GestoreRecRisultati ServizioAutenticazione GeneratoreCopie GestoreCopieAutenticatrici NamingObject 1 – richiesta indirizzi IP 2 – indirizzi liberi Nodo Client 3 – crea 4 – connect 5 – crea 6 – crea 7 – recupera nome del cliente La fase di autenticazione permetterà allutente di accedere al carrello dei prodotti: lentità di servizio Autenticatore nasconde i dettagli della fase di login allapplicazione. Un guasto su una delle copie non compromette la fase di autenticazione tecnica alternativa: fase di coordinamento tra le copie prima del rilascio del risultato
Prototipo Un primo prototipo del sistema è stato sviluppato in Java, di conseguenza le invocazioni remote sono state implementate tramite Java RMI. unapplicazione esterna consente di visualizzare lo stato dei server e degli oggetti registrati nel registry la simulazione di un crash di un componente è ottenuta effettuando unoperazione di unbind ipotesi: i guasti non si verificano mai durante lesecuzione di una richiesta specificata dal client
Conclusioni Il sistema non fa alcuna ipotesi sui tempi di risposta a fronte di una richiesta del cliente: Il sistema non fa alcuna ipotesi sui tempi di risposta a fronte di una richiesta del cliente: politiche di load balancing tra i gestori di naming politiche di load balancing tra i gestori di naming ridurre il numero di invocazioni sul gestore di nomi ridurre il numero di invocazioni sul gestore di nomi Ulteriori sviluppi futuri includono lintroduzione di: Ulteriori sviluppi futuri includono lintroduzione di: procedure più complesse per il recovery ai guasti procedure più complesse per il recovery ai guasti gestione delle transazioni gestione delle transazioni accessi multipli dello stesso utente da diversi client accessi multipli dello stesso utente da diversi client