Corso di Laurea in Ingegneria Informatica L-S
Anno Accademico 2007-2008
Live auction
un’ infrastruttura di supporto
per aste in tempo reale
basata su JMS.
Autore: Andrea Ceruti
Matricola: 0000223986
Corso: Reti Di Calcolatori L-S
Docente: Prof. Antonio Corradi
Introduzione




Live Auction vuole riprodurre l’esperienza di un’ asta in
sala su internet, ovvero ricostruire una sala virtuale
distribuita sul web.
Si è deciso che fosse prioritario permettere alle varie
parti del sistema di lavorare in modo indipendente le une
dalle altre, per quanto possibile.
Sono due le tipologie di utente che interagiscono col
sistema:
 L’ offerente (bidder).
 L’ amministratore (admin).
Ciascuno di questi tipi di utente ha a disposizione una
diversa applicazione per interagire col sistema.
Obiettivi


Applicazione Admin: usata dal battitore dell’
asta, ha come obiettivo quello di fornire
informazioni agli offerenti riguardo i lotti oggetto
dell’ asta e di ricevere da questi informazioni
sulle offerte.
Applicazione Bidder: usata dagli offerenti
distribuiti su diversi nodi. Riceve informazioni sui
lotti oggetto dell’ asta ed ha come obiettivo
quello di fornire informazioni al battitore e agli
altri offerenti sulle relative offerte.
Caratteristiche della comunicazione

Comunicazione push based di tipo molti a molti.


Numero di client non noto a priori.


I partecipanti all’ asta possono essere numerosi.
Asincronicita’:


Sia bidder che admin sono produttori e consumatori di informazioni.
le parti devono poter comunicare con successo anche se non sono tutte
presenti all’atto della comunicazione.
Affidabilita:

la comunicazione deve essere affidabile, anche su reti non affidabili,
così che le informazioni non vengano perse. Un’ evenutale perdita di
informazioni e’ infatti da considerarsi inaccettabile dal momento che i
messaggi rappresentano transazioni economiche.
Infrastruttura Middleware


Considerate le caratteristiche della comunicazione sono state escluse
tecnologie come RMI, RPC che, oltre ad essere sincrone, richiedono
una connessione fisica attiva fra il client e il server.
Un middleware orientato ai messaggi si adatta bene alle
caratteristiche di disaccoppiamento cercate:

permette alle applicazioni di comunicare tramite DESTINAZIONI che non
richiedono la presenza contemporanea di mittente e destinatario affinché la
consegna avvenga con successo;
 permette alle applicazioni di ricevere messaggi in modo asincrono rispetto al
flusso di esecuzione dell’applicazione stessa;
 supporta il modello di gestione dei messaggi publish/subscribe adatto ad una
comunicazione uno a molti o molti a molti.

Le API JMS permettono di accedere ai servizi dei messagging
system

fornendo un metodo standard tramite il quale le applicazioni possono creare,
inviare e ricevere messaggi usando un sistema MOM.
JMS – generalita’


Queue (coda) :
realizza il modello di
comunicazione pointto-point
Topic (topic): realizza
il modello di
comunicazione
publish-subscribe
Architettura logica del sistema


Il nucleo centrale del sistema è composto da un
topic in cui l’ Admin è publisher di un messaggio
chiamato Status contenente le informazioni sui
lotti correnti e i bidder sono i subscriber
interessati a ricevere questo messaggio.
A loro volta i bidder sono publisher di un
messaggio chiamato Bid contenente
informazioni sulle offerte effettuate e l’ Admin è il
subscriber interessato a ricevere questo
messaggio.
Architettura logica del sistema
Struttura dei messaggi
Bidder e Admin creano degli oggetti TextMessage che incapsulano un
documento XML come stringa Java.
<LiveAuctionMessage>
<Action> Bid </Action>
<BidderName> Andrea </BidderName>
<LotId> 1 </LotId>
<Base> 200 </Base>
<Price> 250 </Price>
<Title> moneta romana 2 secolo a.c.
</Title>
</LiveAuctionMessage>
<LiveAuctionMessage>
<Action> Status </Action>
<CurrentLot> 1 </CurrentLot>
<Base> 200 </Base>
<Title> moneta romana 2 secolo a.c.
</Title>
<CurrentPrice> 250 </CurrentPrice>
<CurrentWinner> Andrea
</CurrentWinner>
</LiveAuctionMessage>
Pubblicazione dei messaggi



In fase di pubblicazione il publisher setta il Delivery Mode a
PERSISTENT per evitare la perdita di messaggi in caso di caduta
del provider. Il JMS provider ActiveMQ si occupa di memorizzare i
messaggi in opportune tabelle.
Le sottoscrizioni sono state rese durevoli, in modo da consentire la
ricezione dei messaggi anche se il client non era in ascolto al
momento della generazione del messaggio.
L’identificazione univoca del subscriber consente in caso di crash
del JMS provider e successivo riavvio, di effettuare il resume del
subscriber dallo stato in cui era stato lasciato precedentemente,
riprendendo la ricezione dei messaggi.
Guaranteed Message Delivery
Message Selectors



Vengono specificati in fase di invio del messaggio ed in fase di
creazione del consumatore.
In fase di creazione del messaggio si aggiunge ad esso una string
property di tipo ACTION, il cui valore, settato a ‘bid’ o ‘status’,
identifica l’applicazione interessata alla ricezione del messaggio
stesso.
Dal lato subscriber, in fase di creazione di una sottoscrizione
durevole, il metodo createDurableSubscriber permette di specificare
come argomento il valore del selector: solo i messaggi con property
corrispondente al valore del selector vengono consegnati dal
provider JMS.
l’ onere di filtrare I messaggi spetta al provider JMS:



ottimizzazione del traffico di rete
semplificazione del codice.
Ricezione dei messaggi


La sessione di un subscriber è caratterizzata dalla
modalità AUTO_ACKNOWLEDGE.
Politica della consegna dei messaggi once-and-onlyonce.


ottimizzazione del traffico di rete
Il subscriber definisce un message listener e ridefinisce
il metodo onMessage(). Quando un messaggio arriva
alla destinazione d'interesse, il provider JMS provvede
ad invocare in maniera asincrona il metodo di callback
onMessage(), alla cui esecuzione la sessione riconosce
automaticamente il messaggio.
Servizio di login



Il nucleo centrale del servizio
di login è costituito da due
code unidirezionali,
loginQueue e confirmQueue, e
da due attori, ovvero il Bidder
che si vuole autenticare e un
servizio autenticatore lato
server.
Messaggio di LogIn e
messaggio di Confirm
TimeToLive per entrambi i tipi
di messaggi per evitare che, in
caso di failure del servizio di
autenticazione, non rimangano
messaggi inevasi nelle code.
<LiveAuctionMessage>
<Action> LogIn </Action>
<BidderName> Andrea </BidderName>
<BidderPassword> xxxxx </BidderPassword>
</LiveAuctionMessage>
<LiveAuctionMessage>
<Action> Confirm </Action>
<UserName> Andrea </UserName>
<Token> true </Token>
</LiveAuctionMessage>
High Availability e fault tolerance (1/1)



Provider JMS punto critico per l’
applicazione.
I messaggi vengono replicati su
dei broker slave di modo che, in
caso di fallimento del master, si ha
immediato failover sullo slave
senza perdita di messaggi.
Utilizzando un DB condiviso e
JDBC come connettore si puo’
adottare una configurazione
master/slave eseguendo tanti
broker quanti si ritengono opportuni;
uno slave fornisce un broker hot
stand by sempre sincronizzato,
pronto a prendere posto se il
master s’interrompe in seguito ad
hardware failure.
High Availability e fault tolerance (2/2)

ActiveMQ mette a disposizione funzionalita’ master/slave per
garantire alta disponibilita’ e tolleranza ai guasti

Protocollo Failover: utilizzato dai client per connettersi ad uno degli
URI specificati
(Es: failover:(tcp://broker1:61616,tcp://broker2) )


Il protocolo sceglie casualmente uno degli URI specificati e tenta di
stabilire una connessione con esso, se cio’ non avviene una nuova
connessione viene stabilita con uno degli altri URI.
Per le operazioni di recovery dopo un fallimento un broker
ActiveMQ sfrutta un proprio database ACTIVEMQ da cui recupera:

le destinazioni, la lista di “durable subscriptions”, la lista di “acks” per
ogni messaggio.
Replicated Message Store

JDBC Master/Slave
database unico sistema di
gestione della persistenza,
pertanto singolo punto di
fallimento
 RAIDb combina molteplici
istanze di database in una
matrice di database e fornisce
affidabilità migliore di quella di
un singolo database.
 RAIDb-1: DB completamente
replicato su ogni macchina.


Utilizzando RAIDb-1 si fa riferimento
ad un’astrazione di database che in
realtà è composto da due backends
reali posti su due macchine diverse.
Utilizziamo il driver Sequoia, un
middleware open source che
permette a qualsiasi applicativo di
accedere in maniera trasparente ad
un cluster di database tramite JDBC.
Conclusioni e sviluppi futuri
 L’infrastruttura descritta offre un sistema robusto ed efficiente per la
gestione di aste in tempo reale.
 Consente affidabilità grazie al Guaranteed Message Delivery e alta
disponibilita e tolleranza ai guasti a basso costo.
 Si dimostra efficiente grazie alla modalita’ di consegna once and
only once e all’ ottimizzazione del traffico di rete che si ottiene con
l’utilizzo dei message selectors
 Possibili miglioramenti possono riguardare l’implementazione di
politiche di sicurezza, necessarie dal momento che i messaggi
rappresentano transazioni economiche
Scarica

presentazione