Presentazione: Progetto e realizzazione di un sistema robusto di gestione dei dati per ambienti di...
-
Upload
paolo-morandini -
Category
Technology
-
view
77 -
download
1
description
Transcript of Presentazione: Progetto e realizzazione di un sistema robusto di gestione dei dati per ambienti di...
PROGETTO E REALIZZAZIONE DI UN SISTEMA ROBUSTO DI GESTIONE DEI DATI
PER AMBIENTI DI ESECUZIONE DISTRIBUITA
Candidato:
Paolo Morandini
Relatore: Prof. Alberto Bartoli
Correlatore: Ph.D. Carlos Kavka
Anno Accademico 2012-2013Tesi realizzata presso ESTECO S.p.A.
LE MOTIVAZIONI
!
Interesse aziendale presso ESTECO S.p.A.
Il gruppo di Ricerca e Sviluppo è interessato alle possibilità
offerte dai sistemi distribuiti.
LE MOTIVAZIONI
LE MOTIVAZIONI
!
Workflow di ottimizzazione distribuito
LE MOTIVAZIONI
!
CAD/CAE richiedono sempre uno o più file di input
LE MOTIVAZIONI
!
Le organizzazioni coinvolte non condividono filesystem
!
!
!
!
Nodi eterogenei in hardware e software
LO SCENARIO CONSIDERATO
LO SCENARIO CONSIDERATO
!
!
!
!
Massimo poche decine di nodi
LO SCENARIO CONSIDERATO
!
!
!
!
Topologia complessa della rete
LO SCENARIO CONSIDERATO
!
!
!
!
Alcuni nodi hanno server HTTP FTP SMB/CIFS
I REQUISITI
Nascondere la complessità (interfaccia JMS)
I REQUISITI
Nascondere la complessità (interfaccia JMS)
Verificare i trasferimenti
I REQUISITI
Nascondere la complessità (interfaccia JMS)
Verificare i trasferimenti
Atomicità e persistenza dei trasferimenti
I REQUISITI
Nascondere la complessità (interfaccia JMS)
Verificare i trasferimenti
Atomicità e persistenza dei trasferimenti
Adattamento dinamico a ingresso/uscita nodi
I REQUISITI
Nascondere la complessità (interfaccia JMS)
Verificare i trasferimenti
Atomicità e persistenza dei trasferimenti
Adattamento dinamico a ingresso/uscita nodi
Usare molteplici protocolli esistenti
I REQUISITI
Nascondere la complessità (interfaccia JMS)
Verificare i trasferimenti
Atomicità e persistenza dei trasferimenti
Adattamento dinamico a ingresso/uscita nodi
Usare molteplici protocolli esistenti
Uso di una quantità predicibile di risorse
I REQUISITI
Nascondere la complessità (interfaccia JMS)
Verificare i trasferimenti
Atomicità e persistenza dei trasferimenti
Adattamento dinamico a ingresso/uscita nodi
Usare molteplici protocolli esistenti
Uso di una quantità predicibile di risorse
Portabilità sulle tre piattaforme principali
!
Si valuta la possibilità di progettare e sviluppare
un sistema "ad hoc" di distribuzione dei file
!
LA SOLUZIONE
!
Si valuta la possibilità di progettare e sviluppare
un sistema "ad hoc" di distribuzione dei file
Tale sistema verrà installato su ogni calcolatore
interessato dall’esecuzione distribuita, sia esso di calcolo o
appositamente inserito per la condivisione delle risorse
LA SOLUZIONE
LA SOLUZIONE
LE TECNOLOGIE
Si è deciso di utilizzare gli Enterprise Integration Patterns
Possibili implementazioni:
• Apache Camel • Spring Integration • Mule ESB
LE TECNOLOGIE
Si è deciso di utilizzare gli Enterprise Integration Patterns
Possibili implementazioni:
• Apache Camel
• Spring Integration • Mule ESB
LA PROPOSTA
Suddividere il problema in tre sotto-problemi
LA PROPOSTA
Suddividere il problema in tre sotto-problemi
Ricerca dei file
LA PROPOSTA
Suddividere il problema in tre sotto-problemi
Ricerca dei file
Pianificazione del trasferimento
LA PROPOSTA
Suddividere il problema in tre sotto-problemi
Ricerca dei file
Pianificazione del trasferimento
Esecuzione e verifica del trasferimento
LA PROPOSTA - INTERFACCIA
Il sistema realizzato è il Distributed Data Manager
LA PROPOSTA - INTERFACCIA
Unico eseguibile installato su ogni calcolatore
RICERCA DEI FILE
Richiesto un file identificato da UUID (o simile)
RICERCA DEI FILE
Richiesto un file identificato da UUID (o simile)
A tutti i nodi: "Chi ha UUID?"
Tramite architettura Publisher/Subscribe, ogni nodo si registra per la ricezione dei messaggi di ricerca
!
Non è necessario che tutti abbiano accesso ad un unico server con il servizio JMS, esistono broker distribuiti
RICERCA DEI FILE
Richiesto un file identificato da UUID (o simile)
A tutti i nodi: "Chi ha UUID?"
Se uno risponde : "Io ho UUID" Localizzato
La risposta avviene tramite coda di messaggi, con garanzia di ricezione da parte del destinatario
RICERCA DEI FILE
Richiesto un file identificato da UUID (o simile)
A tutti i nodi: "Chi ha UUID?"
Se uno risponde : "Io ho UUID" Localizzato
Altrimenti: riprovo, dopo N tentativi abbandono
PIANIFICAZIONE DEL TRASFERIMENTO
Come spostare il FILE da A a B?
PIANIFICAZIONE DEL TRASFERIMENTO
Come spostare il FILE da A a B?
Dijkstra su grafo aggiornato dinamicamente
PIANIFICAZIONE DEL TRASFERIMENTO
Come spostare il FILE da A a B?
Dijkstra su grafo aggiornato dinamicamente
Nodi aggiornano il grafo tentando connessioni
PIANIFICAZIONE DEL TRASFERIMENTO
Come spostare il FILE da A a B?
Dijkstra su grafo aggiornato dinamicamente
Nodi aggiornano il grafo tentando connessioni
I file vengono divisi in chunk
ESECUZIONE DEL TRASFERIMENTO
Effettua download o upload (multiprotocollo)
ESECUZIONE DEL TRASFERIMENTO
Effettua download o upload (multiprotocollo)
Verifica correttezza chunk (MD5)
ESECUZIONE DEL TRASFERIMENTO
Effettua download o upload (multiprotocollo)
Verifica correttezza chunk (MD5)
Unisce i chunk in un file
IL COMPORTAMENTO
File Request
Search
LocatedMatch
Abort
Try Route
OK Route
Split Chunks
Do Transfer
Transfer End
Hash OK
Next Transfer Merge File
Delivered
File Request
Search
LocatedMatch
OK Route
Try Route
Split Chunks
Do Transfer
Transfer End
Hash OK
Next Transfer Merge File
Delivered
Hash Fail
Delete & Retry
!
In caso di trasferimento corrotto?
IL COMPORTAMENTO
File Request
Search
LocatedMatch
Abort
Try Route
OK Route
Split Chunks
Do Transfer
Transfer End
Hash OK
Next Transfer Merge File
Delivered
File Request
Search
LocatedMatch
OK Route
Try Route
Split Chunks
Do Transfer
Transfer End
Hash OK
Next Transfer Merge File
Delivered
Hash Fail
Delete & Retry
!
Rilevo trasferimento corrotto
IL COMPORTAMENTO
File Request
Search
LocatedMatch
Abort
Try Route
OK Route
Split Chunks
Do Transfer
Transfer End
Hash OK
Next Transfer Merge File
Delivered
File Request
Search
LocatedMatch
OK Route
Try Route
Split Chunks
Do Transfer
Transfer End
Hash OK
Next Transfer Merge File
Delivered
Hash Fail
Delete & Retry
!
Elimino i dati e riprovo
IL RECUPERO DA GUASTI PARZIALI
Molti trasferimenti in corso
IL RECUPERO DA GUASTI PARZIALI
Interruzione (crash) Relay 1
IL RECUPERO DA GUASTI PARZIALI
Relay 1 online, solo messaggistica JMS
IL RECUPERO DA GUASTI PARZIALI
Ripristino completo del nodo Relay 1
L’ADATTAMENTO DINAMICO
Cosa succede se cambia la
topologia della rete?
!
Il grafo rilevato viene
correttamente aggiornato?
L’ADATTAMENTO DINAMICO
HTTP Server on Workstation
L’ADATTAMENTO DINAMICO
HTTP Server Failure?
L’ADATTAMENTO DINAMICO
L’IMPATTO DEL CHUNKINGSp
eed
[MiB
/s]
Diretto 1 Relay 2 Relay
Senza Chunking Con Chunking
IL RILASCIO DELLE RISORSE
IL RILASCIO DELLE RISORSE
IL RILASCIO DELLE RISORSE
IL RILASCIO DELLE RISORSE
LE CONCLUSIONI
Nascondere la complessità (interfaccia JMS)
Verificare i trasferimenti
Atomicità e persistenza dei trasferimenti
Adattamento dinamico a ingresso/uscita nodi
Usare molteplici protocolli esistenti
Uso di una quantità predicibile di risorse
Portabilità sulle tre piattaforme principali
LE CONCLUSIONI
Nascondere la complessità (interfaccia JMS)
Verificare i trasferimenti
Atomicità e persistenza dei trasferimenti
Adattamento dinamico a ingresso/uscita nodi
Usare molteplici protocolli esistenti
Uso di una quantità predicibile di risorse
Portabilità sulle tre piattaforme principali
LE CONCLUSIONI
Nascondere la complessità (interfaccia JMS)
Verificare i trasferimenti
Atomicità e persistenza dei trasferimenti
Adattamento dinamico a ingresso/uscita nodi
Usare molteplici protocolli esistenti
Uso di una quantità predicibile di risorse
Portabilità sulle tre piattaforme principali
LE CONCLUSIONI
Nascondere la complessità (interfaccia JMS)
Verificare i trasferimenti
Atomicità e persistenza dei trasferimenti
Adattamento dinamico a ingresso/uscita nodi
Usare molteplici protocolli esistenti
Uso di una quantità predicibile di risorse
Portabilità sulle tre piattaforme principali
LE CONCLUSIONI
Nascondere la complessità (interfaccia JMS)
Verificare i trasferimenti
Atomicità e persistenza dei trasferimenti
Adattamento dinamico a ingresso/uscita nodi
Usare molteplici protocolli esistenti
Uso di una quantità predicibile di risorse
Portabilità sulle tre piattaforme principali
LE CONCLUSIONI
Nascondere la complessità (interfaccia JMS)
Verificare i trasferimenti
Atomicità e persistenza dei trasferimenti
Adattamento dinamico a ingresso/uscita nodi
Usare molteplici protocolli esistenti
Uso di una quantità predicibile di risorse
Portabilità sulle tre piattaforme principali
LE CONCLUSIONI
Nascondere la complessità (interfaccia JMS)
Verificare i trasferimenti
Atomicità e persistenza dei trasferimenti
Adattamento dinamico a ingresso/uscita nodi
Usare molteplici protocolli esistenti
Uso di una quantità predicibile di risorse
Portabilità sulle tre piattaforme principali
LE CONCLUSIONI
Nascondere la complessità (interfaccia JMS)
Verificare i trasferimenti
Atomicità e persistenza dei trasferimenti
Adattamento dinamico a ingresso/uscita nodi
Usare molteplici protocolli esistenti
Uso di una quantità predicibile di risorse
Portabilità sulle tre piattaforme principali