Supporto per Applicazioni Distribuite basato su Spazi di Tuple con … · 2011-02-21 · Supporto...

Post on 07-Aug-2020

1 views 0 download

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