Reti Di Calcolatori LS A.A. 2003/04 Pari Gioia 171376 Vi sono delle operazioni ad alto costo computazionale che i client non sono in grado di svolgere singolarmente in tempo utile e dei server che invece le possono svolgere su richiesta. In questo contesto la capacità computazionale di ciascun server diventa una risorsa preziosa sulla quale i vari client si devono sincronizzare. L'entry point dei server alla rete sarà costituitas dall’entità Monitor che fornirà il frontend ai client per acquisire informazioni sullo stato della rete. Il progetto consiste nella realizzazione di un’applicazione distribuita, realizzata in ambiente real-time, la quale realizza i meccanismi di comunicazione, coordinazione e fault-tolerance relativamente ad un sistema di server che dispongono di servizi richiedibili da client. Servizi … Monit or Servizi … Servizi … Servizi … Realizzazione di un sistema di gestione trasparente, affidabile di richieste concorrenti in ambiente real-time. Gestione dei guasti Gestione del discovery Gestione parallela Meccanismi di replicazione Politiche di negoziazione flessibili Meccanismi di controllo Garanzia di atomicità Event driven Time driven Contract Net Le entità del sistema… Lista Monitor … … Client … Contattare il monitor master Contattare i server EFFETTUARE RICHIESTE Avviare protocollo di negoziazione Registrarsi Gestire richieste concorrenti Server Mantenere coerente il proprio stato Eseguire le funzioni FORNIRE DEI SERVIZI Servizi … Lista Monitor … … … Monitor master Monit or GESTIRE IL DISCOVERY Lista Server … … … Gestire richieste concorrenti Registrare i server Aggiornare monitor replica Lista Server … … … Monitor replica Monit or Lista Monitor … … … Controllo stato monitor master BACKUP DEL MONITOR Eleggere nuovo monitor master CONTRACT NET Politica di negoziazione Lavorare in ambiente Trovare un ottimo flessibile Real-time nello stato corrente Richiesta di un’operazione... Mantenere la lista monitor aggiornata (aggiornamento periodico) Reperire la lista server del sistema Contattare i server Determinare il server migliore Chiedere l’esecuzione del servizio Controllo passivo del monitor master dell’applicazione Contattare l’entità monitor master Avviare anticipatamente le procedure di sostituzione Multicast alle entità server del sistema Controllo passivo dei server Algoritmo di scelta Eliminazione dei server opportuni Gestione di una richiesta … Rispondere alla richiesta Gestire richieste concorrenti Gestione parallela delle richieste Garantire la consistenza dello stato del server Esecuzione di un thread per ogni richiesta Azioni atomiche sullo stato Registrazione dei server… Ricezione di una richiesta di registrazione Gestire richieste concorrenti Aggiornare i monitor replica del sistema Modifica della lista server Gestione parallela delle richieste Esecuzione di un thread per ogni richiesta Controllo passivo dei monitor Multicast alle entità monitor replica Eliminazione dei monitor opportuni Fault del monitor master… Controllo stato del monitor Determinazione del nuovo monitor Elezione del nuovo monitor Controllo periodico (time driven) Controllo del monitor master dell’applicazione Algoritmo di scelta Modifica dello stato del monitor prescelto Aggiornamento dei monitor replica • I monitor replica vengono aggiornati periodicamente dal monitor master, questo non garantisce che le liste contenute nei monitor replica siano effettivamente coerenti con quella del monitor master. Si potrebbe sviluppare un meccanismo che nel momento dell’elezione del nuovo master, controlli le liste di tutti i monitor replica e definisca secondo una politica prescelta (quorum, voting, confronto fra i timestamp) la determinazione della lista attuale. • I server possa accettare una sola richiesta alla volta di esecuzione di una funzione, con l’aumentare del numero dei client si potrebbe avere che questo aspetto risulti come limitativo. Si potrebbe pensare di o richiedere l’attivazione, se possibile, di altri server nel momento in cui il numero di rifiuti divenga elevato o ampliare la capacità del server in modo tale da essere in grado di poter eseguire più di una funzione.