Hosting: trasferire un blog da Wordpress.com su un hosting Aruba #TipOfTheDay
Supporto per servizi di File Hosting Presentazione di progetto per lesame di Reti di Calcolatori LS...
-
Upload
amedea-pavone -
Category
Documents
-
view
215 -
download
1
Transcript of Supporto per servizi di File Hosting Presentazione di progetto per lesame di Reti di Calcolatori LS...
Supporto per servizi di File Hosting
Presentazione di progetto per l’esame di Reti di Calcolatori LSValerio Guagliumi - 0000236769
I servizi di File Hosting
Permettono agli utenti di condividere i propri file
Accessibili tramite operazioni di: Upload – l’utente trasmette il
file da condividere Download – l’utente 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 l’aggiunta 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 l’ID 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: All’avvio/riavvio del Proxy All’avvio/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 l’invio di IS_ALIVE su tutti i nodi attivi del gruppo Il Proxy comunica a ciascun nodo chi deve controllare
Coordinamento delle copie
Operazioni periodiche dicoordinamento delle copie di ungruppo di replicazione eseguiteper: Verificare l’integrità 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)
Contenuto PRIMA del coordinamento File
NodoA NodoB NodoC
text.txt - - 98 A9 1B…
video.wmv 80 11 FC… 40 11 FC… 80 11 FC…
archive.zip 12 2D D6 - -
Contenuto DOPO il coordinamento File
NodoA NodoB NodoC
text.txt 98 A9 1B… 98 A9 1B… 98 A9 1B…
video.wmv 80 11 FC… 80 11 FC… 80 11 FC…
archive.zip 12 2D D6 12 2D D6 12 2D D6
Coordinamento – Ruolo del Proxy
Per non congestionare il Proxy, il coordinamento viene eseguitoautonomamente dal gruppo di replicazione.
Il Proxy si occupa solo di: Decidere quando eseguire un coordinamento (numero dei nodi
attivi, tempo dall’ultimo 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 l’operazione 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 dell’integrità del file trasferito
Operazioni di Upload/Download
Le richieste degli utenti che raggiungono il Proxy vengono redirette ad uno dei nodi di replicazione
Oltre all’indirizzo del nodo, il Proxy trasmette all’utente i parametri di invocazione
L’utente 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 ancorapropagato 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 nell’ambito 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