www.wikidata.de-de.nina.az
Der Bullyalgorithmus ist ein rekursiver verteilter Algorithmus der in einem verteilten System verwendet wird wenn ein neuer Koordinatorprozess ermittelt werden muss weil der ursprungliche abgesturzt ist Letzteres kann beispielsweise durch einen Timeout festgestellt werden Inhaltsverzeichnis 1 Ablauf 1 1 Annahmen 2 Pseudocode 2 1 Vorteile 2 2 Nachteile 3 Literatur 4 Weblinks 5 EinzelnachweiseAblauf BearbeitenEin Prozess p welcher den Ausfall des Koordinators bemerkt hat sendet Anfragen an alle Prozesse die eine hohere ID haben als er selbst Diese Prozesse schicken eine Bestatigung zuruck wenn sie nicht selbst abgesturzt sind Falls der Prozess p von Prozessen mit hoherer ID Antworten bekommt sendet er keine weiteren Nachrichten mehr Falls Prozess p keine Antwort bekommt wird er selbst zum Koordinator Jeder Prozess mit hoherer ID der p geantwortet hat verschickt seinerseits wiederum Anfragen an alle Prozesse die eine hohere ID haben als er um herauszufinden ob diese noch existieren was diese dann ebenso wiederholen Rekursion Der letzte Prozess hat keinen Prozess mehr den er fragen kann da er selbst die hochste ID hat denn der Koordinatorprozess mit der hochsten ID ist ja ausgefallen und kann nicht mehr antworten Er tritt selbst an die Stelle des neuen Koordinators und sendet per Broadcast die Nachricht dass er der neue Koordinator sei Annahmen Bearbeiten Damit der Bullyalgorithmus beweisbar funktioniert mussen in dem verteilten System folgende Annahmen gelten Alle Prozesse kooperieren und verwenden exakt denselben Wahlalgorithmus Es gibt keine Fehler in der Implementierung und alle Prozesse bieten auch standig die Moglichkeit an empfangene Nachrichten abzuarbeiten Wenn ein Prozess P1 die Nachricht M von Prozess P2 erhalt dann ist sichergestellt dass die Nachricht zu einem fruheren Zeitpunkt gesendet worden ist Es gibt also keine spontan generierten Nachrichten im System Alle Prozesse besitzen so genannte Storage Cells in denen die Daten gespeichert werden an denen sie arbeiten Das bedeutet dass selbst bei einem Fehler oder Ausfall des Prozesses die Daten gespeichert bleiben Datenzugriff in Storage Cells sollte auf Transaktionen basieren entweder die neuen Daten werden in die Storage Cell geschrieben oder sie werden verworfen die alten bleiben aber erhalten und weiterhin konsistent Wenn ein Prozess ausfallt hort er sofort mit der Bearbeitung seiner Daten auf Wird er wieder aktiviert fangt er mit der Bearbeitung wieder an dort wo er aufgehort hat Es gibt keine Ubertragungsfehler im System Das bedeutet dass alle Nachrichten korrekt ubertragen werden Alle Nachrichten werden in der Reihenfolge ihrer Ankunft abgearbeitet Sendet Prozess 1 also die Nachrichten M1 und M2 in dieser Reihenfolge so wird ein zweiter Prozess diese Nachrichten auch in der Reihenfolge M1 M2 abarbeiten Es gibt keine Ausfalle in der Kommunikation und das System bietet eine zeitliche Obergrenze T an zu der die Nachricht auf jeden Fall abgearbeitet werden sollte Wenn ein Prozess also nach T Zeiteinheiten noch immer keine Antwort von einem anderen erhalten hat so kann er davon ausgehen dass der Empfangerprozess abgesturzt ist Ein Prozess hort niemals auf auf Nachrichten zu antworten und tut dies auch ohne Verzogerung Das Netzwerk des Systems arbeitet synchron Pseudocode BearbeitenP bemerkt dass der Koordinator nicht mehr antwortet 1 function hold election for each Process Q if Id Q gt Id P send Q ELECTION end if if displaystyle exists nbsp Q receive Q ANSWER timeout T for displaystyle exists nbsp then do something else else for each Process Q if Id Q lt Id P send Q COORDINATOR endif endif P empfangt ELECTION gesendet von Prozess pred function continue election send pred ANSWER hold election Vorteile Bearbeiten Es ist problemlos moglich einen ausfallenden Koordinator zu ersetzen da jeder Prozess die Ermittlung eines neuen Koordinatorprozesses anstossen kann Nachteile Bearbeiten Alle Prozesse mussen jedem Prozess bekannt sein und es muss eine absolute Ordnung auf den Prozessen bestehen Ansonsten kann kein Prozess ermitteln welche Nachrichten er verschicken muss Reagiert ein Prozess sehr langsam entsteht hierdurch eine Verzogerung die den gesamten Ablauf verlangsamt Literatur BearbeitenEmmett Witchel Distributed Coordination 2005 PPT Datei abgerufen am 3 August 2013 Hector Garcia Molina Elections in a Distributed Computing System In IEEE Transactions on Computers Bd C 31 No 1 Januar 1982 ISSN 0018 9340 S 48 59 doi 10 1109 TC 1982 1675885 Weblinks BearbeitenVorlesung Verteilte Systeme an der Hochschule fur Angewandte Wissenschaften HamburgEinzelnachweise Bearbeiten Folie 5 Vorlesung Verteilte Systeme Wintersemester 2013 13 PDF 1 6 MB Dept Informatik HAW Hamburg abgerufen am 8 Juli 2013 Abgerufen von https de wikipedia org w index php title Bullyalgorithmus amp oldid 195543683