Supporto per servizi di File Hosting Presentazione di progetto per lesame di Reti di Calcolatori LS Valerio Guagliumi
I servizi di File Hosting Permettono agli utenti di condividere i propri file Accessibili tramite operazioni di: Upload – lutente trasmette il file da condividere Download – lutente riceve un file ospitato Requisiti di: Disponibilità: tipicamente attivi 24 ore su 24 con migliaia di richieste servite ogni minuto Correttezza: i file devono essere mantenuti integri
Architettura del sistema Uso di gruppi di replicazione per integrità e disponibilità Scalabilità attraverso laggiunta di nodi o gruppi di replicazione (ogni gruppo serve un diverso insieme di file) Un nodo Proxy fa da front-end e smista le richieste degli utenti ai nodi attivi di ciascun gruppo
Monitoraggio dei nodi Monitoraggio decentralizzato dello stato di attività di ciascun nodo di replicazione a carico dei nodi stessi Ogni nodo è controllato dal nodo precedente (controllore) in un anello attraverso messaggi IS_ALIVE In caso di mancata risposta, il controllore: Invia IS_DEAD al Proxy per informarlo della caduta Passa autonomamente a interrogare il nodo successivo
Falsa caduta di un nodo Ritardi o errori di comunicazione possono portare a false cadute di un nodo Il nodo deve essere informato della sua rimozione dal gruppo in modo che possa chiedere un reinserimento Quindi: Ogni nodo conosce lID del suo controllore Alla caduta di un nodo, il controllore invia al successivo nodo IS_ALIVE_NEW_ID registrandosi come suo nuovo controllore Un nodo che riceve IS_ALIVE da un ID diverso da quello del suo legittimo controllore risponde con WRONG_ID
Inizializzazione di un gruppo Durante una fase di inizializzazione il Proxy comunica a ciascun membro attivo di un gruppo quale nodo dovrà controllare Le fasi di inizializzazione possono avvenire in diversi casi: Allavvio/riavvio del Proxy Allavvio/riavvio di un nodo, tramite messaggio INIT_REQUEST dal nodo Un nodo riscontra un errore (e invia INIT_REQUEST), come: Falsa caduta di un nodo Caduta contemporanea di più nodi consecutivi Gruppo con un solo nodo attivo Inizializzazione in due fasi: Il Proxy blocca linvio di IS_ALIVE su tutti i nodi attivi del gruppo Il Proxy comunica a ciascun nodo chi deve controllare
Coordinamento delle copie Operazioni periodiche di coordinamento delle copie di un gruppo di replicazione eseguite per: Verificare lintegrità e correggere il contenuto delle copie corrotte Propagare tutti i file temporaneamente salvati su un solo nodo (i file ricevuti in upload vengono memorizzati localmente e poi propagati durante il successivo coordinamento)
Coordinamento – Ruolo del Proxy Per non congestionare il Proxy, il coordinamento viene eseguito autonomamente dal gruppo di replicazione. Il Proxy si occupa solo di: Decidere quando eseguire un coordinamento (numero dei nodi attivi, tempo dallultimo coordinamento) Scegliere un nodo del gruppo come coordinatore (messaggio COORD_START) e come partecipanti gli altri nodi attivi Interrogare il gestore durante il coordinamento per conoscerne lo stato (messaggi COORD_STATUS e risposte) In caso di caduta del coordinatore risposta di errore (caduta di un nodo partecipante, errori di comunicazione…) riavviare loperazione su uno dei nodi attivi
Coordinamento – Il coordinatore Il coordinatore: Richiede ad ogni partecipante la sua lista dei file e, per ciascuno, un riassunto del contenuto (es. hash) Se tutti rispondono, per ogni file: 1. Elegge il contenuto valido (quello più diffuso) 2. Se necessario scarica il file corretto da uno dei partecipanti con il contenuto valido 3. Invia ai partecipanti senza il file o con file corrotto il file integro 4. Attende la risposta di verifica dellintegrità del file trasferito
Operazioni di Upload/Download Le richieste degli utenti che raggiungono il Proxy vengono redirette ad uno dei nodi di replicazione Oltre allindirizzo del nodo, il Proxy trasmette allutente i parametri di invocazione Lutente contatta il nodo scelto passandogli i parametri di invocazione (ID e timestamp del file e tipo di trasferimento) Il progettista deve: Implementare la connessione Proxy-utente e nodo- utente (es.: usando HTTP, FTP, Socket…) Specificare la codifica per i parametri di invocazione (es.: cifratura per opacità, autenticazione Proxy…)
Smistamento delle richieste Ogni richiesta viene smistata: Scegliendo un gruppo di replicazione Scegliendo un nodo del gruppo Entrambe sono guidate da politiche specificate dal progettista (mappaggio dei file sui gruppi e bilanciamento del carico) La seconda ha un vincolo: Una operazione di download di un file non ancora propagato deve essere smistata sul nodo che ha il file Quindi il Proxy deve sapere quali file sono stati propagati e quali no
Files non propagati Per sapere quali file sono stati propagati il Proxy tiene traccia: Delle richieste di upload smistate, e per ciascuna il nodo incaricato Dei coordinamenti eseguiti con successo Ogni coordinamento è associato ad un timestamp Tutti i file con un timestamp successivo non vengono considerati nel coordinamento Al termine di ogni coordinamento cancella dalla lista dei file non propagati tutti quelli con timestamp precedente
Conclusioni Il sistema sviluppato fornisce un semplice esempio di supporto al File Hosting affidabile Possibili sviluppi futuri nellambito della gestione di risorse limitate: Gestione dello spazio fisico disponibile, scarto di file in eccesso… Gestione delle richieste tramite code e politiche di scheduling per garanzie di qualità di servizio