Vektoruhren und logische Zeit
Kurz: In verteilten Systemen gehen Uhren unterschiedlich. Logische Uhren (Lamport) und Vektoruhren ordnen Ereignisse nach Ursache und Wirkung statt nach der Uhrzeit.
Genauer: Eine Lamport-Uhr ist ein Zähler, der bei jedem Ereignis und bei jeder empfangenen Nachricht erhöht wird. Sie garantiert: Wenn A vor B kam, ist Zeit(A) < Zeit(B). Umgekehrt gilt das nicht. Vektoruhren speichern pro Knoten einen Zähler und erkennen echte Gleichzeitigkeit.
Im Detail
- Happened-before (→): Teilordnung: gleicher Prozess, oder Senden → Empfangen.
- Lamport: Beim Empfang
t = max(lokal, empfangen) + 1. - Vektoruhr: Vergleich zweier Vektoren zeigt „vor“, „nach“ oder „gleichzeitig (Konflikt)“.
- Wanduhr-Probleme: Uhrabweichung, NTP-Sprünge, Schaltsekunden.
- Hybrid Logical Clocks: Mischen physische und logische Zeit (z. B. CockroachDB).
- Einsatz: Konflikterkennung bei Replikation, Versionierung.
Siehe auch: CRDTs: konfliktfrei replizierte Datentypen, Replikation: Leader und Follower