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