Presentazione: Progetto e realizzazione di un sistema robusto di gestione dei dati per ambienti di...

Post on 05-Jul-2015

80 views 1 download

description

Progetto e realizzazione di un sistema robusto di gestione dei dati per ambienti di esecuzione distribuita.

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