Distributed hash tables Flashcards

1
Q

Was ist ein DHT (Distributed Hash Table) ?

A

Ein DHT verteilt (Key, Value) Paare über mehrere Computer (buckets) die überall auf der Welt verteilt sein können. Wenn ein User einer eine Key eingibt, benutzt das System eine Hashfunktion um den Value zum Key zu finden, welcher auf einem der Computer gespeichert ist. Der Hash identifiziert dabei den Computer (bucket). Dabei müss nicht jeder Comupter jeden anderen kennen aber alle müssen irgendwie erreichbar sein.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Welche Funktionen hat ein DHT interface?

A
  • lookup(key) -> value
  • insert(key, value)
  • delete(key)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Welche zwei Probeleme haben DHTs und wie können sie gelöst werden

A
  • Problem 1: Mit einer Modulo Hash Funktion verändert jeder Knoten virtuell seine Position beim hinzufügen und lösen von Knoten
  • Lösung 1: Wir benutzen ein Konsistenten Hash. Dabei haben wir einen festen Hashraum. Alle Hashwerte fallen in diesen Raum und der key geht zum Knoten der am nächsten an der ID dran ist
  • Problem 2: alle Knoten müssen bekannt sein
  • Lösung 2: Jeder Knoten kennt nur ein paar “Nachbarn” und Nachricht wird über mehrere Knoten weitergleitet
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Was ist ein Chord?

A

Ein Chord ist eine DHT Implementierung

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Wie werden beim Chord die IDs auf die Knoten abgebildet?

A
  • Der Hashraum ist eindimensionaler Raum mit Werten von 0 bis 2(^m)-1
  • Jeder Knoten hat einen Pointer zu seinem Vorgänger
  • Jeder Knoten ist Werte von [VorgängerID+1, self.ID] verantwordlich
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Wie sieht der Lookup beim Chord aus?

A
  • lookup startet bei einem Knoten
  • Nachricht geht im Kreis rum bis zum Vorgänger des verantwortlichen Knoten.
  • Voränger teil Startknoten den Verantwortlichen mit
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Wie sieht die Joining Operation beim Chord aus?

A
  • Jeder Knoten A sendet periodisch eine stabalize Nachricht an seinen Nachfolger B
  • Wenn B stabalize() erhält, sendet B notifiy(B’) mit B’ = pred(B) an A
  • Wenn B’ = A bleibt alles gleich
  • Wenn B’ != A: B’ wird der neue Nachfolger von A und A sendet stabalize() an B’
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Joining Operation von Chord - Beispiel

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Chords mit Finger Tables

A
  • Finger Table halten Inforamtion über mögliche zuständige Knoten

hier ist m = 7

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Was versteht man unter latency stretch?

A

Latency Stretch ist ein Faktor welcher beschreibt wie die Overlay-Topologie (also bei Chord die Ring- Struktur) durchschnittlich die Latenzzeiten vergrö- ßert im Vergleich zu einem vollvermaschten Netwerk, bei dem jede Anfrage den direkten Weg nehmen würde.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Was ist die Formel vom latency stretch?

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Was ist die allgemeine Formel zum Ausrechnen des i-ten Werts in der Finger Table des Knotens mit der ID n bei Chord?

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Wie vereinfacht eine Finger Table den Chord Lookup?

A

Der Aufwand eine beliebigen ID in Ring zu erreichen geht von O(n) Schritten auf O(log n) Schritten, wobei jeder Knoten nur m Tabelleneinträge aktuell halten muss.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly