Waktu dalam Komputasi

Clock, Timestamp, dan Sinkronisasi

Pelajari Waktu Komputer

Komputer 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

StratumSumberAkurasi
0Jam atom, penerima GPSNanodetik
1Terhubung langsung ke stratum 0Mikrodetik
2Disinkronkan ke stratum 1Milidetik
3-15Setiap tingkat disinkronkan ke satu di atasnyaMenurun sedikit

Cara Kerja NTP

  1. Klien mengirim permintaan dengan timestamp
  2. Server merespons dengan timestamp-nya
  3. Klien menghitung penundaan jaringan dan offset
  4. Clock disesuaikan secara bertahap (slewed) untuk menghindari lompatan

Format Penyimpanan Waktu

FormatContohKasus Penggunaan
Unix timestamp (d)1705329000Database, API
Unix timestamp (ms)1705329000000JavaScript, Java
ISO 86012024-01-15T14:30:00ZJSON, API, log
RFC 2822Mon, 15 Jan 2024 14:30:00 +0000Header email
SQL DATETIME2024-01-15 14:30:00Database
SQL TIMESTAMP2024-01-15 14:30:00Field 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.

Artikel Terkait