Supporto per Applicazioni Distribuite basato su Spazi di Tuple con … · 2011-02-21 · Supporto...
Transcript of Supporto per Applicazioni Distribuite basato su Spazi di Tuple con … · 2011-02-21 · Supporto...
Supporto per ApplicazioniDistribuite basato su
Spazi di Tuplecon Qualità di Servizio
Progetto per il corso di
Reti di Calcolatori LS
Prof. Antonio Corradi
A.A. 2006/2007
Università degli Studi di Bologna
Facoltà di Ingegneria
Laurea Specialistica in Ingegneria Informatica
Vincenzo Borelli0000195621
ObiettiviObiettivi
Realizzazione di un supporto per applicazioni distribuitebasato sul modello dello Spazio di Tuple Memoria condivisa (spazio di tuple) per la coordinazione tra
le entità di un’applicazione distribuita
Meccanismi di interazione e di comunicazione trasparential programmatore
Gestione automatica e trasparente della strutturadistribuita dell’applicazione (ingresso/uscita di nodi) e dieventuali fallimenti
Molti vantaggi dovuti al suo utilizzo, tra cui Possibilità per i progettisti di concentrarsi sugli aspetti
applicativi di più alto livello
Riduzione dei tempi e dei costi dello sviluppo delleapplicazioni distribuite
Caratteristiche principaliCaratteristiche principali Semplicità di utilizzo
Ristretto insieme di operazioni per l’accesso ai serviziofferti dal supporto
Modularità Responsabilità precise per ogni parte del supporto
Facilita la fase di collaudo e l’aggiunta di nuovefunzionalità
Scalabilità e dinamicità Applicazioni formate da un elevato numero di nodi
Frequenza elevata di ingressi/uscite nel sistema
Configurabilità Possibilità di adattare le modalità di funzionamento del
supporto in base alle esigenze dell’applicazione
QualitQualitàà di Servizio di ServizioInsieme di parametri che caratterizzano il singolospazio di tuple
Spazi di tuple multipli Separazione tra differenti spazi di tuple
Spazi di tuple tipizzati Restrizione a determinati tipi di tuple e anti-tuple
Replicazione Per far fronte ad eventuali fallimenti di nodi
Correttezza Per avere un comportamento deterministico per le
operazioni di inserimento e estrazione/lettura
Architettura del supportoArchitettura del supporto
Architettura peer-to-peerfortemente decentralizzata Vantaggi
Responsabilità identiche per tutte le entità
Maggiore scalabilità
Bilanciamento di carico Svantaggi
Protocolli più complessi
Overhead dovuto alla comunicazione
Organizzazione dei nodiOrganizzazione dei nodi Identificatore univoco per ogni nodo
I nodi sono ordinati in un anello logico in base al
loro identificatore (hash di indirizzo IP + porta)
Lo spazio di tuple è partizionato tra i diversi nodi:
ognuno è responsabile delle tuple che hanno unidentificatore compreso tra il proprio (incluso) e
quello del predecessore (escluso)
Struttura del supportoStruttura del supporto
Interfaccia del supportoInterfaccia del supporto Punto di accesso dell’applicazione al supporto
Metodi per l’avvio (start) e la terminazione (stop)
Fornisce gli spazi di tuple, con la Qualità di Serviziodesiderata, su cui poter fare le operazioni di inserimento eestrazione/lettura (getTupleSpace)
Il costruttore prevede l’indicazione di un file in cui sonocontenuti i parametri per la configurazione Indirizzo e porta del nodo corrente
Indirizzo e porta del nodo di boot
Parametri relativi ai pool di thread presenti nei moduli
Configurazione del sistema di logging
…
Poche e semplici operazioni per poter utilizzare il supporto
Operazioni sullo Spazio di TupleOperazioni sullo Spazio di Tuple
void Out(ITuple t) - Metodo non bloccante perl’inserimento di una tupla
ITuple In(IAntiTuple t) - Metodo bloccante perl’estrazione di una tupla
ITuple In(IAntiTuple t, int timeout) - Metodobloccante con timeout per l’estrazione
void In(IAntiTuple t, ICallback b) - Metodo nonbloccante per l’estrazione di una tupla che vienegestita dall’oggetto callback
Per la lettura operazioni Read identiche alle In
Overlay NetworkOverlay Network
Responsabilità di organizzare il routing a livelloapplicativo, fornendo le informazioni sulpredecessore e sul successore di un nodo
Utilizzata per effettuare la ricerca delle risorse apartire da un identificatore (con complessitàdell’ordine di O(logN))
Segnala ai moduli che si registrano i cambiamentinell’anello tramite eventi
Utilizzo del protocollo Chord (e della suaimplementazione open source OpenChord)
Protocollo di coerenza (1)Protocollo di coerenza (1)
Protocollo di coerenza (2)Protocollo di coerenza (2)
Protocollo di coerenza (3)Protocollo di coerenza (3)
Protocollo di coerenza (4)Protocollo di coerenza (4)
Protocollo di replicazioneProtocollo di replicazione
Protocollo di inserimento (1)Protocollo di inserimento (1)
Protocollo di inserimento (2)Protocollo di inserimento (2)
Protocollo di inserimento (3)Protocollo di inserimento (3)
Protocollo di estrazione/lettura (1)Protocollo di estrazione/lettura (1)
Protocollo di estrazione/lettura (2)Protocollo di estrazione/lettura (2)
Protocollo di estrazione/lettura (3)Protocollo di estrazione/lettura (3)
Collaudo del supportoCollaudo del supporto
Tipologie di test effettuati:
Collaudo dei singoli moduli
Simulazione in ambiente locale Interazione tra i singoli moduli
Correttezza dei protocolli
Simulazione in ambiente distribuito Fallimento di un nodo e protocollo di replicazione
Sviluppi futuriSviluppi futuri
Nuovi parametri per la Qualità di Servizio Tempo di vita delle tuple
Priorità
Protezione
…
Algoritmi di matching più sofisticati Basati su pattern
Estrazione/lettura contemporanea di più tuple
Accounting e sicurezza Controllo degli accessi
Comunicazione cifrata
Fine