VS-11 – Wahlalgorithmen

Werbung
Überblick
Motivation
Problem: Wahl eines Anführerknotens
Beispielszenarien
Koordinierung verteilter Aktionen
Erzeugung systemweit eindeutiger Token
Wahlalgorithmen
Motivation
Grundlagen
Chang-Roberts-Algorithmus
Wellenverfahren
Adoptionsverfahren
Anlässe
Initialisierung im Rahmen des Systemstarts
Neukonfigurierung als Reaktion auf Fehler
Verwandtes Problem: Bestimmung einer maximalen Knoten-ID
Anforderungen
Eindeutigkeit: Zu jedem Zeitpunkt ist maximal ein Knoten der Anführer
Terminierung: Bestimmung des Anführers erfolgt in endlicher Zeit
Zusätzliche Kriterien (Beispiele)
Deterministischer Wahlalgorithmus
Benachrichtigung aller Knoten über das Ende bzw. Ergebnis der Wahl
c td
VS (SS16)
Wahlalgorithmen
11 – 1
c td
VS (SS16)
Wahlalgorithmen – Motivation
Motivation
Sequentielle Verfahren
Systemmodell
Tiefensuche auf Bäumen
public class VSNode {
private final int id = [ID des lokalen Knotens];
private final List<VSNode> children = [Liste der Kindknoten];
Verteiltes System mit potenziell sehr vielen Knoten
Knoten
Gesamtzahl aller Knoten ist unbekannt
Jeder Knoten hat eindeutige ID
Nicht alle Knoten sind kontinuierlich Teil des Systems
public int findMaxID() {
int maxID = id;
for(VSNode child: children) {
int childMaxID = child.findMaxID();
if(maxID < childMaxID) maxID = childMaxID;
}
return maxID;
} }
Unterschiedliche Netztopologien
Ring
Baum
Beliebige Strukturierung
Tiefensuche auf beliebigen Topologien (Beispiel)
→ Nicht jeder Knoten ist notwendigerweise mit jedem anderen verbunden
Ein Initiatorknoten empfängt“ ein Token über eine virtuelle Kante kinit
Empfang des Tokens” durch Knoten i über eine Kante k
Herausforderungen
Wie kann eine Wahl in nicht vollvermaschten Systemen realisiert werden?
Wie lässt sich die Effizienz durch Wissen über die Netztopologie steigern?
Wie wählt man einen Anführer in Systemen mit komplexer Netztopologie?
c td
VS (SS16)
Wahlalgorithmen – Motivation
11 – 2
11 – 3
Erstmaliger Empfang: Eintrag von i ins Token, merken der Kante kfirst := k
Weitergabe des Tokens an einen Nachbarn, der das Token noch nicht hatte
Falls kein solcher Nachbar existiert: Senden des Tokens über Kante kfirst
Terminierung, sobald Initiator das Token über die Kante kinit sendet“
”
c td
VS (SS16)
Wahlalgorithmen – Grundlagen
11 – 4
Erzeugung eines virtuellen Baums beim Systemstart
Chang-Roberts-Algorithmus
Vorbereitung
Voraussetzungen
Anordnung aller Knoten in einem (logischen) unidirektionalen Ring
Definition einer totalen Ordnung auf Knoten-IDs (z. B. ID ∈ [1,...,n])
Ermittlung einiger Adressen anderer Knoten für Verbindungsaufbau
Beispiel: Nutzung einer Registry
Bestimmung des aktiven Knotens mit der höchsten ID
Verbindungsaufbau
Verwaltung eines
lokalen Levels
Wurzelknoten des
Baums hat Level 0
Elternknoten: Nachbar
mit kürzester Distanz
zum Wurzelknoten
VS (SS16)
Start des Wahlalgorithmus
public void connect(List<VSNode> nodes) {
for(VSNode node: nodes) {
// Verbindungsaufbau
boolean connected = [Aufbau der Verbindung];
if(!connected) continue;
Empfang einer ID i
// Bestimmung des Elternknotens
if((level < 0) || (level > node.level)) {
level = node.level + 1;
parent = node;
}
Wiederholung der
Auswahl bei Abbruch
der Elternverbindung
c td
private int level = -1;
private VSNode parent = null;
Annahme: Alle Knoten starten Algorithmus zur selben Zeit
Jeder Knoten sendet eigene Knoten-ID im Ring weiter
Jeder Knoten wird wählbar
Falls i > eigene ID
Falls i < eigene ID
Falls i = eigene ID
Literatur
Ernest Chang, Rosemary Roberts
An improved algorithm for decentralized extrema-finding
in circular configurations of processes
Communications of the ACM, 22(5):281–283, 1979.
}
}
Wahlalgorithmen – Grundlagen
11 – 5
Beispiel
Knoten sendet i weiter und ist nicht mehr wählbar
Nachricht ignorieren
Falls Knoten wählbar, dann ist er als Anführer gewählt
Sonst: Nachricht ignorieren
c td
VS (SS16)
Wahlalgorithmen – Chang-Roberts-Algorithmus
11 – 6
Beispiel
3
3
2
2
5
3
2
5
4
4
1
5
4
1
1
c td
VS (SS16)
Wahlalgorithmen – Chang-Roberts-Algorithmus
11 – 7
c td
VS (SS16)
Wahlalgorithmen – Chang-Roberts-Algorithmus
11 – 7
Beispiel
Beispiel
3
3
4
2
5
4
2
5
5
4
1
4
1
5
c td
VS (SS16)
Wahlalgorithmen – Chang-Roberts-Algorithmus
11 – 7
Beispiel
c td
VS (SS16)
Wahlalgorithmen – Chang-Roberts-Algorithmus
11 – 7
Beispiel
3
4
3
2
5
4
2
5
5
4
1
4
1
5
c td
VS (SS16)
Wahlalgorithmen – Chang-Roberts-Algorithmus
11 – 7
c td
VS (SS16)
Wahlalgorithmen – Chang-Roberts-Algorithmus
11 – 7
Beispiel
Analyse
Bemerkungen
3
5
Einfacher Algorithmus auf Basis eines einfachen Systemmodells
Teilnehmer müssen die Gesamtzahl aller Knoten n nicht kennen
5
Mögliche Erweiterung
2
Anführer sendet nach seiner Wahl eine Benachrichtigung durch den Ring
Sauberes Beenden des Wahlalgorithmus auf allen Knoten möglich
5
Korrektheit
Eindeutigkeit
Nachricht mit einer bestimmten ID wird von genau einem Knoten erzeugt
Knoten mit höchster ID leitet nur seine eigene Nachricht weiter
Ein Knoten wird nur gewählt, wenn seine ID von allen weitergereicht wurde
4
c td
VS (SS16)
Terminierung
1
Wahlalgorithmen – Chang-Roberts-Algorithmus
Die Nachricht mit der größten ID wird von jedem Knoten weitergereicht
Nach n Schritten kommt die größte ID wieder beim Ursprungsknoten an
Achtung: Terminierung ist bei Ausfällen von Knoten nicht sichergestellt
11 – 7
c td
VS (SS16)
Wahlalgorithmen – Chang-Roberts-Algorithmus
Komplexität
Initiierung
Annahmen bei der Analyse der Zeitkomplexität
Veränderte Startbedingung
Bearbeitungsdauer von Nachrichten ist vernachlässigbar
Nachrichten kommen innerhalb einer maximalen Nachrichtenlaufzeit an
11 – 8
Gleichzeitiger Start des Algorithmus auf allen Knoten unrealistisch
Ein Knoten startet den Algorithmus durch Senden seiner ID
Andere Knoten beteiligen sich erst, nachdem sie eine Nachricht erhalten
Bester Fall: Knoten sind den IDs nach aufsteigend angeordnet
Zeitkomplexität
n Nachrichtenlaufzeiten
n + (n − 1) · 1 = 2n − 1 Nachrichten → O(n)
Bester Fall
Knoten mit höchster ID initiiert Wahl
n Nachrichtenlaufzeiten
Schlimmster Fall: Knoten sind den IDs nach absteigend angeordnet
Schlechtester Fall
n
PNachrichtenlaufzeiten
n
n·(n+1)
Nachrichten → O(n2 )
i=1 i =
2
Knoten mit höchster ID wacht als Letzter auf
(n − 1) + n = 2n − 1 Nachrichtenlaufzeiten
Durchschnittlicher Fall
Annahme: Alle (n − 1)! möglichen ID-Verteilungen gleichwahrscheinlich
n Nachrichtenlaufzeiten
Nachrichtenaufwand: O(n log n) (siehe [Chang et al.])
c td
VS (SS16)
Wahlalgorithmen – Chang-Roberts-Algorithmus
11 – 9
Optimierung
Unterdrückung der eigenen Nachricht, falls Aufwecken durch größere ID
Reduzierung der im besten Fall erforderlichen Nachrichten auf n
c td
VS (SS16)
Wahlalgorithmen – Chang-Roberts-Algorithmus
11 – 10
Variante
Wellenverfahren
Veränderte Architektur: Bidirektionaler Ring
Baumstruktur
Ungerichtete Kanten
Keine Zyklen
Unterschiede zur Standardvariante
Start: Jeder Knoten bestimmt die Senderichtung der eigenen ID zufällig
Jeder Knoten speichert die höchste ID imax , die er bisher gesehen hat
Unterdrückung einer neu empfangenen ID i, falls i < imax
Senderichtung der Weiterleitung abhängig
3
von bisheriger Senderichtung einer ID
Bemerkungen
2
Geringere Auftrittswahrscheinlickeit
Nachrichtenaufwand weiterhin O(n2 )
5
4
Kommunikation mit unterschiedlich vielen Nachbarknoten
Potenzial für Divide-and-Conquer-Ansätze
Wellenverfahren
Explorationswelle durchläuft den Baum bis zu den Blättern
Echowelle
kommt zurück und bestimmt die höchste ID
Informationswelle teilt allen Knoten das Ergebnis mit
5
Geringere Anzahl erforderlicher
Nachrichten im Durchschnittsfall
Schlimmster Fall
Vergleich zur Wahl auf Ringen
Literatur
Friedemann Mattern
Verteilte Basisalgorithmen
Springer-Verlag, 1989.
1
4
c td
VS (SS16)
Wahlalgorithmen – Chang-Roberts-Algorithmus
11 – 11
Algorithmus
VS (SS16)
9
16
c td
VS (SS16)
Wahlalgorithmen – Wellenverfahren
18
2
i
15
i
6
3
Weiterleitung der ersten Explorernachricht
in alle übrigen Richtungen
Falls Empfang einer weiteren Echonachricht e 0 :
Höchste ID im Netz ist Maximum der IDs von e und e 0
11 – 12
14
Innere Knoten mit k Kanten
Nach Erhalt von Echonachrichten auf k − 1 Kanten:
Senden einer Echonachricht e mit dem Maximum aller
bisher bekannten IDs über die verbleibende Kante
Wahlalgorithmen – Wellenverfahren
Beispiel
Dedizierte Initiatorknoten senden Explorernachrichten an alle ihre Nachbarknoten
Blattknoten senden bei Empfang einer Explorernachricht die eigene ID als Echonachricht zurück
c td
11
a
b
7
10
12
4
max(a,b,c)
17
c
5
x
y
1
11 – 13
c td
8
VS (SS16)
Wahlalgorithmen – Wellenverfahren
13
11 – 14
Beispiel
Beispiel
9
16
18
9
14
16
9
18
14
16
2
2
15
15
6
3
6
3
11
7
10
12
11
7
10
12
4
4
17
17
5
5
1
1
8
c td
VS (SS16)
13
8
1
Wahlalgorithmen – Wellenverfahren
11 – 14
Beispiel
c td
VS (SS16)
13
Wahlalgorithmen – Wellenverfahren
11 – 14
Beispiel
9
16
9
18
9
14
16
16
9
18
14
16
2
2
15
3
3
11
7
10
15
16
6
6
3
12
11
4
7
10
5
12
4
8
17
17
5
1
1
8
1
c td
8
VS (SS16)
8
Wahlalgorithmen – Wellenverfahren
13
8
1
11 – 14
c td
VS (SS16)
8
Wahlalgorithmen – Wellenverfahren
13
11 – 14
Beispiel
Beispiel
9
16
9
18
9
14
16
16
9
15
3
16
11
7
10
6
3
16
12
7
10
12
4
4
8
17
5
6
16
11
8
4
17
5
1
1
8
1
VS (SS16)
8
13
13
8
1
Wahlalgorithmen – Wellenverfahren
11 – 14
Beispiel
c td
VS (SS16)
8
13
Wahlalgorithmen – Wellenverfahren
11 – 14
Beispiel
9
16
9
18
9
18
16
14
16
18
14
14
2
2
18
16
15
6
3
16
11
10
18
6
3
16
7
11
8
4
15
6
16
12
17
7
10
12
17
4
17
4
17
5
5
1
13
8
1
c td
14
15
16
6
3
c td
14
2
16
3
18
16
2
3
18
VS (SS16)
8
Wahlalgorithmen – Wellenverfahren
13
1
11 – 15
c td
8
VS (SS16)
Wahlalgorithmen – Wellenverfahren
13
11 – 15
Beispiel
Beispiel
9
16
18
9
16
18
14
14
2
2
18
3
16
11
7
15
15
6
3
16
10
18
12
18
11
17
6
18
7
16
10
12
18
18
4
4
17
17
5
5
1
c td
8
VS (SS16)
13
Wahlalgorithmen – Wellenverfahren
1
11 – 15
Adoptionsverfahren für beliebige Topologien
c td
8
VS (SS16)
13
Wahlalgorithmen – Wellenverfahren
11 – 15
Beispiel
Grundprinzip wie bei Wahl auf Bäumen: Explorations- und Echowelle
9
16
18
Nachrichten
14
Explorernachrichten beinhalten ID des korrespondierenden Initiators
Echonachrichten tragen Initiator-ID der zugehörigen Explorernachricht
2
15
Verwaltung von IDs an Knoten und Kanten
6
Speicherung der höchsten einem Knoten bekannten Initiator-ID (IDi )
Elternkante: Kante, über die Explorernachricht mit IDi empfangen wurde
Markierung der Sendekante einer Explorernachricht mit Initiator-ID
3
11
7
10
4
Empfang einer Explorernachricht x über Kante k mit Markierung m
Falls
Falls
Falls
Falls
c td
IDx = IDm
IDx < IDm
IDm < IDx ≤ IDi
IDm ≤ IDi < IDx
VS (SS16)
Kante k ist nicht Teil des virtuellen Baums
Ignorieren der eintreffenden Explorernachricht x
Aktualisierung von m, Senden von x über k
Adoption: k wird neue Elternkante
Weiterleitung von x über bisherige Elternkante
Wahlalgorithmen – Adoptionsverfahren
11 – 16
12
17
5
1
c td
8
VS (SS16)
Wahlalgorithmen – Adoptionsverfahren
13
11 – 17
Beispiel
Beispiel
9
16
18
9
16
18
14
14
OK
2
OK
2
OK
15
15
OK
6
3
6
3
11
7
10
12
11
7
10
12
4
4
17
17
5
5
1
c td
8
VS (SS16)
13
1
Wahlalgorithmen – Adoptionsverfahren
11 – 17
Beispiel
c td
8
VS (SS16)
13
Wahlalgorithmen – Adoptionsverfahren
11 – 17
Beispiel
9
16
18
9
16
18
14
OK
14
OK
2
OK
OK
15
OK
2
OK
OK
15
6
3
6
3
11
7
10
12
11
7
10
12
4
4
17
OK
17
5
1
c td
OK
OK
8
VS (SS16)
Wahlalgorithmen – Adoptionsverfahren
13
5
1
11 – 17
c td
8
VS (SS16)
Wahlalgorithmen – Adoptionsverfahren
13
11 – 17
Beispiel
Beispiel
9
16
18
9
16
18
14
OK
14
OK
2
OK
OK
15
OK
2
OK
OK
15
OK
6
3
6
3
11
7
10
12
OK
11
7
10
12
4
4
17
5
OK
5
OK
1
c td
17
8
VS (SS16)
13
1
Wahlalgorithmen – Adoptionsverfahren
11 – 17
Beispiel
c td
8
VS (SS16)
13
Wahlalgorithmen – Adoptionsverfahren
11 – 17
Beispiel
9
16
18
9
16
18
14
OK
14
OK
2
OK
OK
15
OK
2
OK
OK
15
6
3
6
3
OK
11
7
10
12
OK
11
7
10
12
4
4
17
OK
17
5
1
c td
OK
OK
8
VS (SS16)
Wahlalgorithmen – Adoptionsverfahren
13
5
1
11 – 18
c td
8
VS (SS16)
Wahlalgorithmen – Adoptionsverfahren
13
11 – 18
Beispiel
Beispiel
9
16
18
9
16
18
14
OK
14
OK
2
OK
OK
15
OK
2
OK
OK
15
OK
6
3
6
OK
3
OK
11
7
10
OK
12
OK
11
7
10
12
4
4
17
5
OK
5
OK
1
c td
17
8
VS (SS16)
13
1
Wahlalgorithmen – Adoptionsverfahren
11 – 18
Beispiel
c td
8
VS (SS16)
13
Wahlalgorithmen – Adoptionsverfahren
11 – 18
Beispiel
9
16
18
9
16
18
14
OK
14
OK
2
OK
OK
15
11
7
10
OK
OK
15
6
OK
OK
17
11
7
10
12
c td
VS (SS16)
Wahlalgorithmen – Adoptionsverfahren
17
OK
OK
8
13
5
1
11 – 19
6
4
5
1
OK
OK
12
4
OK
OK
OK
3
OK
OK
2
OK
OK
3
OK
c td
8
VS (SS16)
Wahlalgorithmen – Adoptionsverfahren
13
11 – 19
Beispiel
Beispiel
9
16
18
9
16
18
14
OK
14
OK
2
OK
OK
15
OK
15
6
11
7
10
OK
OK
11
7
10
12
c td
4
17
OK
8
VS (SS16)
Wahlalgorithmen – Adoptionsverfahren
17
OK
5
1
13
5
OK
1
11 – 19
6
OK
12
4
OK
OK
OK
OK
3
OK
OK
OK
OK
OK
3
OK
2
c td
VS (SS16)
8
Wahlalgorithmen – Adoptionsverfahren
13
11 – 19
Herunterladen