Zeit in der Informatik
Uhren, Zeitstempel und Synchronisation
Computerzeit kennenlernenComputer benötigen genaue Zeitangaben für Protokollierung, Planung, Sicherheitszertifikate, Datenbanktransaktionen und unzählige weitere Operationen. Das Verständnis, wie Systeme Zeit messen, speichern und synchronisieren, ist für Entwickler, Administratoren und alle, die zeitbezogene Probleme beheben, unerlässlich.
Wie Computer die Zeit halten
Hardware-Uhren
- RTC (Echtzeituhr): Batteriegepufferter Chip, der die Zeit bei ausgeschaltetem Gerät behält
- Quarzoszillator: Quarzkristall mit stabiler Frequenz (typischerweise 32.768 kHz)
- Drift: Hardware-Uhren weichen pro Monat um Sekunden bis Minuten ab
Systemuhr
- Vom Betriebssystem verwaltete Software-Uhr
- Wird beim Booten von der RTC initialisiert
- Über Netzwerkprotokolle (NTP) synchronisiert
- Kann häufiger als die RTC angepasst werden
Network Time Protocol (NTP)
NTP synchronisiert Computeruhren über ein Netzwerk und erreicht Millisekundengenauigkeit über das Internet sowie Sub-Millisekunden in LANs.
Stratum-Stufen
| Stratum | Quelle | Genauigkeit |
|---|---|---|
| 0 | Atomuhr, GPS-Empfänger | Nanosekunden |
| 1 | Direkt mit Stratum 0 verbunden | Mikrosekunden |
| 2 | Synchronisiert mit Stratum 1 | Millisekunden |
| 3–15 | Jede Stufe synchronisiert mit der darüber | Verschlechtert sich leicht |
Wie NTP funktioniert
- Client sendet Anfrage mit Zeitstempel
- Server antwortet mit seinen Zeitstempeln
- Client berechnet Netzwerkverzögerung und Offset
- Uhr wird schrittweise angepasst (Slewing), um Sprünge zu vermeiden
Zeitspeicherformate
| Format | Beispiel | Anwendungsfall |
|---|---|---|
| Unix-Zeitstempel (s) | 1705329000 | Datenbanken, APIs |
| Unix-Zeitstempel (ms) | 1705329000000 | JavaScript, Java |
| ISO 8601 | 2024-01-15T14:30:00Z | JSON, APIs, Protokolle |
| RFC 2822 | Mon, 15 Jan 2024 14:30:00 +0000 | E-Mail-Header |
| SQL DATETIME | 2024-01-15 14:30:00 | Datenbanken |
| SQL TIMESTAMP | 2024-01-15 14:30:00 | Automatisch aktualisierende Felder |
Herausforderungen verteilter Systeme
Uhrenversatz (Clock Skew)
Verschiedene Maschinen haben leicht unterschiedliche Zeiten, was folgende Probleme verursacht:
- Ereignisse in falscher Reihenfolge in Protokollen
- Race Conditions bei verteilten Transaktionen
- Fehler bei der Zertifikatsvalidierung
Lösungen
- NTP/PTP: Uhren synchron halten
- Logische Uhren: Vektoruhren, Lamport-Zeitstempel
- Konsens-Protokolle: Raft, Paxos zur Ereignisordnung
- TrueTime (Google): GPS-synchronisiert mit begrenzter Unsicherheit
Häufige Zeitprobleme
Das Jahr-2000-Problem (1999–2000)
Zweistellige Jahreszahlen konnten das Jahr 2000 nicht darstellen. Die Behebung kostete weltweit Milliarden.
Das Jahr-2038-Problem
32-Bit-Unix-Zeitstempel laufen am 19. Januar 2038 über. Die Migration auf 64-Bit ist im Gange.
Schaltsekunden-Fehler
Einige Systeme stürzen ab, wenn Uhren 23:59:60 anzeigen. Schaltsekunden werden bis 2035 abgeschafft.
Sommerzeitübergangs-Fehler
Geplante Aufgaben können während der Sommerzeitumstellung doppelt ausgeführt werden oder ausfallen.
Bewährte Praktiken
- Intern UTC verwenden: In UTC speichern und verarbeiten; zur Anzeige umrechnen
- ISO 8601 verwenden: Eindeutiges, sortierbares Format
- Zeitzoneninformation einschließen: 2024-01-15T14:30:00+05:30, nicht nur „14:30“
- Über NTP synchronisieren: Alle Server innerhalb von Millisekunden halten
- Grenzfälle testen: Sommerzeitübergänge, Schaltjahre, Jahresgrenzen
- 64-Bit-Zeitstempel verwenden: Das 2038-Problem vermeiden
Fazit
Computerzeit umfasst Hardware-Uhren, Betriebssystem-Synchronisation und Netzwerkprotokolle, die zusammenarbeiten. NTP hält Uhren netzwerkweit genau. Speichern Sie Zeiten in UTC mit Zeitzoneninformation; verwenden Sie das ISO-8601-Format für den Datenaustausch. Beachten Sie Grenzfälle wie Sommerzeitübergänge, Schaltsekunden und das 2038-Problem. In verteilten Systemen ist die Uhrensynchronisation grundlegend für die Korrektheit.