Verteilte Algorithmen Motivation und Einführung PD Dr.-Ing. Gero Mühl Kommunikations- und Betriebssysteme Fakultät für Elektrotechnik u. Informatik Technische Universität Berlin

Verteiltes System – Einige Definitionen “A distributed computing system consists of multiple autonomous processors that do not share primary memory, but cooperate by sending messages over a communication network.” -- Henri Bal “A distributed system is one in which the failure of a computer you didn’t even know existed can render your own computer unusable.” -- Leslie Lamport “A distributed system is a collection of independent computers that appears to its users as a single coherent system” -- Andrew S. Tanenbaum G. Mühl

VS / Motivation und Einführung

2

Verteiltes System – Eigene Definition > Autonome Rechner, die durch ein Netzwerk lose miteinander verbunden sind und miteinander durch Nachrichtenaustausch kommunizieren, um gemeinsam eine Gesamtfunktionalität zu gewährleisten.

G. Mühl

VS / Motivation und Einführung

3

Verteilte Systeme – Abgrenzung > Rechnernetze > Hier steht die Vernetzung der Rechner im Vordergrund und nicht die Kooperation der Rechner > Rechnernetze ermöglichen z.B. den Zugang zu einem entfernten Rechner per SSH

> Parallelrechner > Haben im Gegensatz zu verteilten Systemen einen gemeinsamen physikalischen Speicher

G. Mühl

VS / Motivation und Einführung

4

Verteilte Systeme – Ziele > Leistungsgewinn durch echt nebenläufige Prozesse > Gemeinsames Knacken eines kryptografischer Schlüssels > Paralleles Suchen nach den Primfaktoren einer großer Zahl

> Erhöhte Funktionalität und Flexibilität durch inkrementelle Erweiterbarkeit > Skalierung des Systems durch Hinzufügen von Rechnern

> Bereitstellung entfernter Daten und Dienste > Zugriff auf mehrere Datenbanken (z.B. Bibliothekskatalog) > Nutzung brachliegender Rechenkapazität (z.B. SETI@home)

> Fehlertoleranz durch Redundanz > Redundante Speicherung von Daten > Primary/Backup Server (Backup übernimmt bei Ausfall des Primary)

G. Mühl

VS / Motivation und Einführung

5

Weitere Gründe für den Einsatz verteilte Systeme > Wirtschaftlichkeit: Vernetzte PCs haben meist besseres Preis-Leistungsverhältnis als Supercomputer ⇒ Anwendung – falls möglich – auf mehrere kleine Rechner verteilen

> Geschwindigkeit: Falls Anwendung gut parallelisierbar ist, ist eine sonst unerreichbare Leistung möglich > Vgl. auch Grid Computing > Ggf. (dynamische) Lastverteilung beachten

G. Mühl

VS / Motivation und Einführung

6

Verteilte Systeme – Eigenschaften und Folgen > Echt-Nebenläufige Prozesse mit unterschiedlicher Geschwindigkeit  Nebenläufigkeit > Vieles Ereignisse passieren gleichzeitig > Abläufe sind nicht reproduzierbar  Nichtdeterminismus ⇒ Mechanismen zur Koordination und zur Synchronisation von Aktivitäten (z.B. für exklusiver Zugriff auf Ressourcen) P1

P2

P3

Ein Prozessor G. Mühl

P1

P2

P3

Drei Prozessoren VS / Motivation und Einführung

7

Verteilte Systeme – Eigenschaften und Folgen > Kein gemeinsamer primärer Speicher > Kommunikation nur durch Nachrichtenaustausch möglich > Kein Knoten hat globale Sicht auf den Gesamtzustand des Systems  Zustandsverteilung ⇒ Mechanismen für eine konsistente Sicht auf den Zustand notwendig

G. Mühl

VS / Motivation und Einführung

8

Verteilte Systeme – Eigenschaften und Folgen > Nachrichtenlaufzeit ist unbestimmt, meist nicht beschränkt und variiert unvorhersagbar > Beispiel Ethernet: Hier hängt die Nachrichtenlaufzeit stark von der aktuellen Last des Netzwerks ab

> Langsame Prozesse bzw. Verbindungen können nicht von ausgefallenen unterschieden werden ⇒ Keine adäquate Ausfallserkennung möglich

G. Mühl

VS / Motivation und Einführung

9

Verteilte Systeme – Eigenschaften und Folgen > Kommunikation ist fehleranfällig > Nachrichtenverlust, -duplizierung, -verfälschung ist möglich ⇒ Mechanismen zur Erkennung und zum Umgang mit Kommunikationsfehlern

> Kommunikation ist unsicher > Es besteht die Gefahr, dass Nachrichten abgehört, mit Absicht verfälscht, hinzugefügt oder unterschlagen werden ⇒ Sicherheitsmechanismen

G. Mühl

VS / Motivation und Einführung

10

Verteilte Systeme – Eigenschaften und Folgen > Rechner und Netzwerkverbindungen können unabhängig voneinander ausfallen  Teilweiser Ausfall möglich > In großen Systemen sind einzelne Ausfälle von Rechnern oder Netzwerkverbindungen wahrscheinlich > Ein Ausfall sollte nicht das gesamte System lahm legen, sondern Ausfälle von einzelnen Rechnern oder Netzwerkverbindungen sollten verkraftet werden ⇒ Fehlertoleranzmechanismen notwendig

G. Mühl

VS / Motivation und Einführung

11

Verteilte Systeme – Eigenschaften und Folgen > Unabhängige physikalische Systemuhren mit unterschiedlichen Geschwindigkeiten  Uhrendrift ⇒ Mechanismen zum Ausgleich der unterschiedlichen Geschwindigkeiten notwendig  Uhrensynchronisation > Aber die Genauigkeit der Uhrensynchronisation und die Auflösung der Uhren ist beschränkt und oft ist die relative Lage von Ereignissen zueinander wichtiger, als der genaue Zeitpunkt ihres Auftretens  Logische Uhren

G. Mühl

gemessene Zeit C exakt vorgehend dC / dt > 1 nachgehend dC / dt < 1

Referenzzeit t

VS / Motivation und Einführung

12

Verteilte Systeme – Eigenschaften und Folgen > Unterschiedliche administrative Domänen > Für jede Domäne ist ein eigener Administrator zuständig > Zentralisierte Administration in großen Systemen unmöglich ⇒ Dezentrale Administration ermöglichen und die Administration (soweit möglich und sicher) automatisieren

> Komponenten sind heterogen  Heterogenität > Interoperabilität zwischen Komponenten schwierig zu gewährleisten ⇒ Schnittstellenstandardisierung notwendig

G. Mühl

VS / Motivation und Einführung

13

Verteilten Systeme – Faustregeln für den Entwurf > System nur verteilen, wenn dies auch gewinnbringend ist; ansonsten lieber eine zentralisierte Lösung umsetzen > „Central point of failure” vermeiden > Ein Teilausfall sollte nicht das gesamte System lahm legen > Hierfür ist Redundanz notwendig

> Auf Skalierbarkeit achten > Für eine wachsende Anzahl von Beteiligten, sollte die Performance nicht überproportional sinken > Auf Flaschenhälse achten > Mini-Prototypen lassen keine Rückschlüsse auf die Performanz eines großen Systems zu

> Nur soviel Zugang erlauben, wie für die Ausführung einer Aufgabe gerade erforderlich ist

G. Mühl

VS / Motivation und Einführung

14

Verteilten Systeme - Schlussfolgerungen > Das Entwerfen, Implementieren, Testen und Absichern eines verteilten Systems ist erheblich aufwendiger als im Falle eines zentralisierten Systems > Nur bei geeigneter Gestaltung ist ein verteiltes System performanter, skalierbarer und fehlertoleranter sowie vielleicht auch ähnlich sicher wie ein zentralisiertes System > Voraussetzung hierfür ist das Verständnis der in verteilten Systemen auftretenden Phänomene, der resultierenden Probleme und die Kenntnis möglicher Lösungsansätze für diese > Gegenstand der Vorlesung sind adäquate Modelle sowie Konzepte und Algorithmen, die zum Verständnis und zur Beherrschung der in verteilten Systemen auftretenden Phänomene beitragen G. Mühl

VS / Motivation und Einführung

15

Beispiele für konzeptionelle Probleme in Verteilten Systemen

Konzeptionelle Probleme in VS > > > > > > > > > > > G. Mühl

Verteilte Einigung (Konsens) Uhrensynchronisation Detektieren und Auflösen oder Verhindern von Verklemmungen Kausalitätstreue Beobachtungen Geheimnisvereinbarung und vertrauliche Datenübertragung über unsichere Kanäle Schnappschussproblem Erkennen der globalen Terminierung Verteilte Speicherbereinigung Wechselseitiger Ausschluss Konsistenzzusicherung bei replizierten Daten … VS / Motivation und Einführung

17

Problem der Zwei Armeen Graue Truppen

Blaue Truppen

3000

4000

Graue Truppen

2000

Angriff um 6:00 ! ja, um 6:00 !

angekommen ?

G. Mühl

VS / Motivation und Einführung

18

Verteiltes make Rechner, auf dem der Übersetzer läuft

104

105

106

107

108

109

110

107

108

Zeit gemäß lokaler Uhr

Datei test.class erzeugt

Rechner, auf dem der Editor läuft

102

103

104

105

106

Zeit gemäß lokaler Uhr

Datei test.java erzeugt

Reale Zeit G. Mühl

VS / Motivation und Einführung

19

Phantom-Deadlocks A t = 1, beobachte B ⇒ B wartet auf A

t = 2, beobachte C ⇒ C wartet auf B

A t = 3, beobachte A ⇒ A wartet auf C

B

B

C

C

A

A Falscher Schluss: zyklischer Wartegraph  Verklemmung

B

B

C

G. Mühl

C

VS / Motivation und Einführung

20

Kausal inkonsistente Beobachtungen > Problem: Falsche Schlussfolgerung des Beobachters durch kausal inkonsistente Beobachtung

> Eine unbegründete Pumpenaktivität erhöhte den Druck bis zum Bersten der Pipeline; daraufhin trat das Öl aus dem Leck aus, was durch den Druckverlust angezeigt wird!

DruckMesser

Pumpe Leck Druckmesser Pumpe Beobachter G. Mühl

VS / Motivation und Einführung

21

Verteilte Geheimnisvereinbarung > Problem: P1 und P2 wollen sich über einen unsicheren Kanal auf einen gemeinsamen geheimen Schlüssel einigen und mit diesem anschließend ihre Kommunikation verschlüsseln P3

P1

G. Mühl

P2

VS / Motivation und Einführung

22

Grundlegende Modelle für verteilte Systeme

Verteiltes System – Eine abstrakte Sicht > Ein verteiltes System ist ein zusammenhängender Graph, bestehend aus einer Menge von Knoten und Kanten > Knoten werden oft auch als Prozesse, Rechner etc. bezeichnet > Kanten werden oft auch als Links, Kanäle etc. bezeichnet

> Die Knoten können über die Kanäle Nachrichten mit ihren jeweiligen direkten Nachbarn austauschen > Mittels Routing können auch beliebige Knoten kommunizieren

G. Mühl

VS / Motivation und Einführung

24

Default für die Vorlesung

Netzwerk-Topologien > Topologie ist ein ungerichteter Graph G = (V, E) > Knotenmenge V = {v0,…,vn-1} > Kantenmenge E = {e0, …, em-1}, ei = (vi_1,vi_2)

> Statische vs. dynamische Topologie > Statische: > Dynamische:

G. Mühl

Knoten- und Kantenmenge ändern sich nicht Knoten- und Kantenmenge können sich mit der Zeit ändern

VS / Motivation und Einführung

25

Spezielle Topologien > Ring > > > > >

Anzahl Knoten = Anzahl Kanten (n = m) E = {(vi, vj) | j = (i + 1) mod n} Knotengrad (Nachbarn pro Knoten): 2 Knotengrad konstant bei Skalierung Durchmesser (längster kürzester Pfad) ⌊n / 2⌋

> Baum > Zusammenhängender Graph ohne Zyklen > m=n-1

G. Mühl

VS / Motivation und Einführung

26

Spezielle Topologien > Stern > > > > >

Spezieller Baum mit zentralem Knoten v0 E = {(v0, vi) | i ≠ 0} Nachbarn pro Knoten: 1 bzw. n – 1 Durchmesser 2 Nicht (unbegrenzt) skalierbar

> Vollständiger Graph > > > > > G. Mühl

m = n (n – 1) / 2 E = {(ei_1, ei_2 | i_1 < i_2) Nachbarn pro Knoten: n – 1 Durchmesser 1 Nicht (unbegrenzt) skalierbar VS / Motivation und Einführung

27

Gitterstrukturen

4x4-Gitter

4x4-Torus

> Eigenschaften > Konstanter Knotengrad bei Skalierung > Erweiterbarkeit in kleinen Inkrementen > Gute Unterstützung von Algorithmen mit lokaler Kommunikationsstruktur (Modellierung physikalischer Prozesse) G. Mühl

VS / Motivation und Einführung

28

Vollständige Bäume

Binärbaum

Binärer X-Baum

> Eigenschaften vollständiger k-närer Baum bzw. X-Baum > > > >

G. Mühl

h = ⌊logk n⌋ (Logarithmischer Höhe) Erweiterbar in Potenzen von k Konstanter Knotengrad bei Skalierung Knotengrad maximal k + 1 (bzw. maximal k + 3)

VS / Motivation und Einführung

29

Hyperwürfel > Hyperwürfel (engl.: Hypercube) = Würfel der Dimension d > Rekursives Konstruktionsprinzip > Hyperwürfel der Dimension 0: Einzelner Knoten > Hyperwürfel der Dimension d + 1: „Nimm zwei Würfel der Dimension d und verbinde die korrespondierenden Ecken“

0

G. Mühl

1

2

3

4

VS / Motivation und Einführung

30

Eigenschaften von Hyperwürfeln > Anzahl der Knoten n = 2d > Anzahl der Kanten m = d 2d−1 Ordnung O(n log n) > Maximale kürzeste Weglänge zwischen zwei Knoten (tritt auf bei diagonal gegenüberliegende Ecken) d = log n Ordnung O(log n) > Viele Wegealternativen  Fehlertoleranz > Knotengrad = d (nicht konstant bei Skalierung!) > Mittlere Weglänge = d / 2 > Einfaches Routing von einzelnen Nachrichten > XOR von Sende- und Zieladresse (je ein Bitvektor mit d Bits) > Dimensionen, in deren Bits Einsen im Ergebnis stehen nacheinander abarbeiten. Ist die Reihenfolge hierbei egal? G. Mühl

VS / Motivation und Einführung

31

Zufallsnetzwerke > Erzeugung eines Zufallsnetzwerks mit n Knoten und m Kanten > Wähle m-mal zufällig zwei Knoten und verbinde diese durch eine Kante

> Eigenschaften Wahrscheinlichkeit

> Für m > n / 2 bildet sich eine große Komponente mit kurzen Wegen zwischen den enthaltenen Knoten > Knotengrad ist näherungsweise Poisson-verteilt

Quelle: [1]

Knotengrad G. Mühl

VS / Motivation und Einführung

32

Small World-Netzwerke > Eigenschaften > Hoher Clustering-Koeffizient > Kurze Wege

regelmäßig (p = 0)

> Erzeugung nach Watts und Strogatz [2] > Ausgangspunkt ist ein Ring, in welchem jeder Knoten mit seinen k nächsten Knoten verbunden ist > Wähle für jede Kante mit Wahrscheinlichkeit p einen neuen, zufälligen Knoten > Hier: Mittlerer Knotengrad k G. Mühl

Small World

zufällig (p = 1)

VS / Motivation und Einführung

33

Skalenfreie Topologien > Eigenschaften zusätzlich zu denen der Small World-Topologien > Verteilung der Anzahl der Nachbarn folgt P(k) ∼ k -γ ⇒ Viele Knoten mit wenigen Nachbarn ⇒ Wenige Knoten (Hubs) mit vielen Nachbarn

> Nah an vielen realen Netzwerken (z.B. Internet, WWW, soziale Netzwerke) G. Mühl

Quelle: [1]

Eingangsgrad der Web-Seiten des WWWs

Quelle: [1] VS / Motivation und Einführung

34

Skalenfreie Topologien > Erzeugung durch Preferential Attachment > Start mit einer kleinen Anzahl von Knoten m0 > In jedem Schritt wird ein Knoten hinzugefügt und mit m ≤ m0 anderen Knoten verbunden > Hierbei wird ein Knoten i mit Grad ki mit der Wahrscheinlichkeit P(ki) = ki / ∑j kj gewählt > „Die Reichen werden reicher“ > Für eine mit diesen Regeln erzeugte Topologie gilt: γ = 3

G. Mühl

VS / Motivation und Einführung

35

Default für die Vorlesung

Kanaleigenschaften (aus Sicht der Prozesse) > Zuverlässigkeit > Zuverlässig:

Jede gesendete Nachricht kommt genau einmal und unverändert an > Unzuverlässig: Es können Fehler auftreten > Verlust: Gesendete Nachricht wird nicht empfangen > Duplizierung: Gesendete Nachricht wird mehrfach empfangen > Verfälschung: Gesendete Nachricht wird verfälscht empfangen > Hinzufügen: Nicht gesendete Nachricht wird empfangen

> Ordnung > Ungeordnet: > FIFO:

G. Mühl

Nachrichten können sich überholen Nachrichten können sich nicht überholen

VS / Motivation und Einführung

36

Default für die Vorlesung

Kanaleigenschaften (aus Sicht der Prozesse) > Kapazität > Unbeschränkt: Beliebig viele Nachrichten im Kanal möglich > Beschränkt: Maximal n Nachrichten gleichzeitig im Kanal > Bei Überlauf entweder Verwerfen von Nachrichten oder Blockieren bis wieder Platz im Kanal ist

> Richtung > Bidirektional: Senden und Empfangen in beide Richtungen möglich > Unidirektional: Senden und Empfangen nur in eine Richtung

G. Mühl

VS / Motivation und Einführung

37

Default für die Vorlesung

Kanaleigenschaften (aus Sicht der Prozesse) > Synchron vs. Asynchron > Asynchron: Das Senden einer Nachricht ist nicht blockierend > Synchron: Das Senden einer Nachricht ist blockierend > Der Sender wird blockiert, bis der Empfänger die Nachricht abgenommen hat; Implementierung durch implizite Bestätigung Asynchron

G. Mühl

Synchron

VS / Motivation und Einführung

38

Verteilter Algorithmus > Läuft auf den Knoten des Systems in Form von Prozessen > Wir betrachten nur einen Prozess pro Knoten; daher verwenden wir beide Begriffe oft synonym > Auf verschiedenen Knoten können unterschiedliche Teile des Algorithmus ablaufen > Die Knoten kommunizieren, indem sie Nachrichten über Kanäle austauschen

G. Mühl

VS / Motivation und Einführung

39

Zustand eines Verteilen Algorithmus > Jeder Knoten hat einen lokalen Zustand; dieser besteht aus den lokalen Variablen des Algorithmus > Der Zustand eines Kanals besteht aus den in ihm befindlichen Nachrichten > Der Zustand eines verteilten Algorithmus besteht aus > den Zuständen der Knoten und > den Zuständen der Kanäle

G. Mühl

VS / Motivation und Einführung

40

Verarbeitungsmodell > Berechnungen werden von außen angestoßen > Initiale Aktion wird beim Start des Algorithmus zuerst ausgeführt > Danach wartet jeder Prozess passiv auf den Eingang einer Nachricht > Geht eine Nachricht ein, so wird eine entsprechende atomare Aktion ausgeführt > Zwischenzeitlich eintreffende Nachrichten werden gepuffert > Eine Aktion kann den lokalen Zustand des Prozesses verändern und Nachrichten an andere Prozesse aussenden

G. Mühl

Prozess passiv Nachricht empfangen

Aktion ausgeführt

aktiv

P1: {Init} SEND(Ping) TO P2; P2: {RECEIVE (Ping) from P1} SEND(Pong) TO P1; VS / Motivation und Einführung

41

Synchrones Systemmodell > Die maximale Dauer von Aktionen und die maximale Laufzeit von Nachrichten sind beschränkt und bekannt > Beispiel: Aktionen brauchen keine Zeit, Nachrichten exakt eine Zeiteinheit. Dann können verteilte Algorithmen in synchronisierten Runden ablaufen

> Im synchronen Modell können Entscheidungen aufgrund des Ablaufs der Zeit getroffen werden können > Beispiel: Wird eine erwartete Nachricht nicht innerhalb der maximalen Laufzeit empfangen, kann sicher auf einen Fehler (Knotenausfall, Nachrichtenverlust etc.) geschlossen werden G. Mühl

VS / Motivation und Einführung

42

Asynchrones Systemmodell > Aktionen und Nachrichten können beliebig lange dauern bzw. verzögert werden oder die Schranken sind nicht bekannt > Aus dem zeitlichen Ablauf (z.B. Timeouts) können keine (sicheren) Informationen gewonnen werden > Beispiel: Wird eine Nachricht nicht vor einem Timeout empfangen, so gibt es dafür mehrere mögliche Ursachen 1. Die Nachrichtlaufzeit ist länger als gewöhnlich 2. Die Nachricht ist verloren gegangen 3. Der sendende Prozess hat die Nachricht später als normal abgeschickt 4. Der sendende Prozess ist abgestürzt, bevor er die Nachricht senden konnte

G. Mühl

VS / Motivation und Einführung

43

Synchrones vs. Asynchrones Systemmodell > Algorithmen für Probleme in synchronen Systemen > Oft existieren einfache Algorithmen, diese sind aber meist nicht direkt oder nur eingeschränkt einsetzbar, da sie unrealistische Annahmen machen

> Algorithmen für Probleme in asynchronen Systemen > Für viele Probleme existieren keine Algorithmen > Wenn sie existieren, sind sie oft komplex und ineffizient > Wenn für ein Problem aber ein Algorithmus existiert, so ist dieser meist gut einsetzbar

G. Mühl

VS / Motivation und Einführung

44

Default für die Vorlesung

Atommodell > Ist ein teilsynchrones Modell > Unterschied zum asynchronen Modell: Aktionen sind zeitlos > Empfängt ein Prozess eine Nachricht, ändert sich sein lokaler Zustand entsprechend der Aktion und er kann instantan Nachrichten aussenden > Zeit-Raum-Diagramm: Graphische Darstellung von (lokalen Ereignisse und) Interaktionen aller Prozessoren P1 P2 P3

G. Mühl

VS / Motivation und Einführung

45

Beispiel: Verteilter Maximum-Algorithmus > Eine Gruppe Philosophen sitzt an einem runden Tisch und will den ältesten unter ihnen bestimmen > Jeder Philosoph kann aber nur mit seinen beiden Nachbarn kommunizieren 72

114

102

60

84

G. Mühl

96

VS / Motivation und Einführung

46

Beispiel: Verteilter Maximum-Algorithmus {INIT}: // wird von jedem Philosophen initial ausgeführt meinMax := ; SEND(, meinMax); SEND(, meinMax); {RECEIVE (, nachbarMax)} IF (nachbarMax > meinMax) THEN meinMax := nachbarMax; SEND(, meinMax); ENDIF {RECEIVE ( meinMax) THEN meinMax := nachbarMax; SEND(, meinMax); ENDIF

G. Mühl

Atomare Aktionen

VS / Motivation und Einführung

47

Beispiel: Verteilter Maximum-Algorithmus > Aufgrund unterschiedlicher Nachrichtenlaufzeiten können verschiedene Abläufe auftreten 72

Terminierung

114

114 60

114 114

96 84 102

96

102

114 114 tempus fugit

G. Mühl

VS / Motivation und Einführung

48

Beispiel: Verteilter Maximum-Algorithmus > Gibt es mehrere mögliche Abläufe zu einer Eingabe? > Führt jeder Ablauf zum korrekten Ergebnis (hier 114)? > Wie viele Nachrichten werden minimal gebraucht und wann tritt dieser Fall ein? > Wie viele Nachrichten werden maximal oder durchschnittlich gebraucht? Wovon hängt das ab? > Woher sollen die Philosophen wissen, dass sie den Algorithmus starten sollen? > Reicht es aus, wenn ein beliebiger Philosoph den Algorithmus startet?

G. Mühl

VS / Motivation und Einführung

49

Beispiel: Verteilter Maximum-Algorithmus > Terminiert der Algorithmus immer? > Wie lange dauert es minimal, maximal oder durchschnittlich, bis der Algorithmus terminiert? > Woran erkennt ein einzelner Philosoph die Terminierung? > Was passiert, wenn mehrere Philosophen das gleiche Alter haben?

G. Mühl

VS / Motivation und Einführung

50

Eigenschaften von Algorithmen > Deterministisch vs. Nichtdeterministisch > Deterministisch: Stets gleicher Ablauf bei gleicher Eingabe > Nichtdeterministisch: Verschiedene Abläufe bei gleicher Eingabe möglich

> Determiniert vs. nichtdeterminiert > Determiniert: Stets gleiches Ergebnis bei gleicher Eingabe > Nichtdeterminiert: Unterschiedliche Ergebnisse bei gleicher Eingabe möglich

G. Mühl

VS / Motivation und Einführung

51

Eigenschaften von Algorithmen > Terminierend: Terminieren für jede Eingabe nach endlich vielen Schritten > Partiell korrekt: Wenn sie terminieren, liefern sie immer das korrekte Ergebnis > Total korrekt: Sind terminierend und partiell korrekt

G. Mühl

VS / Motivation und Einführung

52

Eigenschaften Verteilter Algorithmen > Sind (bis auf wenige Ausnahmen) nichtdeterministisch > Ursache sind z.B. unvorhersagbare Nachrichtenlaufzeiten und variierende Ablaufgeschwindigkeiten > Mittels Synchronisationsmechanismen kann Nichtdeterminismus entgegengewirkt werden, allerdings verringert dies die mögliche Parallelität

> Es gibt sowohl determinierte als auch nichtdeterminierte verteilte Algorithmen

G. Mühl

VS / Motivation und Einführung

53

Erwünschte Eigenschaften Verteilter Algorithmen > Verteilte Algorithmen sollen in der Regel total korrekt sein > Aber nicht für jedes zu lösende Problem gibt es einen total korrekten Algorithmus; dann hilft oft ein Algorithmus mit abgeschwächten Anforderungen, z.B. bezüglich der Terminierung > Manche Algorithmen sollen nicht terminieren (z.B. fortlaufende Uhrensynchronisation); dann wird stattdessen oft die Erfüllung anderer Bedingungen (z.B. einer Invariante) verlangt

G. Mühl

VS / Motivation und Einführung

54

Zeitkomplexität Verteilter Algorithmen > Variable Zeitkomplexität > Aktionen zeitlos > Nachrichten benötigen maximal eine Zeiteinheit

> Einheitszeitkomplexität > Aktionen zeitlos > Nachrichten benötigen genau eine Zeiteinheit

> Achtung: Es gilt nicht immer variable Zeitkomplexität ≤ Einheitszeitkomplexität > Grund: Die variable Zeitkomplexität erlaubt Abläufe, welche die Einheitszeitkomplexität nicht gestattet

G. Mühl

VS / Motivation und Einführung

55

Literatur 1. 2.

G. Mühl

S. Strogatz. Exploring complex networks. Nature, 410:268--276, 2001. D. Watts and S. Strogatz. Collective Dynamics of 'Small-World' Networks. Nature, 393:440--442, 1998.

VS / Motivation und Einführung

56