Sistema P2P Persistente e Bilanciato Emanuele Spinella Corso di Reti di Calcolatori LS Prof. Antonio Corradi A.A. 2003/2004.

Slides:



Advertisements
Presentazioni simili
Amministrazione dei servizi di stampa. Sommario Introduzione ai servizi di stampa Introduzione ai servizi di stampa Terminologia della stampa Terminologia.
Advertisements

UNIVERSITÀ DEGLI STUDI DI MODENA E REGGIO EMILIA
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità D1 Architetture di rete.
Unità D1 Architetture di rete.
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità D1 Architetture di rete.
1 Università degli Studi di Modena e Reggio Emilia Facoltà di Ingegneria – Sede di Modena Corso di Laurea in Ingegneria Informatica – Nuovo Ordinamento.
1: Introduction1 Condivisione file P2P r Allinizio del 2004 P2P era responsabile di un volume di traffico maggiore a qualunque altra applicazione Internet.
Di Carrera Marco Anno scolastico Cosa è un server di scambio? Sistema (software e hardware) che permette di scambiare file tra computer Esistono.
Modello di replicazione attivo e di supporto alla tolleranza ai guasti in ambito MOM Autore: Claudio Fusconi Matricola: Esame: Reti di calcolatori.
Aprile 2004Reti di Calcolatori LS – Servizio di Annunci Distribuito1 Reti di Calcolatori LS REALIZZAZIONE DI UN SERVIZIO DI ANNUNCI DISTRIBUITO Studente:
Supporto per servizi di File Hosting Presentazione di progetto per lesame di Reti di Calcolatori LS Valerio Guagliumi
Reti di Calcolatori LS Universitá degli Studi di Bologna Remotizzazione del Framework Unibo-env Autrice: Leticia Riestra Ainsua.
Un sistema software per la vendita di prodotti on-line Università degli studi di Bologna Facoltà di ingegneria Reti di calcolatori L-S Studente: Rinaldi.
Progetto Di Uninfrastruttura Che Permetta La Modifica Di Dati Condivisi Distribuiti Su Più Nodi Reti di calcolatori L-S Gozzi Daniele
Proxy-based infrastructure for LBS availability Reti di Calcolatori L-S Andrea Licastro
BlueMar k Sistema di Proximity Marketing con QoS ed availability Progetto per il Corso di Reti di Calcolatori LS Nicola Bonoli - 27 Giugno 2007.
1 Packet Manager Sistema di gestione di pacchetti software per il progetto dell'esame di Reti di Calcolatori LS Progetto realizzato da Fabio Parisini.
M.A.E.A.I. Mobile Agent and Enterprise Architecture Integration Il gestore delle politiche Valerio Siri Reti di Calcolatori LS Docente: Antonio Corradi.
Progetto di una architettura per lesecuzione distribuita e coordinata di azioni Progetto per lesame di Reti di Calcolatori L-S Prof. Antonio Corradi Finistauri.
DEIS Università di Bologna
Reti di Calcolatori L-S Un Sistema Decentrato di Allocazione del Carico per Applicazioni di Calcolo Distribuito Mauro Bampo.
Distributed File System Service Dario Agostinone.
Architettura e protocolli di distribuzione dello stato in videogiochi Multiplayer distribuiti Michele Pace Esame di Reti di Calcolatori LS Aa
Meteo Service Corso di Reti di Calcolatori LS Casarini Stefano matr
U N INFRASTRUTTURA DI SUPPORTO PER SERVIZI DI FILE HOSTING Matteo Corvaro Matricola Corso di Reti di Calcolatori LS – Prof. A. Corradi A.A.
Configurazione in ambiente Windows Ing. A. Stile – Ing. L. Marchesano – 1/23.
Reti di calcolatori LS Manni Tiziano  IT e nuovi scenari applicativi …  … portabilità dei dati …  … condivisione dati …  … disponibilità.
Di Luca Santucci e Riccardo Latorre LA CONDIVISIONE E L’ACCESSO ALLE RISORSE DI RETE.
FTP File Transfer Protocol
Nemesi Creazione e pubblicazione di una rivista online tramite l’utilizzo di Java Message Service.
Un sistema per la replicazione ottimistica in una rete di pari Progetto di Reti di calcolatori LS Federico Grassi a.a. 2004/2005.
Progetto di un Agente per l’Apprendimento mediante Alberi Decisionali in ambito distribuito Studente: Luca Monaco Anno Accademico
Producer – Consumer System Di Carlo Matteo CdLS Ingegneria Informatica (0234) Reti di Calcolatori LS A.A. 2004/2005.
MCSA Mobile Code System Architecture Infrastruttura a supporto della code mobility Pierfrancesco Felicioni Reti di Calcolatori L.S. 2005/2006.
Reti di computer Condivisione di risorse e
Studio di una soluzione distribuita per la gestione di un centro sondaggi.
Supporto per la replicazione attiva di servizi Progetto per il corso di Reti di Calcolatori LS Montanari Mirko Matr:
Sistema di replicazione master-multislave con server di backup per un servizio di chat di Marco Andolfo matr
Infrastruttura per la gestione distribuita di un sistema di prenotazione Progetto di: Fabio Fabbri Matricola
PROTOTIPO DI UN GIOCO DI STRATEGIA IN RETE Alberto Buccella Università degli studi di Bologna Facoltà di Ingegneria Corso di Ingegneria Informatica.
Progetto e prototipazione di una infrastruttura di comunicazione per il supporto al monitoraggio distribuito del traffico di rete Progetto di Reti di Calcolatori.
STUDIO SULLA REPLICAZIONE DEGLI AGENTI NEL SISTEMA SOMA Andrea Sambi.
Bonjour Post-It servizio di post-it distribuito di Elisa Rondini.
Search Engine Distribuito e Replicato Corso di Reti di Calcolatori LS Andrea Boari –
P2P Reliable Multicast Messenger Progetto e realizzazione di un software peer to peer per comunicazioni di gruppo.
Java Distributed Event Service Bringing events to J2EE platform Università degli studi di Bologna Corso di Laurea Specialistica in Ingegneria Informatica.
PERMESSO PERsistent MESSaging in ad hOc networks Corso di Reti di Calcolatori LS – AA Presentazione di Davide Sansovini Professore: Antonio Corradi.
Servizio di newsgroup con replicazione dei server Studente: Letizia Cheng Cheng Sun Matricola: Reti di Calcolatori LS – Prof. A. Corradi A.A. 2003/2004.
Progetto di un Gestore di Nomi Corso di Reti di Calcolatori L-S prof. Antonio Corradi A.A 2003/2004 Autore: Molesini Ambra.
MUSE 2 WIFI MUSic Everywhere with WIFI presentazione di Pierangeli Diego Membri del gruppo: Bambini Stefano Bergamini Andrea Pierangeli Diego AA 2006/2007.
Reti di calcolatori LS1 Service Middleware Reti di calcolatori LS progetto di Andrea Belardi Infrastruttura dedicata alla gestione di servizi disponibili.
Sistemi operativi di rete Ing. A. Stile – Ing. L. Marchesano – 1/18.
R.E.V.E.N.G.E. RELIABLE AND VERSATILE NEWS DELIVERY SUPPORT FOR AGENCIES Corso di Reti di Calcolatori LS – AA Professore: Antonio Corradi Referente.
Progetto e Realizzazione di un servizio di Chat Progetto di: Nicoli Leonardo Corso di: Reti di Calcolatori L-S.
Middleware per la sincronizzazione di ambienti eterogenei Progetto di Reti di Calcolatori LS Emanuele Crescentini matr Ingegneria Informatica LS.
Corso di Reti di Calcolatori LS Progetto di un server FTP in grado di coordinarsi con altri mirror per garantire QoS di Marco Buccione.
Prof. ing. Paolo Bidello AA 2005/2006 Laboratorio Informatico Promemoria degli argomenti: Reti locali (LAN)
Progetto RE.VE.N.GE. MQ REliable and VErsatile News delivery support for aGEncies Sistema di Distribuzione Reti di Calcolatori LS – Prof. Antonio Corradi.
Reti di Calcolatori LS - Fabio Poli 15 Giugno 2006 Sviluppo di un player di Campo Minato multigiocatore con supporto di Chat MultiCast.
Sistemi di elaborazione dell’informazione Modulo 3 -Protocolli applicativi Unità didattica 2 -Telnet, FTP e altri Ernesto Damiani Lezione 4 – Napster e.
Alex Marchetti Infrastruttura di supporto per l’accesso a un disco remoto Presentazione del progetto di: Reti di calcolatori L-S.
SnippetSearch Database di snippet bilanciato e replicato di Gianluigi Salvi Reti di calcolatori LS – Prof. A.Corradi.
Mobile Agent and Enterprise Architecture Integration Il Gestore di Librerie e Servizi Lambertini Riccardo.
1 MUSE2 Reti di Calcolatori L-S Progetto di un servizio di audio streaming in reti wireless Progetto di un servizio di audio streaming in reti wireless.
JDICS Java Dynamic Infrastructure for C/S systems Laura Galli matr Reti di calcolatori LS, Prof. A.Corradi A.A
Mots, programmazione collaborativa di Ettore Ferranti.
Pari Gioia Reti Di Calcolatori LS A.A. 2003/04.
Le basi di dati.
1 Il livello transport. Concetti fondamentali - Canale logico e canale fisico 2 Quando un segnale deve essere trasmesso, viene inviato su un Canale, cioè.
Transcript della presentazione:

Sistema P2P Persistente e Bilanciato Emanuele Spinella Corso di Reti di Calcolatori LS Prof. Antonio Corradi A.A. 2003/2004

Reti Peer To Peer Una rete Peer To Peer (P2P) è un sistema distribuito che permette agli utenti in possesso di una certa applicazione di connettersi fra loro e condividere informazioni Paradigma C/S Ogni terminale può fungere alternativamente o simultaneamente da client e da server Comunicazione molti-a-molti

Reti Peer To Peer 3 possibili modelli:  Centralizzate  Decentralizzate  Ibride Ogni modello con proprie caratteristiche, punti deboli e punti di forza

Reti P2P Centralizzate Unico sistema centrale che gestisce il traffico degli utenti Il sistema centrale è costituito da uno o più server coordinati Il sistema centrale dispone di directories in cui tiene l’elenco dei files condivisi e tutte le info necessarie per localizzare i proprietari e connettersi ad essi Napster come tipico esempio

Data Tranfer Search file Reti P2P Centralizzate Il peer che necessita di un file inoltra la richiesta al sistema centrale, il quale lo indirizza verso il proprietario del documento e fornisce il supporto per stabilire la connessione Detect source Connection

Reti P2P Centralizzate Vantaggi:  Efficienza e velocità di ricerca (servizio simile a quello di naming) Svantaggi:  Tempo di aggiornamento delle directories difficile da dimensionare  Sistema centrale come pericoloso punto di rottura da cui dipende la disponibilità di servizio

ConnectData transfer Search file Detect source Reti P2P Decentralizzate Nessun sistema centrale: ogni peer si fa carico delle operazioni di ricerca e connessione (es. Gnutella)

Reti P2P Decentralizzate Vantaggi:  Flessibilità: non esistono punti di rottura che possono inibire il servizio  Anonimato degli utenti Svantaggi:  La mancanza di registrazione riduce il controllo sugli utenti: QoS non sempre garantita

Reti P2P Ibride Risultato dell’unione delle due precedenti soluzioni Presenza di molti supernodi (server) presso ognuno dei quali sono registrati un certo numero di utenti Tutti i moderni sistemi P2P adottano una soluzione ibrida (WinMX, Kazaa, eMule, ecc.)

Data transfer Access directory: search file in my subnet Not found!  Reti P2P Ibride Il meccanismo di ricerca è simile a quello delle reti centralizzate, ma il peer cliente e quello servitore possono appartenere a supernodi diversi Search file Access directory: search file in my subnet Detect source Connect

Reti P2P ibride Il server ricerca il file all’interno dei peers registrati presso di esso e propaga la richiesta anche verso gli altri supernodi, che cercheranno nel proprio gruppo di utenti A ricerca terminata si effettua la connessione che precede il trasferimento dei dati

Reti P2P ibride Possibilità di gestire il livello di decentralizzazione o centralizzazione Un elevato numero di supernodi aumenta la decentralizzazione e diminuisce l’incidenza derivante dall’eventuale crash di un server (più supernodi significa meno peers registrati presso ognuno di essi, quindi meno utenti isolati dal servizio in caso di crash), ma si giova meno dei vantaggi che i server stessi possono offrire Un basso numero di supernodi sposta l’architettura verso il modello centralizzato, con tutti i vantaggi e gli svantaggi che questo comporta

Rete P2P persistente e bilanciata Necessità di dotare una rete P2P di caratteristiche atte ad aumentare la QoS offerta sui fronti della persistenza e del bilanciamento del carico Applicazioni in contesti che richiedono un alto livello di dependability (es. condivisione di importanti documenti fra stazioni di polizia e organizzazioni per la sicurezza sparse nel mondo e connesse in rete) Adozione della architettura ibrida

Persistenza La persistenza rappresenta la principale caratteristica del sistema:  Persistenza dell’infrastruttura: necessità di far fronte ad eventuali crash dei supernodi per evitare l’isolameto dalla rete dei peers ad essi connessi  Persistenza dei nodi: ogni singolo nodo deve garantire la persistenza in quanto depositario di importanti informazioni. Necessità di impiego di un modello di replicazione adeguato

Bilanciamento del carico Evitare la presenza contemporanea di nodi inattivi e nodi sovraccarichi Se un nodo richiede un documento posseduto da più peers, è opportuno che si valuti lo stato di carico di ognuno di essi e si effettui il trasferimento da quello con il numero inferiore di connessioni correnti

Architettura Tre attori principali:  LookUpServer: svolge le funzioni tipiche dei supernodi (supporto per una ricerca efficiente e veloce dei documenti)  Peer: rappresenta un terminale della rete P2P (può essere uno dei computer presenti in una stazione di polizia)  PeerCopy: rappresenta la copia esatta di un Peer e fornisce il supporto per il modello di replicazione atto a garantire la persistenza dei nodi

LookUpServer Ogni peer, al suo ingresso nella rete, deve registrarsi presso un LookUpServer Novità rispetto al modello ibrido standard: il LookUpServer non possiede nessuna directory delle risorse condivise (utilizzo di messaggi di ricerca)  A fronte di una richiesta il LookUpServer del nodo client (MasterServer) invia dei messaggi di ricerca a tutti i propri peers e agli altri servers (SlaveServer)  Maggiore overhead di comunicazione  Eliminati i problemi derivanti dalla frequenza di aggiornamento delle directories

LookUpServer (ricerca) Il peer client invia la richiesta al proprio LookUpServer (MasterServer) Search message Response message

LookUpServer (ricerca) Il MasterServer replica la richiesta ai propri peers e agli SlaveServer Search message Response message

LookUpServer (ricerca) Gli SlaveServer replicano la richiesta ai propri peers Search message Response message

LookUpServer (ricerca) I peers che hanno ricevuto la richiesta rispondono ai propri LookUpServer Search message Response message

LookUpServer (ricerca) Il MasterServer riceve le risposte raccolte dagli SlaveServer Search message Response message

LookUpServer (ricerca) Il MasterServer compone la risposta complessiva e la invia al client, il quale dovrà poi scegliere il documento che desidera Search message Response message Merge responses

Problema dovuto alla formulazione delle richieste con stringhe che non costituiscono un match esatto con il nome del documento desiderato Possibilità di trovare più documenti che contengono la stringa di query (es. la stringa “ack” può causare il ritrovamento dei files acknowledge.pdf, racket.mp3, sacker.doc, pippo.ack, ecc) Più peers possono avere lo stesso documento Il MasterServer deve elaborare le risposte ricevute dai propri peers e dagli SlaveServer raggruppando le occorrenze uguali Lo stesso devono fare gli SlaveServer con le risposte provenienti dai propri peers

RequestFile E’ una struttura dati che rappresenta un file il cui nome contiene la stringa di query Ogni RequestFile è caratterizzato dal nome del file che rappresenta e dalla lista dei peers che lo possiedono + addPeerList(in pList[ ]) - Name - PeerList [ ] RequestFile

Ogni LookUpServer riceverà un certo numero di RequestFile e dovrà unire quelli omonimi in un unico oggetto, aggregando le liste dei peers proprietari L’utente che ha inizialmente fatto la richiesta, alla fine del procedimento di ricerca, potrà scegliere fra un insieme di files (RequestFile) diversi senza sapere a chi appartengono (trasparenza della locazione) Il download di una risorsa appartenente a più nodi viene gestita dal sistema scegliendo il peer ‘migliore’ da cui scaricare, in modo da bilanciare il più possibile il carico sulla rete

RequestFile (merging) Request File Name = resA PeerList = {p1} Request File Name = resB PeerList = {p1} Ogni peer istanzia un RequestFile per ogni file in suo possesso che fa match con la query Request File Name = resA PeerList = {p2} Request File Name = resC PeerList = {p2} Peer p1 Peer p2 LookUpServer

RequestFile (merging) Request File Name = resA PeerList = {p1} Request File Name = resB PeerList = {p1} Il LookUpServer riceve i RequestFile di tutti i peers e unisce quelli omonimi modificando opportunamente la PeerList Request File Name = resA PeerList = {p2} Request File Name = resC PeerList = {p2} Peer p1 Peer p2 LookUpServer Request File Name = resA PeerList = {p1, p2} Request File Name = resB PeerList = {p1} Result Request File Name = resC PeerList = {p2}

Peer Nodo che può effettuare e/o ricevere richieste di ricerca di files In caso di richiesta ricevuta, il Peer deve controllare nella propria directory di sharing la presenza di uno o più files nel cui nome sia contenuta la stringa di query Per ogni file compatibile con la query il Peer deve comporre un oggetto RequestFile e inviarlo al proprio LookUpServer

PeerCopy Ogni Peer è dotato di una copia, fisicamente rappresentata da un diverso terminale, che possiede gli stessi files condivisi dall’originale Il modello di replicazione utilizzato è quello a copie calde e passive:  Calde in quanto vengono create insieme all’originale e si mantengono aggiornate sullo stato del sistema  Passive perchè non eseguono fino al crash del peer associato

PeerCopy Dal punto di vista logico il Peer estende il concetto di copia; infatti quest’ultima è un Peer a tutti gli effetti, a parte il fatto che non può inoltrare richieste, ma solo riceverne ed eventualmente eseguire l’upload dei files Esattamente come un Peer, la copia si deve registrare presso il LookUpServer (lo stesso del Peer cui è associata)

QoS: Persistenza La persistenza è ottenuta mediante un sistema di heartbeats che consente di testare costantemente lo stato di attività dell’infrastruttura di supporto (LookUpServer) e dei peers La mancata ricezione dell’heartbeat allo scadere di un timeout, provoca l’innesco di una procedura di recovery

QoS: Persistenza dell’infrastruttura di supporto L’eventuale crash di un LookUpServer può causare l’isolamento dalla rete di tutti i peers (e delle copie) ad esso connessi Iniziativa dei peers e delle copie per monitorare lo stato del server ed eseguire l’eventuale procedura di recovery (monitoring non centralizzato)

QoS: Persistenza dell’infrastruttura di supporto Invio periodico di heartbeats (hb) dal LookUpServer ai peers connessi

QoS: Persistenza dell’infrastruttura di supporto Dopo la ricezione di ogni hb, il Peer fa partire un timer, prima dello scadere del quale deve essere ricevuto l’hb successivo

QoS: Persistenza dell’infrastruttura di supporto In caso di guasto, gli hb non possono più essere inviati e il timer di ogni Peer scade timer

QoS: Persistenza dell’infrastruttura di supporto Ogni Peer esegue una procedura di recovery che consiste nel registrarsi presso un altro server e indurre la copia a fare lo stesso register New Server Info New Server Info register

QoS: Persistenza dell’infrastruttura di supporto Viene ristabilito il sistema di hb

QoS: Persistenza dei nodi In caso di crash di un Peer deve essere automaticamente messa in esecuzione la copia, per garantire la continuità del servizio La copia, calda e passiva, mantiene monitorato lo stato di attività dell’originale ricevendo da questo dei segnali di hb

QoS: Persistenza dei nodi In caso di crash del Peer, la copia non riceve più alcun hb e, allo scadere di un timeout, inizia la propria procedura di recovery PeerCopy timer Server hb

QoS: Persistenza dei nodi PeerCopy disattiva l’originale sul server: il binomio Peer/PeerCopy è sempre presente, un flag stabilisce quale dei due è attivo Server hb Deactivate original Peer

QoS: Persistenza dei nodi I parametri dell’originale vengono mantenuti all’interno del server anche in caso di crash, in modo da poter essere riutilizzati in seguito a una futura riattivazione e per mantenere la corrispondenza con la copia Server hb Deactivate original Peer

QoS: Persistenza dei nodi Le richieste di files arrivano al Peer originale o alla copia a seconda dello stato del flag. PeerCopy è perciò in grado di effettuare l’upload di un file Server hb Deactivate original Peer

QoS: Persistenza dei nodi La seconda fase del protocollo di recovery prevede la redirezione degli hb del server verso la copia: poiché l’originale è down spetta alla copia monitorare lo stato di attività del LookUpServer Server hb Server hb

QoS: Persistenza dei nodi Il crash di un Peer può avvenire in un momento di inattività, ma anche durante il trasferimento di un file Oltre al protocollo di recovery bisogna gestire anche il fallimento del trasferimento dati Il Peer sorgente invia al nodo ricevente, prima dell’inizio del trasferimento, l’indirizzo della propria copia In caso di fallimento del Peer il nodo ricevente può, senza effettuare nuove ricerche, rivolgersi direttamente alla copia per riiniziare il trasferimento

QoS: Persistenza generale E’ anche possibile che i guasti non colpiscano isolatamente il LookUpServer o il Peer, ma entrambe le entità Di particolare interesse il caso di guasto di un LookUpServer in un momento in cui anche il Peer originale è down

Registrazione virtuale Peer e PeerCopy sono due entità che collaborano per rappresentare un unico concetto di nodo persistente Finchè la copia è attiva, l’utente percepisce il nodo come attivo, in quanto è in grado di fornire il servizio (anche se l’originale è down)

Registrazione virtuale Esattamente come nel caso di crash del solo Peer originale, il binomio Peer/PeerCopy deve rimanere presente a livello di LookUpServer Se cade anche il LookUpServer, spetta alla copia effettuare una nuova registrazione presso un altro server, sia di se stessa, sia dell’originale andato in crash (registrazione virtuale) Sul nuovo server vengono inseriti i parametri della copia e dell’originale, esattamente come sul vecchio. Viene infine opportunamente settato il flag che segnala l’attività della copia Quando il Peer originale verrà riattivato si ritroverà registrato presso un server differente

Bilanciamento del carico Aspetto relativo alla QoS avente la finalità di distribuire, con politiche che rispettano il principio di minima intrusione, il carico in modo omogeneo sui diversi nodi Bilanciamento a livello di:  Peer/Copia: per quanto riguarda il trasferimento dati  LookUpServer: per quanto riguarda il numero di registrazioni

Registration Balancing L’ingresso nella rete da parte di un Peer presuppone la sua registrazione presso un LookUpServer Ogni Peer dispone di una lista di server memorizzata in locale sotto forma di file Il Peer contatta il primo server attivo della lista, il quale:  Aggiorna la server-list del Peer con l’elenco attuale dei server attivi  Rileva il numero di connessioni di tutti i server attivi e dirige la registrazione del peer verso il LookUpServer meno carico

Data Transfer Balancing In seguito a un processo di ricerca l’utente può decidere di scaricare un documento posseduto da più peers Rilevazione del ‘best peer to download’ Il peer richiedente contatta tutti i nodi presenti nella peer list dell’oggetto RequestFile associato alla risorsa desiderata, per conoscere quello meno carico e connettersi ad esso Viene stabilita la connessione con il nodo che sta effettuando il numero minimo di trasferimenti

Implementazione La fase implementativa ha visto l’utilizzo della piattaforma java e in particolare di:  RMI: come supporto all’invocazione remota dei metodi  Multithreading: per la gestione della persistenza  Sockets: per i trasferimenti dati

RMI Ogni Peer, nella fase di ingresso nella rete, ricopre il ruolo di un oggetto servitore che pubblica il proprio servizio per renderlo noto ai possibili clienti Il processo di registrazione prevede l’iscrizione del Peer all’interno di un RMI registry, che fornisce un riferimento ad esso a chiunque ne faccia richiesta L’architettura P2P aggiunge a tale servitore la capacità di potere anche richiedere servizi e svolgere il ruolo di un client

RMI Tutte le entità in gioco (Peer, PeerCopy, LookUpServer) devono iscriversi in un registry, poiché tutte forniscono un servizio (ricerca files, trasferimento dati, registrazione) Il modello prevede la presenza del registry sulla macchina dell’oggetto che fornisce il servizio

RMI Nella server-list memorizzata in locale da un Peer ci sono perciò gli indirizzi e le porte su cui si affacciano i registry associati ai vari LookUpServer Il riferimento remoto a un LookUpServer viene ottenuto mediante un preliminare colloquio con il registry RMI Registry LookUpServer Peer Peer HostServer Host

MultiThreading Il sistema di heartbeat deve agire in background lasciando che i processi principali si occupino delle loro attività (registrazione, ricerca files, migrazioni, ecc.) Vengono creati opportuni thread che si occupano dell’invio e ricezione degli hb in modo autonomo e senza interferire con i processi principali

MultiThreading Ogni processo principale si occupa della creazione dei thread di cui necessita per la gestione degli hb:  LookUpServer: genera un thread ServerDeamon che si occupa di inviare gli hb al Peer  Peer: genera un thread PeerDeamonSrv per ricevere gli hb dal server e un thread PeerDeamon per inviare gli hb alla copia  PeerCopy: genera un thread CopyDeamon, al momento della sua istanziazione, per ricevere gli hb dall’originale e, in caso di crash di quest’ultimo, in seguito alla procedura di recovery, genera il thread PeerDeamonSrv per ricevere gli hb del server

MultiThreading I deamon che ricevono gli hb sono costituiti da contatori watch dog decrementati periodicamente Ad ogni ricezione di un hb vengono ri- settati al valore massimo Se l’hb tarda ad arrivare il contatore raggiunge lo zero e lancia l’allarme per innescare la procedura di recovery

MultiThreading I deamon che inviano gli hb sono costituiti da cicli infiniti che, periodicamente, inviano un messaggio di ‘reset-dog’ al contatore del processo ricevente

MultiThreading Anche il trasferimento dati utilizza il supporto offerto dal multithreading Necessità che il trasferimento avvenga in backround mentre il processo principale continua le sue attività Creazione di un thread TransferOutThread che genera una socket in ascolto per eventuali richieste di connessione Accept bloccante, thread necessari

Sockets Utilizzo delle sockets per il trasferimento dei files Connessione mediante il protocollo TCP che offre sicurezza, ordinamento Generazione di altri thread per stabilire il canale di connessione ed effettuare il trasferimento dati

Sockets Una volta stabilito il ‘best peer to download’ il peer richiedente (rPeer) genera un thread TransferInThread che crea una socket e tenta di collegarla all’end-point remoto Il Peer sorgente (sPeer) riceve la richiesta da parte di rPeer e, mediante il processo TransferOutThread, effettua l’accept di connessione e stabilisce il canale mediante il quale può iniziare il trasferimento dati

Sockets Ogni Peer svolge la funzione di server concorrente, in quanto può eseguire più upload contemporaneamente

Sockets Necessaria la creazione di un ulteriore thread (RcpServiceThread) che si occupi del trasferimento mentre il TransferOutThread torna in ascolto di altre eventuali richieste di connessione

Conclusioni La realizzazione del progetto ha permesso di approfondire alcuni degli argomenti principali del corso di Reti di Calcolatori LS, come la disponibilità di servizio, le tecniche di replicazione e il bilanciamento del carico E’ stato dunque possibile analizzare concretamente tutti i passi, con relative problematiche, che hanno portato al raggiungimento di un soddisfacente livello di QoS

Conclusioni Il sistema realizzato presenta numerose semplificazioni rispetto ai moderni software P2P. D’altra parte l’obiettivo era quello di concentrare gli sforzi maggiori sugli aspetti relativi all QoS, magari trascurando alcune funzionalità di contorno o di importanza minore, le quali potrebbero costituire un buon punto di partenza per eventuali sviluppi futuri I test eseguiti hanno consentito un buon debugging dell’applicazione, cercando di coprire il più possibile lo spettro dei possibili eventi di guasto