Un sistema Un sistema software per la software per la vendita di vendita di prodotti prodotti on-line on-line Università degli studi Università degli studi di Bologna di Bologna Facoltà di ingegneria Facoltà di ingegneria Reti di calcolatori L- Reti di calcolatori L- S S Studente: Rinaldi Studente: Rinaldi Francesco Francesco Matricola 0900011421 Matricola 0900011421 Anno Accademico 2003/2004 Anno Accademico 2003/2004
16
Embed
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.
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Un sistema Un sistema software per la software per la
vendita di prodotti vendita di prodotti on-lineon-line
Università degli studi di Università degli studi di BolognaBologna
Facoltà di ingegneriaFacoltà di ingegneria
Reti di calcolatori L-SReti di calcolatori L-S
Studente: Rinaldi FrancescoStudente: Rinaldi Francesco
Matricola 0900011421Matricola 0900011421
Anno Accademico 2003/2004Anno Accademico 2003/2004
Acquisti on-lineAcquisti on-line
Cliente
tempi di risposta accettabili
Sicurezza dell’acquisto
disponibilità del servizio
Azienda
soddisfacimento del cliente
prevenzione di guasti
qualità del servizio
Sistema SoftwareSistema Software Inserimento acquisti nel Inserimento acquisti nel
carrellocarrello Cancellazione acquisti dal Cancellazione acquisti dal
carrellocarrello Visualizzazione acquisti in Visualizzazione acquisti in
ordine di costoordine di costo Visualizzazione acquisti per Visualizzazione acquisti per
data di immissionedata di immissione Salvataggio acquisti su un Salvataggio acquisti su un
supporto di memorizzazionesupporto 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-Modello publish-and-subscribesubscribe
Il cambio di stato di un elemento A implica l’invio di una notifica a uno o più componenti dipendenti, di cui A non conosce l’identità 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 BeanI Java BeanUn bean in Java denota una classe di componentiUn bean in Java denota una classe di componenti
ProprietàProprietà
PersonalizzabilitàPersonalizzabilità
EventiEventi
IntrospezioneIntrospezione
PersistenzaPersistenza
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 reteArchitettura di reteLivelli dell’architettura di Livelli dell’architettura di
reterete Livello applicativoLivello applicativo Livello di servizioLivello di servizio ReteRete Livello ServerLivello Server
Tipi di server in esecuzioneTipi di server in esecuzione Server dell’utenteServer dell’utente Server di sistemaServer di sistema Server di supportoServer di supporto
Architettura logicaArchitettura logica
BeanControllo
Bean di
elenco
Beandel
costo
Bean di
elencoAdapterElenco
AdapterCosto
ListenerCosto
ListenerElenco2
ListenerElenco1
Azione Login
Azione SaveAzione 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
L’elenco 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 replicazioneTecnica di replicazione
BeanControllo Azione LoadBean del
costo
Bean di
Elenco
Azione Load
Azione LoadBeanControllo
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 Gestore del Bean di ControlloControllo
ListenerLogin
GestoreServizi
BeanControllo1
BeanControllo2BeanControllo3
GeneratoreCopie
GestoreBeanControlloAutenticatore
1 – richiesta nome Bean di controllo
Nodo Client
7 – crea
6 – nome Bean3 – crea
4 – crea
2 – connect
5 – nome Bean
8 – connect
ThreadPolling 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 attivacopia attivacopia attiva
Politica di prevenzione ai Politica di prevenzione ai guastiguasti
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 passiveAggiornamento eager delle copie passive il crash su una copia attiva del bean di controllo non il crash su una copia attiva del bean di controllo non
impedisce l’aggiornamento delle copie passive restanti.impedisce l’aggiornamento delle copie passive restanti.
Politica di prevenzione ai Politica di prevenzione ai guastiguasti
Il protocollo è correttoIl protocollo è corretto se se ogni copia passiva del bean di controllo conosce le copie ogni copia passiva del bean di controllo conosce le copie
candidate attive candidate attive altrimenti una copia può aspettare indefinitamente un codice da altrimenti una copia può aspettare indefinitamente un codice da
parte di una istanza passiva che potrebbe esser andata in crash. parte di una istanza passiva che potrebbe esser andata in crash.
La creazione delle copie fittizieLa creazione delle copie fittizie (bean di (bean di controllo, bean del secondo elenco, bean del costo) controllo, bean del secondo elenco, bean del costo) evita l’attivazione di più bean di controllo fittizi evita l’attivazione di più bean di controllo fittizi nasconde la fase di elezione nasconde la fase di elezione
Server di namingServer di naming
GestoreNaming1 GestoreNaming2 GestoreNaming3
RilevatoreStatoGestori
NamingObject
1 – arrivo richiesta
2 – crea
stato stato stato
3 – memorizzazione richiesta in coda
4 – 102 : //156.7.0.98/gestorenaming3
L’accesso 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 l’elenco delle stringhe di connessione associate ai server che forniscono il servizio richiesto
Codice prenotazione: indirizzo server
Server di Accesso Server di Accesso all’archivio all’archivio
GestoreArchivio
RichiestaAccesso CoordinatoreArchivio1
Archivio2
Archivio3
Coordinatore
Coordinatore
Coordinatore
coordinazione
RichiestaAccesso
RichiestaAccesso
RichiestaAccesso
L’archivio 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 dell’archivio riduce i tempi medi di attesa in coda
il gestore dell’archivio 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 autenticazioneServer di autenticazione
Autenticatore
GestoreRecRisultati
ServizioAutenticazione
ServizioAutenticazioneServizioAutenticazione
GeneratoreCopie
GestoreCopieAutenticatriciNamingObject
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à all’utente di accedere al carrello dei prodotti:
l’entità di servizio Autenticatore nasconde i dettagli della fase di login all’applicazione.
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
PrototipoPrototipoUn primo prototipo del sistema è stato sviluppato in Java, di conseguenza le invocazioni remote sono state implementate tramite Java RMI.
un’applicazione esterna consente di visualizzare lo stato dei server e degli oggetti registrati nel registry
la simulazione di un crash di un componente è ottenuta effettuando un’operazione di unbind
ipotesi: i guasti non si verificano mai durante l’esecuzione di una richiesta specificata dal client
ConclusioniConclusioni
Il sistema non fa alcuna Il sistema non fa alcuna ipotesi sui tempi di rispostaipotesi sui tempi di risposta a a fronte di una richiesta del cliente:fronte di una richiesta del cliente: politiche di politiche di load balancingload balancing tra i gestori di naming tra i gestori di naming ridurreridurre il numero di il numero di invocazioniinvocazioni sul gestore di nomi sul gestore di nomi
Ulteriori sviluppi futuri includono l’introduzione di:Ulteriori sviluppi futuri includono l’introduzione di: procedure più complesse per il procedure più complesse per il recovery ai guastirecovery ai guasti gestione delle gestione delle transazionitransazioni accessi multipliaccessi multipli dello stesso utente da diversi client dello stesso utente da diversi client