Sviluppo e analisi delle prestazioni di un algoritmo
per la gestione di grid file in ambiente distribuito
Introduzione Pag. 2
originaria sia nelle sue varianti ed estensioni finora implementate, per poi
proseguire con un breve quadro sullo stato dell'arte e sui possibili
prossimi sviluppi delle principali tecnologie coinvolte nella definizione di
ambienti P2P.
Successivamente, nel secondo capitolo, abbiamo focalizzato l' interesse su
di uno solo degli aspetti sopra citati, e, più precisamente, ci siamo
soffermati sull'approfondimento delle problematiche riguardanti la
gestione, in ambiente distribuito, di risorse (tipicamente dati), ponendoci
come obiettivo primario la definizione di un algoritmo e di una struttura
dati, che consentano la gestione efficiente di dati su di una rete peer to
peer, o più in generale in un generico ambiente decentralizzato, qualunque
sia la natura e la dimensione delle informazioni condivise.
Per arrivare alla formulazione dell’algoritmo siamo partiti dall’analisi di
alcuni dei principali algoritmi pubblicati negli ultimi decenni (come, ad
esempio, gli algoritmi di hashing, i B-tree e le successive varianti ed
estensioni, i quadtree, i BANG file, ecc. ) cercando di evidenziare per ogni
approccio considerato i principali aspetti innovativi e le situazioni in cui
esso garantisce le migliori performance, evidenziando anche gli aspetti
critici per le prestazioni e soprattutto gli eventuali limiti di applicabilità.
Il frutto di questa analisi è stato sintetizzato all’interno del secondo
capitolo.
Lo scopo della ricerca e dell’analisi di questi algoritmi in letteratura è
stato l’individuazione di un approccio che garantisse un elevato grado di
astrazione rispetto all’ambiente (da intendersi come struttura logica del
sistema), alla natura e dimensione dei dati.
Molti degli algoritmi presenti in letteratura hanno proposto soluzioni al
problema dello storage dei dati (e del loro successivo reperimento) gravate
da vincoli di applicabilità.
Tipicamente la maggior parte dei modelli analizzati presuppongono:
l’archiviazione di tutti i dati in un’unica macchina;
l’indicizzazione di dati/risorse secondo un numero estremamente
limitato di dimensioni che rappresentano in definitiva le possibili
Sviluppo e analisi delle prestazioni di un algoritmo
per la gestione di grid file in ambiente distribuito
Introduzione Pag. 3
chiavi di ricerca, oppure secondo un numero totalmente ordinato a
priori di dimensioni.
Se, visti i presupposti e gli obiettivi del presente lavoro, risulta evidente la
“non accettabilità” del primo vincolo, non altrettanto può dirsi per quanto
riguarda le dimensioni di indicizzazione e ricerca. La limitazione nel
numero di dimensioni indicizzabili di per se non contrasta né con i
presupposti né con gli obiettivi del presente lavoro, ma sicuramente ne
limiterebbe l’applicabilità nei contesti in cui l’informazione per natura
presenta gradi elevati di multi-dimensionalità. Inoltre con le strutture dati
che prevedono un ordine a priori delle dimensioni indicizzate risulta di
fatto impossibile impiegarle quando non tutte le dimensioni sono
disponibili nella ricerca dell’informazione.
Dalla sopracitata analisi condotta in letteratura abbiamo individuato una
struttura, il Grid File (GF), indicata in più pubblicazioni come uno dei più
interessanti algoritmi in grado di supportare, anche su file di elevate
dimensioni, un accesso ai dati simmetrico e multi-attributo.
Nel terzo capitolo abbiamo quindi esposto la teoria ed i concetti
fondamentali su cui tale struttura è stata implementata, chiarendone alcuni
aspetti implementativi e fornendo inoltre alcune sintetiche indicazioni
riguardanti le prestazioni garantite da GF in termini di ottimizzazione
dello storage utilization ed efficienza nel recupero dei dati.
Abbiamo poi analizzato alcune successive implementazioni del GF quali
Interpolation Based Grid File (IBGF) e Nested Interpolation Based Grid
File (NIBGF), proposte da M. Aris Ouksel nel corso degli anni novanta,
aventi come obiettivo preminente il miglioramento delle prestazioni del
grid file sia in termini di efficienza nella ricerca ma anche in termini di
occupazione delle risorse di storage disponibili. Inoltre Ouksel, nelle sue
varie pubblicazioni sull'argomento, fornisce molteplici analisi sia di tipo
empirico che probabilistico che a più riprese evidenziano come gli
algoritmi da lui proposti siano in grado di supportare l'accesso ai dati
simmetrico e multi-attributo garantendo elevati livelli di performance,
paragonabili, nel peggiore dei casi, alle prestazioni fornite da una struttura
Sviluppo e analisi delle prestazioni di un algoritmo
per la gestione di grid file in ambiente distribuito
Introduzione Pag. 4
B-tree sia per quanto riguarda il recupero dei dati sia per il livello di
utilizzo dello storage.
Alla luce di quanto appena detto: per quale motivo, allora, le varianti di
GF proposte da Ouksel non sono adatte all'obiettivo che ci siamo posti
intraprendendo questo lavoro ?
La risposta è relativamente semplice: esse sono applicabili in un ambiente
totalmente centralizzato in cui l’elaborazione per il mantenimento della
struttura è svolta da un'unica macchina in cui risiedono anche tutti i dati.
Essendoci posti nella stesura del presente lavoro come obiettivo principale
quello di definire un algoritmo dinamicamente capace di gestire e allocare
risorse in un sistema distribuito fondato sul paradigma peer to peer (in cui
la presenza di macchine "server" su cui accentrare processi di
amministrazione e controllo può essere, semmai, un'accettabile variante al
paradigma di base ma non certo una situazione generalizzabile), abbiamo
quindi iniziato ad esplorare la possibilità di estendere le strutture sopra
citate per giungere alla definizione di un "Grid File Generalizzato", in
grado di gestire l'intera struttura in modalità completamente
decentralizzata secondo diverse politiche.
L'idea chiave per ottenere un completo deployment dei processi di
amministrazione trae spunto dalla fusione di tecniche tipiche dei Grid File
(una per tutte l'hashing) con aspetti caratteristici di strutture B-tree: i
puntatori.
In realtà anche il grid file fa uso di puntatori, ma sono nella fase terminale
della struttura ovvero solo per gestire l'archiviazione dei dati nelle pagine
su disco, il nostro approccio invece utilizza i puntatori, oltre che per lo
scopo sopra citato, anche come strumento di costruzione della struttura
logica del grid file, ovvero come oggetto in grado definire e mantenere
insieme le relazioni esistenti fra l'insieme di regioni che
complessivamente formano l'universo di riferimento.
Il quarto capitolo presenta quindi la parte fondamentale del presente
lavoro in cui vengono esposti i concetti teorici su cui si basa la soluzione
ponendo particolare attenzione alle estensioni introdotte nella costruzione
Sviluppo e analisi delle prestazioni di un algoritmo
per la gestione di grid file in ambiente distribuito
Introduzione Pag. 5
e nella gestione della struttura di controllo.
Abbiamo poi ritenuto opportuno porre l'attenzione sul fatto che
l'approccio proposto consente di supportare appieno una delle
caratteristiche cruciali in ambito peer to peer: la capacità di
autoapprendimento dei client. Utilizzando infatti una gestione della
struttura logica fondata sui puntatori viene garantita ai client la possibilità
di autoapprendere, ad ogni nuova interrogazione della struttura,
informazioni sulla topologia della struttura distribuita. In questo modo
l'algoritmo oltre a garantire migliori performance in termini di costi di
ricerca (visto che per alcuni tipi di ricerca, il client, conoscendo già la
potenziale locazione del punto, tenterà un accesso diretto senza
nuovamente ripercorrere tutto il path sovrastante) fornisce anche una più
efficiente distribuzione del carico elaborativo cercando, ove possibile, di
non accedere alla radice della struttura (tipicamente gravata da un elevato
numero di richieste) ma di "entrare" nella struttura partendo da regioni
situate ad un livello più basso.
Poiché dalla preliminare analisi della letteratura è inoltre emerso come su
tale argomento (in ambiente centralizzato) fossero stati elaborati differenti
approcci teorici così come molteplici valutazioni empiriche e
probabilistiche sulle relative prestazioni, ma nessun tentativo di sviluppo
applicativo era stato effettuato (o quantomeno pubblicato), abbiamo quindi
pensato di implementare un prototipo in grado di simulare il reale
comportamento dell'algoritmo sotto diverse condizioni e in diversi scenari
di utilizzo, ottenibili impostando semplicemente una serie di parametri.
Nel quinto capitolo vengono presentate alcune simulazioni ed esempi
pratici (corredati da tabelle sintetiche e rappresentazioni grafiche) aventi
lo scopo di evidenziare e chiarire il comportamento del prototipo durante
alcune tipiche fasi del “ciclo di vita” di un ambiente file-sharing:
inserimento di nuove risorse all’interno della struttura, ricerca puntuale
(exact match), ricerca per intervallo (range query), eliminazione di
elementi dalla struttura.
Infine abbiamo posto l' attenzione sull’analisi delle prestazioni
Sviluppo e analisi delle prestazioni di un algoritmo
per la gestione di grid file in ambiente distribuito
Introduzione Pag. 6
dell’approccio sviluppato. Dapprima chiarendo alcuni concetti riguardanti
quali aspetti/dimensioni misurare, le unità di misura e i criteri scelti per
valutare le prestazioni, e successivamente riportando schematicamente i
risultati in alcune situazioni più significative, incluso le situazioni limite.
In appendice sono stati poi raccolti i documenti tecnici prodotti durante lo
sviluppo applicativo del prototipo, come ad esempio il DB schema della
base dati utilizzata per simulare in locale una rete peer to peer distribuita
geograficamente. Inoltre, sempre in appendice, è stato riportato il codice
sorgente, scritto in linguaggio Microsoft Visual Basic, dei componenti
sviluppati per la costruzione del prototipo.
Sviluppo e analisi delle prestazioni di un algoritmo
per la gestione di grid file in ambiente distribuito
Cap. 1 ~ Le reti peer to peer Pag. 7
CAPITOLO 1
LE RETI PEER TO PEER
1.1 Una definizione
Dare una definizione, sintetizzare in poche righe un concetto, è impresa
sempre e comunque ardua. A maggior ragione il compito si presenta
ancora più arduo quando ciò che si cerca sinteticamente di esprimere è una
tecnologia innovativa, in piena fase di sviluppo, dai contorni non ben
definiti e soprattuto aperta ad un non definibile numero di varianti, di
applicazioni e di implementazioni.
Fra le varie nozioni e definizioni che abbiamo recuperato nella recente, ma
per questo non meno vasta, letteratura riguardante il paradigma peer to
peer abbiamo scelto di riportare, per sintesi e chiarezza, quella fornita dal
“peer-to-peer working group” (www.p2pwg.org) :
<<Il peer to peer computing è la condivisione fra computer di risorse e
servizi attraverso lo scambio diretto fra sistemi. Risorse e servizi che
includono lo scambio di informazioni, capacità elaborative e capacità di
archiviazione. Il peer to peer trae vantaggio dalle potenzialità dei singoli
desktop computer e dalla connettività di rete consentendo ai computer
client di utilizzare le loro singole potenzialità per portare beneficio
all’intero sistema>>.
1.2 Cos’è il P2P?
E’ l’acronimo di peer to peer, dove i peer non sono altro che normali
personal computer usati da normali utenti per navigare in Internet, inviare
e ricevere e-mail, scrivere documenti, ecc. L’architettura P2P è
un’architettura nella quale i computer connessi ad Internet possono
condividere capacità di calcolo, spazio su disco e ogni tipo di risorsa in
genere, senza l’utilizzo di un server centrale.
Proprio l’assenza di un server centrale che amministri le connessioni e
Sviluppo e analisi delle prestazioni di un algoritmo
per la gestione di grid file in ambiente distribuito
Cap. 1 ~ Le reti peer to peer Pag. 8
le risorse è la chiave di volta. La tecnologia peer to peer evolve
l’ambiente di elaborazione centralizzato pre-esistente ad un nuovo livello
di infrastruttura software, creando una rete “point-to-multipoint” tra host
equivalenti (livello utente/applicazione) che si comportano, a seconda
della situazione, da server o da client.
Riflettiamo, ad esempio, sulle possibilità offerte alle funzioni di
immagazzinamento e/o condivisione dati di un sistema o di una rete. In
una architettura tradizionale, un server può fornire le informazioni
presenti sui propri hard-disk. Di quanto stiamo parlando? Cinquanta dischi
da cento gigabyte? Qualunque sia l’effettiva capacità di
immagazzinamento gestita da un server, non sarà mai paragonabile alle
possibilità offerte da un architettura P2P, nella quale ogni pc domestico
condivide tutto o parte del suo disco fisso.
Centinaia e centinaia di terabite accessibili da tutti o da solo chi ne abbia i
giusti privilegi; senza ritardi causati dalle migliaia di connessioni al
minuto che un server deve gestire; senza un luogo centralizzato che tenga
traccia delle nostre connessioni e con la possibilità di eseguire ricerche
sugli hard disk degli altri peer come se le facessimo sul nostro; con
l’opportunità di avere la più recente versione di un prodotto prelevandola
direttamente dal personal computer del realizzatore e sfruttando al meglio
la banda disponibile nella connessione fra i due peer.
Napster, con la sua architettura P2P ibrida (ovvero basata su un server
centrale che indirizza le connessioni e “monitorizza” i download tra i pc
che avviene in modalità peer to peer) è uno degli esempi più noti di
filesharing. Grazie alla sua straordinaria facilità d’uso, alla semplicità
nell’effettuare le ricerche ed all’efficacia nel determinare i risultati, ha
iniziato una vera e proprio rivoluzione su Internet. Ecco, per quanto
riguarda l’aspetto dell’architettura P2P che permette la condivisione di
risorse nell’ottica di avere un quadro completo delle potenzialità, si
immagini un “fenomeno Napster” a 360 gradi. Programmi, documenti,
musica, video, archivi, informazioni in genere, facilmente disponibili con
un semplice clic.
Sviluppo e analisi delle prestazioni di un algoritmo
per la gestione di grid file in ambiente distribuito
Cap. 1 ~ Le reti peer to peer Pag. 9
Ma non si pensi che il P2P permetta solo una efficiente gestione delle
risorse condivise. I settori che traggono vantaggio dalle possibilità che
questa architettura offre sono realmente molteplici. Si pensi ai milioni di
peer nel mondo che contribuiscono alla ricerca di intelligenze
extraterrestri con il progetto S.E.T.I. o ai milioni di utenti dei portali che
utilizzano la comunicazione realtime o alle reti che permettono agli amanti
dei videogiochi di giocare in Internet con altri utenti connessi.
Sun, Ibm, Microsoft e Intel hanno ultimamente dichiarato che, nel campo
delle multinazionali, lo sviluppo di tecnologie peer to peer è la migliore
soluzione possibile per lo sviluppo di nuovi standard industriali. Secondo
la dichiarazione, implementare applicazioni che fanno leva su tecnologie
P2P, permetterà alle industrie di sviluppare prodotti in maniera più veloce,
di aumentare e ottimizzare la collaborazione tra i gruppi di lavoro, e di
rendere più efficiente la scambio di informazioni.
Sembrerebbe proprio che la questione non sia “chi” adotterà queste
tecnologie per guadagnare un significativo vantaggio competitivo nei
confronti dei concorrenti, ma piuttosto “quando” ciò si tradurrà in realtà.
1.3 Peer to Peer: una vecchia novità
L’architettura client/server nelle sue varie implementazioni è stata
padrona incontrastata della scena per diversi anni. Anche oggi, nella
maggior parte dei casi, l’idea più naturale di rete è quella in cui alcune
macchine particolarmente potenti erogano servizi a delle macchine meno
potenti. Gli esempi possono essere tanti, e vanno dai “vecchi” mainframe,
ai file server dipartimentali o aziendali fino ad arrivare ai servizi su rete
geografica (uno per tutti: il WWW).
In questa architettura gerarchica, si ha una grande quantità di risorse
concentrata su uno o pochi “nodi centrali” - i server – mentre poche o
nessuna sono dislocate sui nodi periferici che attingono alle risorse dei
server – i client.
Ma era già presente sin dagli esordi del protocollo TCP/IP un altro
paradigma, in cui i ruoli di client e server sono decisamente più sfumati,
Sviluppo e analisi delle prestazioni di un algoritmo
per la gestione di grid file in ambiente distribuito
Cap. 1 ~ Le reti peer to peer Pag. 10
se non completamente assenti. Infatti già circa 30 anni fa alcune
organizzazioni studiavano e progettavano architetture che noi oggi
etichetteremmo come P2P, ma è evidente che solo negli ultimi anni il
concomitante sviluppo di deversi fattori (come ad esempio disponibilità di
banda) hanno “acceso il fuoco” attorno all’argomento.
1.4 L’architettura
Qualunque sia l’architettura fisica e logica di una rete, il funzionamento di
base è sempre lo stesso: una connessione si instaura nel momento in cui il
nodo della rete richiede una connessione ad un altro nodo ed esso la
accetta, aprendo un canale di comunicazione.
Questa richiesta si esplicita in maniera diversa a seconda dei protocolli
utilizzati, e nell’architettura client/server denota quasi sempre chi è client
e chi è server: il server attende le connessioni e i client gliele richiedono.
Anche nel caso del P2P le connessioni non nascono spontaneamente, ma
devono essere iniziate da una delle parti in causa. La differenza
sostanziale dal paradigma client/server sta nel livello gerarchico dei
due nodi: chi dà inizio alla connessione non è necessariamente ad un
livello inferiore di chi la accetta.
In realtà parlare in senso astratto di architettura delle reti peer to peer
porterebbe sicuramente ad una errata semplificazione del quadro di
riferimento, in quanto le possibili configurazioni ed architetture basate sul
paradigma P2P sono molteplici.
Infatti partendo dal concetto base del paradigma, le architetture delle reti
P2P possono assumere aspetti e peculiarità anche sostanzialmente
differenti fra loro al fine di ottenere, ad esempio, vantaggi in termini di
efficienza del sistema o di performance.
In realtà esistono alcuni elementi comuni a tutte le strutture fondate sul
paradigma peer to peer, ovvero affinché un’applicazione si possa definire
P2P deve presentare almeno tre caratteristiche:
le entità devono poter scoprire le altre entità pari sulla rete;
le entità devono poter interrogare i pari sulle proprie risorse;
Sviluppo e analisi delle prestazioni di un algoritmo
per la gestione di grid file in ambiente distribuito
Cap. 1 ~ Le reti peer to peer Pag. 11
le entità devono poter condividere le risorse con gli altri pari.
Per questo abbiamo deciso di riportare in questo paragrafo dapprima una
sintetica descrizione dell’architettura “base” del paradigma P2P,
definendone i punti salienti e cercando di evidenziarne i principali
possibili elementi di vantaggio o svantaggio rispetto al consolidato
paradigma client/server, per proseguire poi con una breve, e non esaustiva,
panoramica su alcune delle principali varianti dell’architettura P2P fino ad
oggi implementate, cercando di intuirne motivazioni, punti di forza e di
criticità.
Il confronto : P2P vs Client/Server
Sicuramente, già con una prima veloce osservazione delle due
rappresentazioni sotto riportate si noterà subito la prima differenza fra
un’architettura di rete basata sul paradigma client/server (Fig. 1.1)
Fig. 1.1
e un’architettura di rete fondata sul paradigma peer to peer (Fig. 1.2): il
server.
Sviluppo e analisi delle prestazioni di un algoritmo
per la gestione di grid file in ambiente distribuito
Cap. 1 ~ Le reti peer to peer Pag. 12
Fig. 1.2
Ovvero, le due rappresentazioni sopra riportate, che costituiscono
comunque una estrema semplificazione delle reali architetture di rete
implementate secondo i due paradigmi, evidenziano una prima sostanziale
differenza:
nello sviluppo di una struttura client/server è indispensabile definire
almeno un punto/macchina server (ovvero, in astratto, “fornitore di
servizi”) a cui i punti/macchina client potranno inoltrare richieste e,
successivamente, ottenere i “servizi” richiesti;
nello sviluppo di una struttura peer to peer ciò non è necessario, o per
essere più precisi non è indispensabile (infatti vedremo
successivamente come esistano alcune tipologie/varianti di reti P2P che
prevedono all’interno della loro struttura la presenza di “macchine
server” aventi compiti di controllo e amministrazione della struttura),
inoltre perde completamente senso la distinzione fra punti/macchine
server e client, o perché non esistono (nel senso che ogni macchina è
semplicemente un “peer”) o perché ogni punto/macchina può
comportarsi, a seconda del processo interessato, sia come server (nel
senso di fornitore del servizio) sia come client (nel senso di richiedente
del servizio).
Sviluppo e analisi delle prestazioni di un algoritmo
per la gestione di grid file in ambiente distribuito
Cap. 1 ~ Le reti peer to peer Pag. 13
Fig. 1.3
Ne deriva quindi che in una struttura client/server il canale di
comunicazione è si bidirezionale ma sempre e comunque di un solo tipo:
il client inizia una connessione ed inoltra una richiesta, il server (che è ad
un livello gerarchico superiore) decide se accettare o meno la richiesta ed
eventualmente risponde fornendo il servizio richiesto. Nelle reti P2P
invece i peer possono “dialogare liberamente” (più o meno) fra di loro e
quindi il canale bidirezionale può essere istanziato da un qualsiasi
punto verso un altro qualsiasi punto raggiungibile in rete. In realtà
(come mostrato dalla Fig. 1.3) anche in strutture client/server i vari client
possono comunicare uno con l’altro ma non in modo diretto, ovvero ciò
può avvenire solo grazie all’intermediazione del server, con un aggravio
del traffico di rete.
Ma che cosa comporta, a livello srutturale ed applicativo, questa
fondamentale differenza fra i due paradigmi? Quali sono i vantaggi e gli
svantaggi dei due differenti approcci? Esiste quindi un paradigma che può
essere considerato “migliore” dell’altro?
Per cercare di fornire risposte a questi interrogativi abbiamo cercato di
sintetizzare nella tabella sotto riportata alcuni dei principali punti di forza
e di debolezza dei due approcci, concludendo poi con una personale
risposta all’ultimo interrogativo sopra riportato.
Sviluppo e analisi delle prestazioni di un algoritmo
per la gestione di grid file in ambiente distribuito
Cap. 1 ~ Le reti peer to peer Pag. 14
CLIENT/SERVER PEER TO PEER
Se il server collassa, o se si
interrompe la rete nel punto in cui il
server è collegato allora collassa
tutto il sistema
Il collasso di un peer provoca la non
raggiungibilità di quel peer, ma non
provoca il collasso di tutto il
sistema
Se il server è sovraccarico (ad
esempio a causa di un elevato
numero di richieste di servizi)
oppure se il ramo della rete a cui il
server è collegato è fortemente
occupato allora decadono le
prestazioni dell’intero sistema
Il sovraccarico di un peer o del ramo
di rete da lui utilizzato provocano
un degrado delle prestazioni solo
per le richieste indirizzate verso
quel peer e quindi incidono
relativamente sulle prestazioni
dell’intero sistema.
Tutte le risorse (dati, capacità
elaborative) risiedono nel server, i
client possono essere anche solo
“terminali stupidi” (ovvero non
dotati di una propria capacità
elaborativa e di storage)
I peer non possono essere terminali
stupidi, devono godere di capacità
elaborative e di storage per poter
processare le richieste ricevute dalla
rete e condividere le risorse messe a
disposizione del sistema
Il controllo e l’amministrazione
della rete sono compito prevalente
del server che quindi risulta
ulteriormente gravato
Tipicamente le reti peer to peer sono
reti libere o comunque con un
livello di controllo e
amministrazione molto ridotto,
comunque se tali funzioni fanno
parte del sistema esse vengono
distribuite fra i vari peer del sistema
ognuno dei quali si occupa di una
porzione dell’intera funzione.
Quindi l’aggravio viene distribuito.
Sviluppo e analisi delle prestazioni di un algoritmo
per la gestione di grid file in ambiente distribuito
Cap. 1 ~ Le reti peer to peer Pag. 15
Normalmente gli ambienti
client/server sono caratterizzati da
un elevato grado di omogeneità fra
le componenti del sistema (si parla
ad esempio di reti Sun, reti Novell,
ecc.)
I sistemi peer to peer sono di norma
caratterizzati da elevata eterogeneità
(si pensi a Napster: consentiva la
condivisione di risorse fra sistemi
Windows, Linux, Mac, ecc.)
Le prestazioni di un sistema
client/server dipendono quasi
esclusivamente dalle capacità del
server nonché dal traffico di rete e
dall’ammontare di richieste
concorrenti presenti in un
determinato istante
Tipicamente i peer
“autoapprendono” ovvero il
perdurare del peer all’interno della
struttura consente ad esso di
accrescere il livello di conoscenza
del sistema e ciò si traduce spesso in
migliori performance del’intero
sistema (soprattutto in operazioni di
“look up”)
Quindi, cosa offre in più del paradigma client/server il peer to peer?
Il vantaggio principale è da ricercarsi nell’alta scalabilità dei sistemi:
aggiungere una nuova entità comporta pochissime operazioni (nel caso di
un server centrale) o anche nessuna (nel caso di un P2P puro).
Il costo dell’hardware in questi anni è sceso moltissimo (in proporzione)
ed oggi una macchina desktop dispone di un’elevata potenza di calcolo, le
infrastrutture di rete continuano ad evolversi per offrire una velocità
sempre maggiore: l’efficienza di un’architettura client/server non può
paragonarsi con quella offerta da un’analoga peer to peer.
La mancanza di un gestore centrale si rivela essere il problema più
rilevante: non è sempre possibile controllare gli accessi, le informazioni
possono essere difficili da trovare. Esistono poi contesti in cui il P2P non
apporterebbe alcun vantaggio (anzi, probabilmente ridurrebbe l’efficienza
globale): ristrutturare il servizio IRC (Internet Relay Chat) secondo un
protocollo peer to peer non sarebbe certo una scelta corretta.