Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
PubblicatoLoredana Angeli Modificato 10 anni fa
1
P-Grid: A Self-Organizing Access Structure for P2P Information Systems Karl Aberer Presentazione et codice: Antonio Gaetani Marco Montali Marco Tamburini
2
Agenda Stato dellarte e motivazioni: strutture per laccesso ai dati nei sistemi P2P Definizione e proprietà di P-Grid Algoritmo di ricerca allinterno di una P-Grid Costruzione di una P-Grid Considerazioni sullefficienza, problematiche e DEMO!
3
RICERCA INEFFICIENTE Stato dellarte Tipiche infrastrutture P2P per il file sharing (Gnutella): Nessun meccanismo di indicizzazione Richieste mandate in broadcast
4
Obiettivo Lo scopo è quindi quello di costruire una struttura distribuita per laccesso ai dati che sia totalmente decentralizzata scalabile affidabile
5
Lidea di base Mediante meeting randomici tra i peer, essi: Si partizionano lo spazio di ricerca Acquisiscono informazioni per interagire con altri peer durante successive richieste di ricerca Il risultato è la struttura di accesso distribuita chiamata P-Grid
6
Ricerca con Gnutella (Intuitivamente) Commedia Jeff Kanew La rivincita dei nerdz No! Mi dispiace No! Mi dispiace Sì! Te lo mando
7
Ricerca con P-Grid (Intuitivamente) Ce lho! Commedia Jeff Kanew La rivincita dei nerdz Gùgù: Gestisco commedie, ma per Jeff Kanew devo chiedere a Tambu Commedia Jeff Kanew La rivincita dei nerdz Tambu: Gestisco commedie di Jeff Kanew, ma per i nerds devo chiedere a Papà Commedia Jeff Kanew La rivincita dei nerdz Papà: Papà Commedia Jeff Kanew La rivincita dei nerdz Papà:
8
La P-Grid Una P-Grid è una struttura di accesso ai dati distribuita: I dati sono rappresentati da chiavi binarie I peer si ripartiscono lo spazio delle chiavi effettuando degli incontri Ogni peer possiede un path (determinato dagli incontri fatti) che rappresenta il prefisso del sottospazio delle chiavi che gestisce Ogni peer possiede una griglia di riferimenti ad altri peer I peer riferiti da a a livello i hanno la proprietà che completano lo spazio delle chiavi di a rispetto alli-mo bit del path La determinazione di tali riferimenti viene effettuata secondo algoritmi probabilistici Un peer con path 10 gestisce tutte le chiavi che cominciano per 10! Proprietà r può appartenere allinsieme dei riferimenti di a=p 1 …p k a livello i se prefix(i,r)=[prefix(i-1,a),p i ]
9
Un peer nella P-Grid P1P1 011 chiave doc owner 011…PaPa PbPb PcPc PdPd PXPX PzPz PwPw 1 … … 0 0 … A regime conterrà tutti i documenti nella rete con chiave che inizia per 011! PyPy 1 … … 0 1 0 … 0 1 1 Livello 1 Livello 2 Livello 3
10
Algoritmo di ricerca query(peer a,query p,livello l) { found= false; remanent_path = sub_path(path(a), l, k); common_path = common_prefix_of(p, rempath); IF length(common_path) = length(p) THEN result = a ELSE IF length(path(a)) > l + length(compath) THEN querypath = sub_path(p, length(compath) + 1,length(p)); refs = refs(l + length(compath) + 1, a); WHILE |refs| 1 AND NOT found r = random_select(refs); IF online(peer(r)) found = query(peer(r), querypath, l+length(compath)); RETURN found; } (peer1, 1000, 1) { 1000; Lunghezza Della query iniziale IF 4 = 4 peer1 peer1 responsabile per 1000 path(peer1)=1000
11
Algoritmo di ricerca (altro esempio) query(peer a,query p,livello l) { found= false; remanent_path = sub_path(path(a), l, k); common_path = common_prefix_of(p, rempath); IF length(common_path) = length(p) THEN result = a ELSE IF length(path(a)) > l + length(compath) THEN querypath = sub_path(p, length(compath) + 1,length(p)); refs = refs(l + length(compath) + 1, a); WHILE |refs| 1 AND NOT found r = random_select(refs); IF online(peer(r)) found = query(peer(r), querypath, l+length(compath)); RETURN found; } peer1, 1000, 1 ) { 1011 10 24 path(peer1)=1011 NO 42 00 Esempio: peer3 (ON) peer5 (OFF) peer6 (ON) peer3 query(peer3, 00, 3); peer3 query(peer a,query p,livello l) { found= false; remanent_path = sub_path(path(a), l, k); common_path = common_prefix_of(p, rempath); IF length(common_path) = length(p) THEN result = a ELSE... Prende la parte di query che rimane togliendo il prefisso comune Estrae i riferimenti al livello 3, quindi a peer che gestiscono path del tipo 100… path(peer3)=1000… peer3, 00, 3 00 peer 3 è responsabile per la chiave 1000
12
Algoritmo di ricerca Si noti come il peer risultante dalla query non sia leffettivo owner del documento ma colui che se interrogato è in grado di restituire il peer che è il reale possessore del dato Per acquisire litem il P ASKER non dovrà fare altro che interrogare successivamente il risultante della query e colui che gli sarà segnalato come owner del documento
13
P-Grid (già inizializzata) P1P1 P2P2 P5P5 P6P6 P4P4 P3P3 0111000110111010
14
Esempio di query (1°) P1P1 011011 ask(011) MATCH
15
Esempio di query (2°) P1P1 011010 ask(010) ask(010,level(3)) P5P5 010XX0 response(P 5 ) MATCH
16
Esempio di query (3°) P1P1 011110 ask(110) ask(110,level(1)) P2P2 10110 response(P 4 ) P4P4 ask(110,level(2)) response(P 4 ) 110X10 MATCH
17
P2P2 Esempio di query (4°) P1P1 011110 ask(111) ask(111,level(1)) P6P6 response(P 4 ) 111111 PEER OFF-LINE MATCH
18
Costruzione della P-Grid Il processo di costruzione della P-Grid si basa sul concetto di meeting Un meeting è un incontro di due peer durante il quale viene effettuata la procedura di exchange Tramite la procedura di exchange la coppia cerca di Raffinare il proprio path Aggiornare i propri riferimenti Due peer si possono incontrare: Randomicamente Durante altre operazioni Quando si trovano in relazione mentre eseguono una query
19
Procedura di exchange exchange(a1, a2, r) { commonpath = common_prefix_of(path(a1), path(a2)); lc = length(commonpath); IF lc > 0 { commonrefs = union(refs(lc, a1), refs(lc, a2)); refs(lc, a1) = random_select(refmax, commonrefs); refs(lc, a2) = random_select(refmax, commonrefs);. PAPA PBPB PYPY 011 PXPX PZPZ 010 PYPY PWPW PYPY PXPX PZPZ PWPW lc=2 PXPX PWPW refmax=3 refmax è un parametro che indica il numero massimo di riferimenti per livello
20
Procedura di exchange l1 = length(sub_path(path(a1), lc + 1, length(path(a1))); l2 = length(sub_path(path(a2), lc + 1, length(path(a2))); CASE l1 = 0 AND l2 = 0 AND length(commonpath) < maxlength path(a1) = append(path(a1), 0); path(a2) = append(path(a2), 1); refs(lc + 1, a1) = {a2}; refs(lc + 1, a2) = {a1}; Caso 1: se i path dei peer sono uguali si introduce un nuovo livello maxlength è un parametro che indica la dimensione massima dei path
21
Esempio di exchange (1°) PAPA 01 1 PBPB 01 0 PBPB PAPA
22
Procedura di exchange CASE l1 = 0 AND l2 > 0 AND length(commonpath) < maxlength path(a1) = append(path(a1), value(lc+1, path(a2)^-); refs(lc + 1,a1)={a2}; refs(lc + 1,a2)=random_select(refmax,union({a1},refs(lc+1,a2)); Caso 2: se il path di un peer è prefisso dellaltro e non si è raggiunta ancora la maxlength splittiamo lo spazio del primo peer con il valore (lc+1)-esimo complementato del secondo e aggiorniamo i riferimenti Banalmente se l1>0 e l2=0 vale una procedura speculare alla precedente
23
Esempio di exchange (2°) PAPA 01 1 PBPB PBPB PYPY 010 PXPX PAPA PYPY PXPX refmax=2 PAPA
24
Procedura di exchange CASE l1 > 0 AND l2 > 0 AND r < recmax, refs1 = refs(lc+1, a1) \ {a2}; refs2 = refs(lc+1, a2) \ {a1}; FOR r1 IN refs1 DO IF online(peer(r1)) THEN exchange(a2, peer(r1), r+1); FOR r2 IN refs2 DO IF online(peer(r2)) THEN exchange(a1, peer(r2), r+1); Caso 3: se i path dei due peer sono differenti si considera il livello corrispondente al primo bit differente (che è l lc+1- mo). I riferimenti di quel livello di ciascuno dei due peer saranno oggetto di exchange con laltro. recmax è un parametro che indica il massimo grado di ricorsione della procedura di exchange
25
Esempio di exchange (3°) PAPA PBPB PGPG PFPF 01100100 PDPD PCPC PEPE PHPH 01000101 0 1 1 011 1 0110 0 1 0 PBPB PAPA
26
Attenzione CASE l1 > 0 AND l2 > 0 AND r < recmax, r parametro di input della procedura recmax valore di sistema (numero massimo di ricorsioni successive) Sperimentalmente: recmax ottimo =2 PAPA PBPB 01100100 PDPD PCPC PEPE 01000101 0 1 0 PKPK 0100
27
Non siete convinti? Intuitivamente può capitare che uno dei peer sul percorso sia offline… e allora addio al file desiderato!!! Vi dimostreremo che sarà possibile: con solo il 30% di nodi online 99% di possibilità di reperire il documento
28
Considerazioni Definiamo: refmax # riferimenti memorizzati dal singolo peer per ogni livello k lunghezza della chiave p probabilità che un peer sia on-line Nel nostro esempio ci riferiamo a valori di refmax=20, k=10, p=30% Consideriamo il caso peggiore ad ogni livello un nuovo peer deve essere contattato
29
Dimostrazione 1-(1-p) refmax (1-(1-p) refmax ) k probabilità di raggiungere un peer al livello successivo probabilità effettuare una ricerca con successo valore relativo: 99,9% valore relativo: 99,2% consideriamo k livelli
30
Inizializzazione Come la P-Grid debba essere costruita in fase di start-up è un problema che non viene trattato dagli algoritmi precedenti Sarà tra poco pubblicato un lavoro riguardante queste tematiche. In breve ad ogni meeting: Ciascun peer arricchisce la propria conoscenza sui documenti presenti nella rete esplorando quelli dellaltro (aggiungendo item a livello foglia) Fa una update sui documenti da lui gestiti in caso di modifica del proprio path (eliminazione di documenti non più gestiti) Per maggiori informazioni, le tecniche esposte sono state implementate nella nostra applicazione
31
Update Allaggiunta di un nuovo documento in uno dei peers facenti parte della P-Grid è necessario eseguire una procedura di update su ciascun peer che a livello foglia dovrebbe gestire la chiave della nuova entry Varie tecniche sono possibili: Facendo ripetutamente ricerche randomiche depth-first nella speranza di fare tutte le update necessarie Facendo ununica ricerca breadth-first e conseguenti update Mantenendo una lista dei peers che sono responsabili della stessa chiave e facendo una solo ricerca depth-first Sperimentalmente è risultata la miglior soluzione
32
N-GRID E un simulatore di una rete P2P basata su P-Grid le cui parti costituenti sono: Un peerPooler, che gestisce i meeting tra i peer N peer, ciascuno dei quali rappresenta un nodo fisico: È in realtà un thread che esegue in modo indipendente dagli altri peer È lowner di una serie di documenti le cui chiavi sono generate a caso Risponde a query per un documento Manifesta (su richiesta) i suoi riferimenti ai vari livelli Unastrazione di rete, che ci ha permesso di implementare gli algoritmi come se ci trovassimo effettivamente in un ambiente distribuito
33
Riferimenti [1] Karl Aberer, Magdalena Punceva, Manfred Hauswirth, Roman Schmidt: Improving Data Access in P2P Systems [2] Karl Aberer, Philippe Cudré-Mauroux, Anwitaman Datta, Zoran Despotovic, Manfred Hauswirth, Magdalena Punceva, Roman Schmidt: P-Grid: A Self-organizing Structured P2P System [3] Karl Aberer, Philippe Cudré-Mauroux, Anwitaman Datta, Zoran Despotovic, Manfred Hauswirth, Magdalena Punceva, Roman Schmidt, Jie Wu :Advanced Peer-to-Peer Networking: The P-Grid System and its Applications [4] Roman Schmidt: Gridella: an open and efficient Gnutella- compatible Peer-to-Peer System based on the P-Grid approach [5] Karl Aberer, Anwitaman Datta, Manfred Hauswirth, Roman Schmidt: Indexing data-oriented overlay networks (NON ANCORA PUBBLICATO)
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.