Verteilte Systeme - P2P-Computing - fbi.h

Werbung
Verteilte Systeme - P2P-Computing ... [email protected]
Verteilte Systeme - P2P-Computing
... [email protected]
Alois Schütte
15. Oktober 2014
1 / 27
Verteilte Systeme - P2P-Computing ... [email protected]
Inhaltsverzeichnis
Die Kommunikation in verteilten Systemen, bei denen eine Menge von
gleichberechtigten Partnern gemeinsam einen Dienst anbieten und
nutzen, soll hier beleuchtet werden.
1 Einleitung
2 Verteilte Hashtabellen
3 Fallbeispiel AChord.im
2 / 27
Verteilte Systeme - P2P-Computing ... [email protected]
Einleitung
Einleitung
Der Begri↵ Peer-to-Peer (P2P) wurde u.a. populär im Zusammenhang
mit der Musik Tauschbörse Napster.
• Mit dieser Anwendung traten erstmals im Internet Client-Rechner in
einen großen Verbund ein.
• Der Regelfall im Intranet und Internet war es bis dahin, dass es sich
um sternförmige Netzstrukturen handelt:
• mehrere Clients greifen auf Dienste eines Servers zu.
• Die Clients bieten dabei ihrerseits keine Dienste für andere Clients an.
• Bei P2P bilden die Clients an den Extremitäten des Netzes
untereinander eine Verknüpfung Gleichberechtigter (englisch: Peer).
3 / 27
Verteilte Systeme - P2P-Computing ... [email protected]
Einleitung
Evolution der Verbindungsstruktur
Die Architektur von verteilten Anwendungen wandelt sich, ausgehend von
reinen Client-Server Strukturen, über Web- zu P2P Strukturen.
4 / 27
Verteilte Systeme - P2P-Computing ... [email protected]
Einleitung
Vorteile der P2P Kommunikation
Vorteile der P2P Kommunikation
Die am meisten verwendete Aktionen im Internet sind:
• Suchen,
• Berechnen,
• Sharing.
Gerade dazu wird durch P2P ein Modell zur Verfügung gestellt mit dem
u.a. folgende Vorteile erzielt werden:
• Ressourcen können von Peers bereitgestellt werden, für diejenigen,
die sie gerade brauchen (Filesspace, CPU-Power, ....).
• Die Suche kann verteilt und asynchron erfolgen, so dass Ergebnisse
insgesamt schneller gefunden werden können.
• Instant Messaging Systeme auf P2P Basis können Benutzer (Peers)
unabhängig vom Service Provider ausfindig machen und die
Kommunikation zwischen Peers ermöglichen.
• Käufer und Verkäufer können in P2P Auktionen direkt
Transaktionen ausführen.
Was sind die Nachteile ?
Kennen Sie Beispiele für P2P Anwendungen ?
5 / 27
Verteilte Systeme - P2P-Computing ... [email protected]
Einleitung
Architekturkonzepte
Architekturkonzepte
Grundsätzlich unterscheidet man P2P Architekturen
• mit (Hybridarchitektur) und
• ohne (Pure P2P Architektur)
zentrale Kontrolle.
6 / 27
Verteilte Systeme - P2P-Computing ... [email protected]
Einleitung
Architekturkonzepte
Hybridarchitektur
Das Hybrid P2P-Modell bedient sich auf der einen Seite der
Client-Server-, auf der anderen der P2P-Beziehung.
• Es ist semi-zentral und beinhaltet
mindestens einen zentralen
Kontrollpunkt.
• Der Zweck reicht von der Kontrolle des
gesamten Netzwerks bis zu einem
einfachen Bezugspunkt für die
verbundenen Peers.
• Oft existiert ein alleinstehender Peer,
der für alle anderen Peers einen Index
bzw. Katalog für die verfügbaren
Daten darstellt.
7 / 27
Verteilte Systeme - P2P-Computing ... [email protected]
Einleitung
Architekturkonzepte
Hybridarchitektur
Vorteil
• Der Indexserver bringt den Vorteil mit
sich, dass kein spezieller Suchdienst
erforderlich ist.
Nachteil
• Ausfall des Kontrollpunktes legt das
gesamte P2P Netz lahm.
Beispiel: Napster
8 / 27
Verteilte Systeme - P2P-Computing ... [email protected]
Einleitung
Architekturkonzepte
Super P2P
Das Super P2P-Modell ist eine Weiterentwicklung des Hybrid P2P, wobei
die zentrale Verwaltungsinstanz keine einzelner Server ist, sondern selbst
ein (teil-) P2P Netz.
• Gut angebundene Knotenpunkte im
Netzwerk werden als Super-Nodes
eingesetzt, die als
Übergangs-Indexserver dienen.
• Hierbei erfolgt eine
Peer-to-Peer-Interaktion zwischen
”
ausgezeichneten“ Teilnehmern
”
(Super-Peers)“ sowie zwischen
normalen Peers.
• Super-Nodes und normale Peers
interagieren in einen
Client-Server-Beziehung.
Beispiel: KaZaa
9 / 27
Verteilte Systeme - P2P-Computing ... [email protected]
Einleitung
Architekturkonzepte
Super P2P
Das Pure P2P-Modell ist völlig dezentral ausgelegt.
• Es beinhaltet keinen zentralen
Kontrollpunkt.
• Die Peers werden als völlig gleichwertig
und autonom betrachtet.
• Daten oder Rechenleistung sollen sich
über alle Peers verteilen, die direkt
oder indirekt über andere Peers
miteinander kommunizieren können.
• Die Organisation der Peers kann
entweder eine feste Struktur aufweisen
oder gänzlich unstrukturiert sein.
Beispiel: Gnutella, Achord.im
10 / 27
Verteilte Systeme - P2P-Computing ... [email protected]
Verteilte Hashtabellen
Verteilte Hashtabellen
• Verteilte Hashtabellen (distributed hash tables, DHT) bilden die
Basis vieler P2P-Netze.
• Wir werden hier das Chord-Verfahren diskutieren.
11 / 27
Verteilte Systeme - P2P-Computing ... [email protected]
Verteilte Hashtabellen
Idee
Idee
• Eine Hastabelle auf einem Server könnte verwendet werden, um
einen Lookup-Service für Schlüssel-Werte Paare zu realisieren.
Server
-
key = 14
Client
value = 9
H = key %3
0 : (3, 17) ! (9,
5) ! (15, 0)
1)
@
@12 :: (4,
(8, 16) ! (14, 9)
• Vorteil
• einfach zu implementieren
• Nachteil
• Single point of attacks
• Der zentrale Server bildet den Flaschenhals, wenn eine große Anzahl
von Schlüssel-Werte Paare zu speichern sind.
• Eine verteilte Hash-Tabelle weist diese Nachteile nicht auf.
12 / 27
Verteilte Systeme - P2P-Computing ... [email protected]
Verteilte Hashtabellen
Idee
Chord: Verteilete Hash-Tabellen (DHT)
• DHT bilden eine Klasse von verteilten Systemen zur Realisierung
von Lookup Diensten.
• Schlüssel-Werte Paare werden auf Knoten eines P2P Netzes
gespeichert.
• Jeder Knoten kann einen zu einem Schalüssel gehörenden Wert
effizient finden.
• Die Verwaltung des Mapping von Schlüsseln zu verantwortlichem
Konten kann mit minimalem Umfang von Unterbrechungen
durchgeführt werden.
• Dies erlaubt eine sehr hohe Skalierung des P2P Netzes mit
kontinuierlichem Hinzufügen und Entfernen von Knoten.
(18, 16)
'$
r
X
X
zr(9, 15)
X
(3, 17)
- r✓
BBN r(14, 9)
value = 9
r(15, 0) r
&%
(4, 1)
key = 14
Client
13 / 27
Verteilte Systeme - P2P-Computing ... [email protected]
Verteilte Hashtabellen
Chord
Chord
Ein grundlegendes Problem der Peer-to-Peer Technik ist es, den richtigen
Knoten zu finden, der die gesuchte Information enthält.
• Hierzu sind Verteilte Hash-Tabellen eine Lösung.
• Wir betrachten den Chord-Ansatz (vgl. [chord]).
• Chord liefert dazu eine Operation lookup(key):
Finde zu einem Schlüssel den Knoten
(IP-Adresse), der die Informationen zum
Schlüssel enthält
Server
Server
Server
Server
14 / 27
Verteilte Systeme - P2P-Computing ... [email protected]
Verteilte Hashtabellen
Chord
System-Modell
Ein Chord-Netz hat folgende Eigenschaften:
• balanciert:
Chord agiert als verteilte Hash-Funktion und verteilt Schlüssel
gleichmäßig über alle Knoten.
• dezentral:
Chord ist verteilt, es gibt keine zentrale Kontrolle und keine
ausgezeichneten Knoten mit Sonderrechten.
• skalierbar:
Die Kosten für lookup wächst logarithmisch mit der Knotenanzahl.
Daher ist es auch für große Netze geeignet.
• verfügbar:
Chord adjustiert die interne Verwaltungs-Tabellen automatisch,
wenn Knoten entfernt werden oder neue hinzukommen.
• flexibles Namensschema:
Der Namensraum für Schlüssel ist flach, d.h. die Anwendungen sind
flexible in der Zuordnung ihrer Namen für Objekte zu
Chord-Schlüsseln.
15 / 27
Verteilte Systeme - P2P-Computing ... [email protected]
Verteilte Hashtabellen
Chord
Chord-Protokoll - Konsistentes Hashing
Die konsistente Hash-Funktion ordnet jedem Knoten und jedem Schlüssel
einen m-Bit Bezeichner unter Verwendung von SHA-1 zu
• Knoten n: sha1(IP von n)
• Schlüssel k: sha1(k)
Die Schlüssel werden den Knoten wie folgt zugewiesen:
• Die Bezeichner werden sortiert in einem Kreis modulo 2m
angeordnet.
• Schlüssel k wird dem Knoten n = successor (k) zugewiesen mit
n = k oder n ist erster Knoten im Kreis ausgehend von k im
Uhrzeigersinn
Bezeichner-Kreis mit
- drei Knoten 0, 1, 3
- drei Schlüssel 1, 2, 6
6
1
0
7
suc(6) = 0
Knoten
Schlüssel
suc(1) = 1
1
6
suc(2) = 3
2
5
3
2
4
16 / 27
Verteilte Systeme - P2P-Computing ... [email protected]
Verteilte Hashtabellen
Chord
Chord-Protokoll - Konsistentes Hashing
Konsistentes Hashing ist so designed, dass es ohne große Verwaltung
möglich ist, dass Knoten beitreten bzw. das Netz verlassen können.
Verfahren Knoten n:
beitreten n übernimmt die Schlüssel seines Nachfolgers
Bezeichner-Kreis mit
- drei Knoten 0, 1, 3
- drei Schlüssel 1, 2, 6
Knoten 7 tritt bei
6
1
0
7
suc(6) = 0
Knoten
Schlüssel
6
suc(2) = 3
2
5
3
4
1
6
0
suc(1) = 1
1
7
suc(6) = 0
suc(1) = 1
1
6
suc(2) = 3
2
5
3
2
2
4
17 / 27
Verteilte Systeme - P2P-Computing ... [email protected]
Verteilte Hashtabellen
Chord
Chord-Protokoll - Konsistentes Hashing
Verfahren Knoten n:
verlassen der Nachfolger von n übernimmt die Schlüssel von n
Bezeichner-Kreis mit
- drei Knoten 0, 1, 3
- drei Schlüssel 1, 2, 6
Knoten 7 tritt bei
6
1
0
7
suc(6) = 0
Knoten
Schlüssel
6
suc(2) = 3
2
5
3
4
1
6
0
suc(1) = 1
1
7
suc(6) = 0
suc(1) = 1
1
6
suc(2) = 3
2
5
3
2
2
4
Dieses Verfahren sollen Sie im letzten Praktikum implementieren.
P2P Echo Server ! Rechner: $ VerteilteSystem/bin/P2P/run.sh tcp
18 / 27
Verteilte Systeme - P2P-Computing ... [email protected]
Verteilte Hashtabellen
Chord
Implementierung konsistentes Hashing
Zum Implementieren von ’konsistentem Hashing’ braucht jeder Knoten
als Verwaltungsinformation nur seinen Nachfolger zu kennen:
Eine Querry nach einem Bezeichner
folgt den succ-Pointern der Knoten
bis der erste Knoten gefunden ist, der
zum Bezeichner passt.
Problem:
Dieses Verfahren ist aber ineffizient:
man muss u.U. alle N Knoten
besuchen !
Lösung:
Jeder Knoten wird mit zusätzlicher ’Routing-Information
ausgestattet.’
19 / 27
Verteilte Systeme - P2P-Computing ... [email protected]
Verteilte Hashtabellen
Chord
Implementierung konsistentes Hashing - finger table
Jeder Knoten n erhält eine Routingtabelle (finger table):
der i-te Eintrag von n enthält den ersten Knoten s, der 2i 1
Schritte von n entfernt ist d.h. s = successor (n + 2i 1 ) mit
1  i  m. (Notation: n.finger [i].node)
Gespeichert werden nun folgende Informationen an jedem Knoten n:
Notation
finger [k].start
.interval
.node
successor
predecessor
Definition
(n + 2k 1 )%2m , 1  k  m
[finger [k].start, finger [k + 1].start]
first node n.finger [k].start
next node on the circle;
previous node on the circle
1.finger[3].intervall = [ finger[3].start, 1 ]
finger Intervalle des Knoten 1
0
1
7
6
2
1.finger[1].start = 2
1.finger[1].intervall =
[ 1.finger[1].start,
5
1.finger[3].start = 5
3
1.finger[2].start ]
1.finger[2].start = 3
4
1.finger[2].intervall =
[ 1.finger[2].start, 1.finger[3].start ]
20 / 27
Verteilte Systeme - P2P-Computing ... [email protected]
Verteilte Hashtabellen
Chord
Implementierung konsistentes Hashing - finger table
Dieses Schema hat folgende grundlegende Charakteristiken:
1
Jeder Knoten speichert nur
wenig Informationen über
andere Knoten.
2
Jeder Knoten ’weiß’ mehr
über seine nahen Nachfolger
als von den entfernten
Nachfolgern.
3
Die finger-Tabelle eines
Knotens kann nicht für jeden
Schlüssel den Nachfolger
bestimmen, z.B. Knoten 3
kennt nicht den Nachfolger
von 1.
finger Tabellen und Schlüssel Lokation
im Netz mit Knoten 0, 1, 3 und
Schlüssel 1, 2, 6
finger Tabelle
start Interv. succ
1
2
4
[1,2]
[2,4]
[4,0]
Schlüssel
6
1
3
0
0
7
1
finger Tabelle
start Interv. succ
6
2
5
3
4
2
3
5
[2,3]
[3,5]
[5,1]
finger Tabelle
start Interv. succ
4
5
7
[4,5]
[5,7]
[7,3]
Schlüssel
1
3
3
0
Schlüssel
2
0
0
0
21 / 27
Verteilte Systeme - P2P-Computing ... [email protected]
Verteilte Hashtabellen
Chord
Implementierung konsistentes Hashing - Nachfolger finden
Wegen Punkt 3 verwendet man folgenden Algorithmus, um den
Nachfolger eines beliebigen Bezeichners zu finden, man verwendet RPC:
1
2
3
4
5
7
8
9
10
11
12
13
15
16
17
18
19
20
21
// ask node n to find id 's successor
n . find_suc cessor ( id ) {
n ' = f i n d_ p r e d e c e s s o r ( id );
return n '. successor ;
}
// ask node n to find id 's predecessor
n . f i n d _ p r e d e c e s s o r ( id ){
n' = n;
while ( id not in ( n ' , n '. successor ))
n '= n '. c l o s e s t _ p r e c i d i n g _ f i n g e r ( id );
return n '
}
// return closest finger preceding id
n . c l o s e s t _ p r e c e d i n g _ f i n g e r ( id ) {
for ( i = m downto 1)
if ( finger [ i ]. node is in (n , id )
return finger [ i ]. node ;
return n ;
}
finger Tabellen und Schlüssel Lokation
im Netz mit Knoten 0, 1, 3 und
Schlüssel 1, 2, 6
finger Tabelle
start Interv. succ
1
2
4
[1,2]
[2,4]
[4,0]
Schlüssel
6
1
3
0
0
7
1
finger Tabelle
start Interv. succ
6
2
5
3
4
2
3
5
[2,3]
[3,5]
[5,1]
finger Tabelle
start Interv. succ
4
5
7
[4,5]
[5,7]
[7,3]
Schlüssel
1
3
3
0
Schlüssel
2
0
0
0
22 / 27
Verteilte Systeme - P2P-Computing ... [email protected]
Verteilte Hashtabellen
Chord
Implementierung konsistentes Hashing - Nachfolger finden
Beispiel:
Knoten 3 will successor von Bezeichner 1 wissen
1
Knoten 3:
1 gehört zu Intervall [7,3], also
3.finger[3].succ = 0.
2
Konten 3:
Da O Vorgänger von 1 ist, fragt
Knoten 3 Knoten 0, den Nachfolger
von 1 zu bestimmen.
3
4
Knoten 0:
Knoten 0 sieht in seiner
finger-Tabelle, 0.finger[1].succ = 1.
Knoten 0;
Also gibt Knoten 0 die 1 als
Ergebnis an Knoten 3 zurück.
finger Tabellen und Schlüssel Lokation
im Netz mit Knoten 0, 1, 3 und
Schlüssel 1, 2, 6
finger Tabelle
start Interv. succ
1
2
4
[1,2]
[2,4]
[4,0]
Schlüssel
6
1
3
0
0
7
1
finger Tabelle
start Interv. succ
6
2
5
3
4
2
3
5
[2,3]
[3,5]
[5,1]
finger Tabelle
start Interv. succ
4
5
7
[4,5]
[5,7]
[7,3]
Schlüssel
1
3
3
0
Schlüssel
2
0
0
0
23 / 27
Verteilte Systeme - P2P-Computing ... [email protected]
Verteilte Hashtabellen
Chord
Implementierung konsistentes Hashing - Aufwand
Satz:
Die Anzahl von Knoten, die in
einem N-Knoten Netzwerk
kontaktiert werden müssen, um
den Successor eines Knoten zu
bestimmen ist O(log N).
finger Tabellen und Schlüssel Lokation
im Netz mit Knoten 0, 1, 3 und
Schlüssel 1, 2, 6
1
2
4
[1,2]
[2,4]
[4,0]
Schlüssel
6
1
3
0
0
7
Beweis:
vgl. [chord]) oder experimentell
im Praktikum mit OpenCourd
(http: // open-chord.
sourceforge. net ).
finger Tabelle
start Interv. succ
1
finger Tabelle
start Interv. succ
6
2
5
3
4
2
3
5
[2,3]
[3,5]
[5,1]
finger Tabelle
start Interv. succ
4
5
7
[4,5]
[5,7]
[7,3]
Schlüssel
1
3
3
0
Schlüssel
2
0
0
0
24 / 27
Verteilte Systeme - P2P-Computing ... [email protected]
Verteilte Hashtabellen
Chord
Dynamik des Netzes
IN ARBEIT
25 / 27
Verteilte Systeme - P2P-Computing ... [email protected]
Fallbeispiel AChord.im
Fallbeispiel AChord.im
Hier wird als Beispiel auf ein P2P System eingegangen, das im Rahmen
vom Musterprojekten entstanden ist.
Vortrag AChord
26 / 27
Verteilte Systeme - P2P-Computing ... [email protected]
Fallbeispiel AChord.im
Literatur- & Quellenverzeichnis
[chord] Ion Stoica, Robert Morris, David Karger, M. Frans Kaashoek, Hari Balakrishnan: ’Chord: A
Scalable Peer-to-peer Lookup Service for Internet Applications’
http://pdos.csail.mit.edu/papers/chord:sigcomm01/chord_sigcomm.pdf
27 / 27
Herunterladen