Waktu dalam Komputasi
Clock, Timestamp, dan Sinkronisasi
Pelajari Waktu KomputerKomputer membutuhkan waktu yang akurat untuk pencatatan log, penjadwalan, sertifikat keamanan, transaksi database, dan banyak operasi lainnya. Memahami bagaimana sistem mengukur, menyimpan, dan menyinkronkan waktu sangat penting bagi developer, administrator, dan siapa saja yang memecahkan masalah terkait waktu.
Bagaimana Komputer Menjaga Waktu
Clock Hardware
- RTC (Real-Time Clock): Chip bertenaga baterai yang menjaga waktu saat daya mati
- Osilator kristal: Kristal kuarsa menyediakan frekuensi stabil (biasanya 32.768 kHz)
- Penyimpangan: Clock hardware menyimpang beberapa detik hingga menit per bulan
System Clock
- Clock perangkat lunak yang dipelihara oleh sistem operasi
- Diinisialisasi dari RTC saat boot
- Disinkronkan melalui protokol jaringan (NTP)
- Dapat disesuaikan lebih sering dari RTC
Network Time Protocol (NTP)
NTP menyinkronkan clock komputer melalui jaringan, mencapai akurasi milidetik melalui internet dan sub-milidetik pada LAN.
Tingkat Stratum
| Stratum | Sumber | Akurasi |
|---|---|---|
| 0 | Jam atom, penerima GPS | Nanodetik |
| 1 | Terhubung langsung ke stratum 0 | Mikrodetik |
| 2 | Disinkronkan ke stratum 1 | Milidetik |
| 3-15 | Setiap tingkat disinkronkan ke satu di atasnya | Menurun sedikit |
Cara Kerja NTP
- Klien mengirim permintaan dengan timestamp
- Server merespons dengan timestamp-nya
- Klien menghitung penundaan jaringan dan offset
- Clock disesuaikan secara bertahap (slewed) untuk menghindari lompatan
Format Penyimpanan Waktu
| Format | Contoh | Kasus Penggunaan |
|---|---|---|
| Unix timestamp (d) | 1705329000 | Database, API |
| Unix timestamp (ms) | 1705329000000 | JavaScript, Java |
| ISO 8601 | 2024-01-15T14:30:00Z | JSON, API, log |
| RFC 2822 | Mon, 15 Jan 2024 14:30:00 +0000 | Header email |
| SQL DATETIME | 2024-01-15 14:30:00 | Database |
| SQL TIMESTAMP | 2024-01-15 14:30:00 | Field yang diperbarui otomatis |
Tantangan Sistem Terdistribusi
Clock Skew
Mesin yang berbeda memiliki waktu yang sedikit berbeda, menyebabkan:
- Peristiwa tidak berurutan dalam log
- Race condition dalam transaksi terdistribusi
- Kegagalan validasi sertifikat
Solusi
- NTP/PTP: Menjaga clock tersinkronisasi
- Logical clock: Vector clock, timestamp Lamport
- Protokol konsensus: Raft, Paxos untuk mengurutkan peristiwa
- TrueTime (Google): Disinkronkan GPS dengan ketidakpastian terbatas
Masalah Waktu Umum
Masalah Y2K (1999-2000)
Tahun dua digit tidak bisa merepresentasikan 2000. Menghabiskan biaya miliaran untuk diperbaiki di seluruh dunia.
Masalah Tahun 2038
Unix timestamp 32-bit akan overflow pada 19 Januari 2038. Migrasi ke 64-bit sedang berlangsung.
Bug Detik Kabisat
Beberapa sistem mogok ketika clock menunjukkan 23:59:60. Detik kabisat sedang dihapuskan pada tahun 2035.
Bug Transisi DST
Tugas terjadwal mungkin berjalan dua kali atau terlewat selama perubahan DST.
Praktik Terbaik
- Gunakan UTC secara internal: Simpan dan proses dalam UTC; konversi untuk tampilan
- Gunakan ISO 8601: Format yang tidak ambigu dan dapat diurutkan
- Sertakan info zona waktu: 2024-01-15T14:30:00+05:30, bukan hanya "14:30"
- Sinkronkan melalui NTP: Jaga semua server dalam milidetik
- Uji kasus tepi: Transisi DST, tahun kabisat, batas tahun
- Gunakan timestamp 64-bit: Hindari masalah 2038
Kesimpulan
Waktu komputer melibatkan clock hardware, sinkronisasi sistem operasi, dan protokol jaringan yang bekerja bersama. NTP menjaga clock tetap akurat di seluruh jaringan. Simpan waktu dalam UTC dengan informasi zona waktu; gunakan format ISO 8601 untuk pertukaran. Waspadai kasus tepi seperti transisi DST, detik kabisat, dan masalah 2038. Dalam sistem terdistribusi, sinkronisasi clock sangat fundamental untuk kebenaran.