Producer – Consumer
System
Di Carlo Matteo 195111 CdLS Ingegneria
Informatica (0234)
Reti di Calcolatori LS
A.A. 2004/2005
Modello semantico del
sistema – «store and forward»
Producer
Queue
Consumer
Consumer
I consumatori sono scelti
arbitrariamente…
Consumer
Obiettivi e ipotesi di progetto

Modello di replicazione passiva con
copie calde




permetta ad ogni cliente di usufruire dei servizi,
permetta ad applicazioni diverse, in generale di
linguaggi differenti, di fruire il sistema,
sia tollerante ai guasti,
operazioni tipiche per la gestione di cluster per
alta disponibilità






monitoraggio dei servizi,
migrazione del servizio,
controllo dello stato dei nodi;
garantisca qualità del servizio,
garantisca qualche forma di sicurezza.
Ipotesi di guasto singolo
Client-Proxy-Server
Client
Application
Client Portion
Client/Proxy
Interface

Public
Interface
Proxy
Application
Proxy Portion
Server
Request
Result
Application
Server Portion
Relazione client/proxy:




Proxy
Interface
Stessa applicazione
Proxy come modulo del SO
Proxy come server nella rete locale
Public interface:

in generale questa interfaccia potrebbe anche
non essere pubblica; nel caso specifico si fa
riferimento a proxy che utilizzano interfaccia
definite da protocolli di uso comune come per
esempio http.
Modello generale del sistema
Proxy
Client
Client
Master
Client
Slave
Come conosce i server?
Nei parametri di
configurazione
del proxy
Proxy
ci deve essere almeno
l’indirizzo del master Slave
Client
Client
Client
Architettura Server – parte 1
ServiceManager
StateManager
AddressManager
HotStandByManager
SenderLiveManager
ReceiverLiveManager
RecoveryManager
Sender
Receiver
Architettura server – parte 2

ServiceManager : oggetto remoto a cui il proxy rivolge le sue
richieste;
 Caso Mastersempre attivo;
 Caso slave pronto per essere attivato se primo slave,
altrimenti comunque aggiornato;
AddressManager : memorizza gli indirizzi della catena;
 responsabile dell’ingresso nella catena da parte di uno slave ;
 fornisce a tutti gli altri manager le informazioni necessarie per
la comunicazione con i server pari;
StateManager : mantiene aggiornato lo stato della copia slave
collegata al server;
 devono essere inviati aggiornamenti man mano che arrivano
richieste da parte dei clienti;
Heartbeat:
 SenderLiveManager: manda messaggi a cadenze regolari di
tempo al suo master del tipo “are you alive?”;
 ReceiverLiveManager: arrivato il messaggio di “are you
alive?”, da parte del suo slave, risponde con un messaggio di
“alive”;
RecoveryManager : responsabile del recovery di un guasto;
Sender e Receiver : gestiscono i canali di comunicazione;

HotStandByManager: coadiuvante di tutti i manager.





Code e Messaggi – parte 1

gestione delle code dei messaggi è
delegata dal serviceManager (incarico di
prendere le richieste dei proxy) al
queueManager;

Code: serie di liste ordinate di messaggi, in
cui ogni lista ha una propria priorità
(utilizzata nello smistamento dei
messaggi);


persistenti e non persistenti (in fase di sviluppo)
Il messaggio è un dato composto da:



un sender: colui che invia il messaggio;
uno o più recipient: i destinatari del messaggio
(possibilità di avere destinatari particolari);
un contenuto: nella semantica java, possiamo
definire il contenuto come un qualsiasi oggetto
serializzabile.
Code e Messaggi – parte 2

Le operazioni che possono essere
effettuate dal cliente sono:







aggiunta di una coda;
rimozione di una coda;
produzione di un messaggio: deve
essere specificato in quale coda dovrà
essere inserito il messaggio e con quale
priorità;
consumo di un messaggio: viene
prelevato e rimosso dalla coda specifica
il messaggio più prioritario;
ottenere una lista delle code presenti;
chiedere se esiste una certa coda;
chiedere se esistono messaggi in una
certa coda.
Protocolli di comunicazione



La comunicazione avviene sempre
a catena dal master fino all’ultimo
slave;
Comunicazione tra manager: ogni
manager gestisce una serie di
variabili che sono visibili a tutti gli
altri manager ma che non possono
essere modificate da loro(manager
delle code escluso);
Comunicazione tra client, proxy e
master: varie possibilità


Client-proxy: comunicazione locale,
remota;
Proxy-server: comunicazione remota.
Comunicazione a catena
Message
Master
Slave
Message
Slave
Comunicazione di ingresso
slave
2. New Address Chain
Master
Slave
2. New Address Chain,
queues
3. connection
1. Entry:
hostname, port
New Slave
Aggiornamento stato
Request:
produce
Message
Proxy
Client
Client
Client
Request:
produce
Message
Request:
produce
Message
Master
Aggiornamento
stato
Aggiornamento
stato
Slave
Comunicazione di vita:
heartbeat
1. Are you
alive?
Master
1. Are you
alive?
Slave
2. Alive
Se entro un certo tempo
non mi risponde:
MORTE MASTER
Slave
2. Alive
Se entro un certo tempo
non mi chiede nulla:
MORTE LAST SLAVE
Crash o caduta del master
New Address chain
Master
Slave
1.Morte master
2. Divento il nuovo master
3. Mando la nuova Address
chain
Slave
Crash o caduta di uno slave
2. Recovery, new Address
chain
Master
3. New Address
chain
Slave
Slave
Slave
4. New Address
chain
1. Morte slave
Crash o caduta dell’ultimo
slave
Master
3. Recovery, New Address
chain
4. New Address
chain
Slave
Slave
Slave
4. New Address
chain
1.Morte ultimo slave
2. Divento il nuovo ultimo slave
3. Mando la nuova Address chain
al master
Errori interni
Master
Winner
Queue
2. Conteiner
queue
2. Send Conteiner
queue
3. Send Winner
Queue
Winner
Queue
Winner
Queue
+ my queue
Slave 1
2. Conteiner
queue
Slave 2
Conteiner
queue
Slave 3
+ my queue
1.
2.
Problemi con una certa
coda…
Mando conteiner queue
Prototipo






Ambiente di sviluppo: java;
Manager: classi java e solo alcuni di loro sono
thread;
Comunicazione tra i server: socket stream;
Per ogni canale di comunicazione: thread receiver
+ switcher per la distribuzione del messaggio ai
manager(interfaccia IListener);
Il proxy comunica con il master attraverso java RMI;
Oggetti presenti nell’rmiregistry: serviceManager e
il Chain




serviceManeger: servizio delle code;
Chain: permette al proxy di avere informazioni su tutta
la catena dei server;
Il proxy è stato implementato come un classe
appartenente all’applicazione client;
Configurazione server e proxy: file xml (esempio)
Conclusioni e sviluppi futuri

Obiettivi rispettati




QoS nella consegna dei messaggi e
interazione tra server
Tolleranza ai guasti
Cluster per alta disponibilità
Sviluppi futuri

Sicurezza:




utenti con diritti
Comunicazioni sicure
DNS
Politiche di filtro dei messaggi
Scarica

presentazione