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