Verteilte Algorithmen Zeitsynchronisation (Time Service) Zustandsalgorithmen
vsis inf min uni hh ws 13_14 © vsis inf min uni hh 10_11
VIS-1 VertAlg-1 VIS1-VertAlg-1
Gliederung • • •
Übersicht verteilte Algorithmen Zeitalgorithmen Zustandsalgorithmen
vsis inf min uni hh ws 13_14 © vsis inf min uni hh 10_11
VIS-1 VertAlg-2 VIS1-VertAlg-2
Übersicht über verteilte Algorithmen •
Charakteristika Verteilter Systeme (vs. zentralisierte) — kein globaler Zeitrahmen ̶ deshalb nö g: • physikalische Zeitsynchronisation • logische zeitliche Ordnungen — kein globaler Zustand ̶ deshalb nö g: • Informationsverbreitung (Echo-, Heartbeat-, Phase-Algorithmen) • Snapshotting • Termination Detection • Auswahlalgorithmen (Bully-, Ringalgorithmus) • Distributed Garbage Collection — Nebenläufigkeit ̶ deshalb nö g: (s.a.: „Verteilte Transaktionen“) • gegenseitiger Ausschluss (wound-wait, wait-die) • Transaktionsunterstützung • Deadlock-Erkennung
vsis inf min uni hh ws 13_14 © vsis inf min uni hh 10_11
VIS-1 VertAlg-3 VIS1-VertAlg-3
Gliederung • • •
Übersicht verteilte Algorithmen Zeitalgorithmen Zustandsalgorithmen
vsis inf min uni hh ws 13_14 © vsis inf min uni hh 10_11
VIS-1 VertAlg-4 VIS1-VertAlg-4
Was ist eine Sekunde ? • •
1/60 einer Minute, und die ist 1/60 einer Stunde, und die ist 1/24 des mittleren Sonnentages Für Physiker ist der Tag (präziser: die Dauer der Erddrehung) kein gutes Maß, weil sich die Erde nicht gleichmäßig dreht — mittlerer Sonnentag wird immer länger — zusätzlich periodische (jahreszeitliche) und nicht-periodische Schwankungen
•
1967 atomphysikalische Definition einer Sekunde: "Die Sekunde ist das 9 192 631 770-fache der Periodendauer der dem Über-gang zwischen den beiden Hyperfeinstrukturniveaus des Grundzustandes von Atomen des Nuklids Cs-133 entsprechenden Strahlung."
•
Auch diese Sekunde entspricht annähernd dem 86 400. Teil des mittleren Sonnentages. Aber mit Hilfe von Atomuhren kann jede Sekunde genau gleich lang realisiert werden
vsis inf min uni hh ws 13_14 © vsis inf min uni hh 10_11
VIS-1 VertAlg-5 VIS1-VertAlg-5
Physische Zeit Koordinierte Universalzeit (Coordinated Universal Time) • Uhren mit atomischen Oszillatoren (Abweichung 10-13) • internationale atomische Zeit (International Atomic Time) seit 1967 Standard • astronomische Zeit basiert auf Rotation der Erde um ihre Achse und um die Sonne • Periode der Rotation wächst ununterbrochen (Reibung, atmosphärische Effekte u.a.) • Folge: astronomische und atomische Zeit driften auseinander • Coordinated Universal Time (UTC) ist internationaler Standard, basierend auf atomischer Zeit, sog. leap second wird gelegentlich addiert oder subtrahiert
vsis inf min uni hh ws 13_14 © vsis inf min uni hh 10_11
VIS-1 VertAlg-6 VIS1-VertAlg-6
Synchronisation physischer Uhren Synchronisation mit koordinierter Universalzeit • UTC - Signale werden synchronisiert und von Radiostationen und Satelliten ausgestrahlt • Genauigkeit bei Radiostationen: 0,1 - 10 ms • Genauigkeit bei Satelliten: ca. 0,1 ms • Computer können mit diesen Signalen synchronisiert werden, aber: • Empfänger sind relativ zu Workstations teuer (insb. bei Satellitenempfängern) • Genauigkeit von 10 ms unzureichend bei z.B. >> 10 Mio. Anweisungen / Sekunde
Kompensation von Zeitabweichungen • die Zeit des Time-Servers (UTC) ist möglicherweise: • größer (Lösung: die Uhr heraufsetzen) • kleiner (Lösung: die Uhr verlangsamen durch Soft- oder Hardware) --aber: nicht abrupt !!
vsis inf min uni hh ws 13_14 © vsis inf min uni hh 10_11
VIS-1 VertAlg-7 VIS1-VertAlg-7
Synchronisation physischer Uhren Uhren auf Quarzkristallbasis •
Häufig verwendet u.a. in Computern
•
Zeitabweichung (‚clock drift‘) • die Oszillatoren sind Objekt physischer Veränderungen • in derselben Uhr ändert sich die Oszillationsfrequenz mit der Temperatur
Netzwerk • Abweichungsraten ca.. 10-6 (d.h. 1 s pro 1.000.000 s, also etwa pro 11,6 Tage) vsis inf min uni hh ws 13_14 © vsis inf min uni hh 10_11
VIS-1 VertAlg-8 VIS1-VertAlg-8
Motivierendes Beispiel • •
Unix-Programm make unterstützt Programmierer beim Kompilieren make vergleicht Quell- und Objektdateien anhand ihrer Zeitstempel, um nur notwendige Dateien zu kompilieren
•
Beispiel:
output.c hat Zeitstempel 2144 output.o hat Zeitstempel 2145 Î Kompilieren nicht notwendig output.c hat Zeitstempel 2151 output.o hat Zeitstempel 2150 Î Kompiliere, da output.c geändert
Probleme in einem verteilten System ohne globale Zeit
vsis inf min uni hh ws 13_14 © vsis inf min uni hh 10_11
VIS-1 VertAlg-9 VIS1-VertAlg-9
Zeitsynchronisation •
In verteilten Systemen gibt es keine globale Zeit
•
Probleme dabei: — Zeit wird oftmals zum Kennzeichnen von Aktionen verwendet • drückt z.B. die Kausalität von Ereignissen aus — Einige verteilte Algorithmen beruhen auf zeitbehafteten Ereignissen • Konsistenz verteilter Daten (Timestamps für die Serialisierung von Transaktionen) • Sicherheit (Authentifizierung von Requests) • Elimination duplizierter Updates
•
Lösung über spezielle Synchronisationsverfahren — physikalische Uhren — logische Uhren
vsis inf min uni hh ws 13_14 © vsis inf min uni hh 10_11
VIS-1 VertAlg-10 VIS1-VertAlg-10
Synchronisationarten physikalischer Uhren •
Grundsätzliche Alternativen: — externe Synchronisation: Synchronisation auf eine externe Referenzzeit • Alle betrachteten Uhren laufen mit Bezug auf eine UTC-Quelle gleich D>0, |S(t)-Ci(t)|0, |Ci(t)-Cj(t)| 0 . - Der Time-Server kann mit einem UTC-Empfänger ausgestattet werden. - Vernachlässigt Probleme von Server-Ausfällen - Erweiterung: Der Time-Service wird von einer Gruppe von Time-Servern realisiert, Client sendet einen Multicast-Request und wird mit der ersten Antwort synchronisiert . - N.b.: Bewusst falsche und böswilligen Zeitangaben werden nicht berücksichtigt. vsis inf min uni hh ws 13_14 © vsis inf min uni hh 10_11
VIS-1 VertAlg-13 VIS1-VertAlg-13
Synchronisation physischer Uhren Der Berkeley-Algorithmus • Algorithmus für interne Synchronisation für Gruppe von Berkeley-UNIX-Computern • Master-Slaves-Organisation: - Master kontaktiert die Slaves periodisch - Slaves senden ihre lokalen Zeiten zurück - Master schätzt die Zeiten durch Betrachtung der Übertragungszeiten und bildet Durchschnitt. - Zeiten, die von einem Nominalintervall abweichen, werden nicht berücksichtigt (fault-tolerant average). - Master sendet dann einen individuellen Korrekturwert (positiv oder negativ) an jeden einzelnen Slave zurück.
• Beim Absturz des Masters wird ein bisheriger Slave als neuer Master ausgewählt. • Experiment (Gusella und Zatti): - 15 Computer im Bereich von 20 - 25 ms synchronisiert. - Abweichungsrate der Uhren 2*10-5 - maximale Übertragungszeit mit 10 ms angenommen. vsis inf min uni hh ws 13_14 © vsis inf min uni hh 10_11
VIS-1 VertAlg-14 VIS1-VertAlg-14
Network Time Protocol Network Time Protocol (NTP) • definiert Time-Service-Architektur und -Protokoll für verbundene Netzwerke. • Standard für Uhren-Synchronisation im Internet • Design und Eigenschaften: • UTC-Synchronisation mit statistischen Techniken für Datenfilterung, • zuverlässiger Dienst, auch bei andauerndem Verlust der Konnektivität, • Clients können ausreichend oft re-synchronisieren, • skalierbar für große Anzahl von Clients, • Schutz gegen zufällige und böswillige Störungen (Authentifizierungstechniken).
vsis inf min uni hh ws 13_14 © vsis inf min uni hh 10_11
VIS-1 VertAlg-15 VIS1-VertAlg-15
Network Time Protocol „NTP-Service“ • wird von einem Netzwerk von Servern im Internet realisiert: • primäre Server werden direkt mit UTC-Sendern synchronisiert, • sekundäre Server werden mit primären Servern synchronisiert, • logische Hierarchie (synchronisation subnet), • verschiedene Stufen (strata), • primäre Server befinden sich auf Stufe (stratum) 1 (root), • sekundäre Server werden mit der nächsthöheren Stufe synchronisiert, • Workstations sind auf der niedrigsten Stufe angesiedelt.
1
2
3 vsis inf min uni hh ws 13_14 © vsis inf min uni hh 10_11
2
3
3 VIS-1 VertAlg-16 VIS1-VertAlg-16
Network Time Protocol NTP-Synchronisationsmodi • NTP-Server synchronisieren in einem der drei Synchronisationsmodi: • Multicast: für Hochgeschwindigkeits-LAN´s (niedrige Genauigkeit) • Procedure-Call: ähnlich dem Christian-Algorithmus (wenn höhere Genauigkeit erwünscht oder Multicast nicht durch Hardware unterstützt wird, benachbarte LAN´s) • Symmetrischer Modus: Synchronisation für Master-Server in LAN´s, falls höchste Genauigkeit verlangt wird (Austausch von zusätzlichen Zeitinformationen) • In allen Modi wird mit UDP/IP kommuniziert
vsis inf min uni hh ws 13_14 © vsis inf min uni hh 10_11
VIS-1 VertAlg-17 VIS1-VertAlg-17
Network Time Protocol •
Im Procedure-Call- und symmetrischem Modus paarweiser Nachrichtenaustausch •
Jede Nachricht enthält 3 Zeitstempel (time stamps): • die lokalen Zeiten des Sendens und Empfangens der vorherigen Nachricht und die lokale Zeit des Sendens der aktuellen Nachricht
•
Im symmetrischen Modus kann die Verzögerung nicht unbeträchtlich sein
•
Nachrichten können verloren gehen, aber die drei Time stamps bleiben gültig
Ti-2
Server B
m Server A
Ti-3
vsis inf min uni hh ws 13_14 © vsis inf min uni hh 10_11
Zeit
Ti-1
m´ Ti
Zeit VIS-1 VertAlg-18 VIS1-VertAlg-18
Network Time Protocol • Für jedes Nachrichtenpaar wird berechnet: - Offset oi : Schätzung des aktuellen Offsets zwischen beiden Uhren, - Delay di : Die gesamte Übertragungszeit für beide Nachrichten.
Ti-2
Server B
m Server A
Zeit
Ti-1
Ti-3
m´ Ti
• Es seien: o das tatsächliche Offset zwischen A und B , t und t´ die aktuellen Übertragungszeiten für beliebige Nachrichtenpaare m und m´ • Dann: Ti-2 = Ti-3 + t + o und Ti = Ti-1 + t´- o • Substitution: a = Ti-2 - Ti-3 und b = Ti-1 - Ti • führt zu: di = t + t´ = a - b o = oi + (t´+ t)/2 mit oi = (a + b)/2
Bsp: Ein Server A schickt um 10:00:00 lokaler Zeit eine Nachricht an Server B, dessen lokale Uhr zu diesem Zeitpunkt genau 11:00:00 zeigt. Übertragungs- und Verarbeitungszeiten seien konstant 1 Sek. a = 11:00:01 - 10:00:00 = 01:00:01 b = 11:00:02 – 10:00:03 = 00:59:59 di = 01:00:01–00:59:59 = 00:00:02 oi = (01:00:01+00:59:59)/2 = 01:00:00
• Durch die Tatsache, dass t, t´ > 0, kann gezeigt werden, dass oi - di /2 < o < oi + di /2. Daraus folgt: oi ist Schätzung des Offsets und di ist die Genauigkeit dieser Schätzung vsis inf min uni hh ws 13_14 © vsis inf min uni hh 10_11
VIS-1 VertAlg-19 VIS1-VertAlg-19
Zeit
Network Time Protocol (Forts.) Datenfilterung-Algorithmus mit sukzessiven Paaren : • statistische Größe Filter Dispersion (Maß für Qualität der Schätzung) wird berechnet, • die 8 häufigsten Paaren werden aufbewahrt, • der Wert von oi , der dem kleinsten Wert von di entspricht, wird für die Schätzung von o herangezogen. NTP-Server bilden Paare mit mehreren Partnern. • Datenfilterung und Partner-Selektion basierend auf minimaler Synchronisation Dispersion = Summe (Filter Dispersions mit Root). ------> d.h. es ist ein (guter!) ‚best effort‘-Dienst (d.h. keine Garantie)
vsis inf min uni hh ws 13_14 © vsis inf min uni hh 10_11
VIS-1 VertAlg-20 VIS1-VertAlg-20
Logische Zeit „Happened-before“ - Relation für Prozesse (Causal Ordering oder Potential Causal Ordering) p1
a
b
p2
m1 c
d
physische Zeit
m2
p3 e
f
• HB1:
Wenn ∃ Prozess pi: x →ι y, dann x → y
• HB2:
Für jede Nachricht m gilt: send(m) → rcv(m)
• HB3:
Transitivität: Wenn x, y und z Ereignisse sind, dann gilt: wenn x → y und y → z, dann auch x → z.
aber :
a II e (concurrent)
vsis inf min uni hh ws 13_14 © vsis inf min uni hh 10_11
VIS-1 VertAlg-21 VIS1-VertAlg-21
Logische Uhren – „Lamport Clock“ Logische Uhren • monoton steigender Software-Zähler • grundsätzlich: kein direkter Bezug zu physikalischer Uhr 1 p1
2
a
b
p2 p3
1 e
• LC1:
m1 3
4
c
d
physikalische Zeit m2
5 f
Vor jedem Ereignis in p wird Cp inkrementiert : Cp := Cp + 1
• LC2: a) b)
Wenn pi m sendet, dann enthält m auch t = Cp (piggyback). Beim Empfang von (m, t) berechnet pj Cq := max (Cq, t) und wendet dann LC1 an bevor rec(m) seinen “time-stamp“ bekommt
Anm.: a → b => C(a) < C(b) - aber nicht notwendig auch umgekehrt Totale Ordnung der Zeiten z.B. über Prozess-Id (Ti, i) vsis inf min uni hh ws 13_14 © vsis inf min uni hh 10_11
VIS-1 VertAlg-22 VIS1-VertAlg-22
Logische Uhren – Vector Clock Logische Uhren • Ziel: Überwindung der Einschränkung von „Lamport-Uhren“ • Ein Zeitpunkt wird als Array von Ganzzahlen repräsentiert (1,0,0) (2,0,0) p1
a
b
(2,1,0) (2,2,0)
p2 p3
m1 c
(0,0,1) e
d
physikalische Zeit m2
(2,2,2) f
VC1: Initial Vi[j] = 0 für i,j = 1,2,..,N VC2: Bei Ereignis eigenen Counter erhöhen Vi[i] = Vi[i]+1 VC3: „send“ enthält lokalen Zeitvektor t = Vi VC4: „merge“ bei Empfang Vi [j] = max(Vj [j], t[j]) für j = 1,2,..,N Es gilt: a → b => V(a) < V(b) und V(a) < V(b) => a → b vsis inf min uni hh ws 13_14 © vsis inf min uni hh 10_11
VIS-1 VertAlg-23 VIS1-VertAlg-23
Gliederung • • •
Übersicht verteilte Algorithmen Zeitalgorithmen Zustandsalgorithmen
vsis inf min uni hh ws 13_14 © vsis inf min uni hh 10_11
VIS-1 VertAlg-24 VIS1-VertAlg-24
Auswahlalgorithmen •
dienen der Bestimmung eines speziellen Teilnehmers — z.B. für die Festlegung des Koordinators in einem 2PC-Protokoll
•
Anforderung: Wahl muss eindeutig sein, auch bei mehreren angestoßenen Wahlvorgängen — Im Falle eines Server-Ausfalls könnten zwei Teilnehmer gleichzeitig eine Wahl anstoßen
•
Ziel: Jedem Teilnehmer ist am Ende der gleiche gewählte Prozess mit der höchsten Prozess-Id bekannt
•
hier (nur): Algorithmen für LANs ─ weitergehende Fragen: — Was ändert sich z.B. bei drahtlosen Netzen — Was ändert sich bei großräumig verteilten Netzen?
vsis inf min uni hh ws 13_14 © vsis inf min uni hh 10_11
VIS-1 VertAlg-25 VIS1-VertAlg-25
Ring-basierter Auswahlalgorithmus • • • • • •
Kommunikation im Uhrzeigersinn Wahl hat 2-Phasen: Wahl und Bekannt-machung Jeder Prozess kann eine Wahl beginnen. Er markiert sich selbst als Teilnehmer, sendet eine Wahl-Nachricht mit seiner Id an den Nachbarn; bei Empfang, vergleiche eigene Id (ownId) mit der Id in der Nachricht (msgId)
3
17
4 24 9 1
— msgId > ownId ? 15 Î Nachricht weiterleiten, sich selbst als Teilnehmer markieren — msgId < ownId ? Noch kein Teilnehmer ? Î msgId gegen ownId tauschen, Nachricht weiterleiten und sich selbst als Teilnehmer markieren Bereits Teilnehmer ? Î Nachricht verwerfen (andere Wahl bereits im Gang)
28
— msgId == ownId Î Knoten ist der neue Koordinator. Als Nicht-Teilnehmer markieren und Bekanntmachungsnachricht verschicken
• •
Teilnehmer merken sich Ergebnis, setzen sich auf Nicht-Teilnehmer, leiten Nachricht weiter Aufwand an Nachrichten: O(n) nach [Tanenbaum, van Steen, 2003]
inf min uni10_11 hh ws 13_14 © vsisvsis inf min uni hh
VIS-1 Middlew-26 VIS1-VertAlg-26
24
Bully-Algorithmus • • • • • • •
[Garcia-Molina, 1982]
Prozesse mit Id.s sind bekannt. Bei einem Timeout vom Koordinator initiiert ein Prozess eine Wahl und sendet an alle Prozesse mit höheren Id.s Wahlnachrichten. Diese senden wiederum Wahlnachrichten an Prozesse mit höheren Id.s weiter. Prozess, der keine Antwort bekommt bzw. der die höchste Id. hat, macht sich als neuer Koordinator bekannt bester Fall: n-2 Nachrichten schlechtester Fall: O(n2)
Der Bully-Algorithmus nimmt nur an, dass jeder Prozess jeden anderen erreichen kann. Wenn der startende Prozess die niedrigste ID hat aus n Prozessen, fallen n × (n − 1)/2 Aufforderun-gen und (n−1)×(n−2)/2 Bestätigungen an. Immer werden n−2 Ergebnismeldungen versandt, daher liegt der Nachrichtenauf-wand zwischen O(n) und O(n2). inf min uni10_11 hh ws 13_14 © vsisvsis inf min uni hh
VIS-1 Middlew-27 VIS1-VertAlg-27
Zusammenfassung •
Eigenschaften verteilter Systeme machen spezifische Lösungen für bekannte Probleme notwendig
•
keine globale Zeit — Zeitsynchronisation: physikalische und logische Uhren
•
kein globaler Zustand — Auswahlalgorithmen zur Bestimmung eines Koordinators
•
Nebenläufigkeit — Mechanismen zur Konsistenzwahrung (später: siehe „Verteilte Transaktionen“)
vsis inf min uni hh ws 13_14 © vsis inf min uni hh 10_11
VIS-1 VertAlg-28 VIS1-VertAlg-28