Bully-Algorithmus - Informatik

Werbung
Bully-Algorithmus
Krebs Florian, Kus Matthias, Pisselhoy Andreas, Schwab Benjamin, Heinrich Jörg
Programmierung verteilter Systeme Lab
Institut für Informatik
Universität Augsburg
Universitätsstraße 14, 86159 Augsburg
Tel.: (+49) 821/598-2174, Fax: -2175
URL: http://www.informatik.uni-augsburg.de/vs
Agenda
„ Aufgabenstellung
„ Elections
„ Der Bully-Algorithmus
Idee
„ Performance
„ Stärken und Schwächen des Algorithmus
Stärken
Schwächen
„
Implementierung des Algorithmus
© Bernhard Bauer, all rights reserved 2005
2
Aufgabenstellung
„ Bully-Algorithmus - Implementierung des Bully-Algorithmus
zur Durchführung von Elections in einem verteilten System.
Der zu erstellende Prototyp soll über eine GUI verfügen, mit
der die Funktionsweise des Algorithmus möglichst
anschaulich dargestellt und simuliert werden kann.
© Bernhard Bauer, all rights reserved 2005
3
Elections
„ Verfahren, um einen eindeutigen Prozess aus einer Menge von
Prozessen zur Übernahme bestimmter Funktionen (Koordinator) zu
bestimmen (zu wählen)
„ Einsatzgebiete:
Verwaltung von ausschließlich exklusiv nutzbaren Ressourcen (mutal exclusion)
Ring Master in Token-Ringnetzwerken
Bus-Verwaltung bei Hardware
„ Alle Prozesse haben eine eindeutige ID
„ Koordinator wird Prozess mit höchster ID
„ Ablauf:
Jeder Prozess pi hat eine Variable electedi, die die ID des Koordinators enthält
Wird der Prozess zum 1.Mal Teilnehmer einer Wahl, setzt er seine Variable auf
„┴“, und zeigt somit an, dass der Koordinator noch nicht definiert ist.
Ein Prozess erkennt, dass kein gewählter Prozess existiert oder er bekommt
keine Antwort vom aktuell gewählten Prozess
Æ Election wird gestartet, um einen neuen Prozess als Koordinator zu wählen
© Bernhard Bauer, all rights reserved 2005
4
Idee des Bully-Algorithmus
„ Eine Election (Wahl) wird gestartet, wenn der Koordinator ausgefallen
ist
Funktioniert in synchronen Netzen
Knoten können zusammenbrechen, diese Timeouts werden zuverlässig entdeckt
Annahmen
Jeder Knoten kennt die IDs aller anderen Knoten
Alle Knoten können miteinander kommunizieren
Nachrichten Typen
Election: kündigt eine Wahl an
Antwort: antwortet auf eine Wahl Nachricht
Koordinator: gibt die ID des gewählten Prozesses an
In Ringen
Es wird nur mit den Nachbarn kommuniziert
Keiner kennt ID der anderen Prozesse
Die Timeouts müssen bekannt sein, d.h. die Zeit die eine Nachricht unterwegs ist plus die Zeit die der Prozess zur Verarbeitung braucht
© Bernhard Bauer, all rights reserved 2005
5
Performance
„ best case: Prozess mit der zweithöchsten ID findet den Fehler des
Koordinators
wählt sich selber und sendet (n-2) Koordinator Nachrichten
„ worst case: Benötigt O(N²) Nachrichten falls die niedrigste ID den
Fehler findet
(n-1) Prozesse mit höherer ID starten die Election
© Bernhard Bauer, all rights reserved 2005
6
Stärken
„ auch nach Ausfall eines Knotens bleibt weiterhin die Verbindung
bestehen (Gegensatz zu einem typischen Ring-Algorithmus)
„ sichere Festlegung auf den Prozess mit höchster ID als Koordinator
durch wiederholte Wahl
© Bernhard Bauer, all rights reserved 2005
7
Schwächen
„ es muss eine ständig aktuelle Liste aller Knoten erstellt werden (und
eben auch sichergestellt werden, dass sie immer aktuell ist)
„ riesiger Overhead an unnötigen Elections (und damit Messages), da
mit jeder Election bis zu n-2 neue Elections angestoßen werden
(worauf dann wieder neue Elections angestoßen werden usw. usf.)
© Bernhard Bauer, all rights reserved 2005
8
Herunterladen