Logical Clock and Synchronization
Waktu adalah hal yang penting
dalam sistem terdistribusi karena beberapa hal. Pertama, waktu adalah satuan
akurasi. Untuk mengetahui kapan suatu peristiwa terjadi, dibutuhkan
sinkronisasi clock pada sistem dan di luar sistem. Sebagai contoh, transaksi
e-commerce terjadi di komputer pengguna dan komputer bank. Kejadian tersebut
haruslah dicatat waktunya secara akurat untuk keperluan audit. Kedua, algoritma
mengenai sinkronisasi clock memiliki beberapa masalah, antara lain
mempertahankan konsistensi data yang didistribusikan, otentikasi request yang
dikirim ke server, dan menghapus proses yang terduplikasi.
Jika dianalogikan, seperti teori
relativitas milik Einstein. Suatu kejadian yang diamati oleh pengamat yang satu
bisa saja berbeda dengan pengamat lainnya dalam hal interval (jeda) waktu.
Dalam sistem terdistribusi, masalahnya adalah mencatat waktu terjadinya suatu
kejadian pada node yang berbeda-beda secara akurat sehingga dapat diketahui
mana yang hanya terjadi dan mana yang terjadi secara serempak.
Clock, Kejadian, dan Process
State
Clock (Jam)
Setiap komputer pasti memiliki
clock fisik. Clock adalah alat elektronik yang menghitung osilasi yang terjadi
pada kristal pada frekuensi tertentu, dan menyimpannya dalam counter register.
Sistem operasi membaca clock fisik tersebut dan menerjemahkannya ke software
clock. Software clock tidak selalu akurat sehingga pewaktuan hardware dan
software memiliki perbedaan walaupun sangat kecil. Namun, software clock tetap
menjadi acuan pencatatan waktu setiap kejadian proses. Kejadian yang terjadi
setelah suatu kejadian akan tercatat di waktu yang berbeda apabila resolusi
clock (periode update software clock) lebih kecil daripada interval waktu antar
kejadian.
Clock Skew And Clock Drift
Clock milik tiap-tiap komputer
tidak selalu sama. Perbedaan antara pembacaan dua clock komputer berbeda
disebut skew. Sedangkan perbedaan clock rate disebut clock drift. Pada clock
fisik, osilasi, frekuensi, dan temperatur mempengaruhi perbedaan clock tiap
komputer. Perbedaannya mungkin sangat kecil, tetapi akumulasi perbedaan
tersebut dapat mencapai tahap yang bisa diamati dengan mata telanjang walaupun
sudah disamakan nilainya. Clock drift rate adalah perubahan perbedaan pembacaan
antara clock dan perfect reference clock (clock yang dijadikan acuan).
Waktu Universal Terkoordinasi
(Coordinated Universal Time)
Clock komputer dapat disinkronkan
dengan clock luar yang akurasinya tinggi. Clock yang akurasinya paling tinggi
menggunakan osilator atom. Keluaran clock ini digunakan sebagai standar waktu
international. Coordinated Universal Time (UTC) adalah standar internasional
untuk penjagaan waktu (timekeeping). Sinyal UTC disiarkan dari stasiun radio
dan satelit ke seluruh dunia. Komputer dengan penerima sinyal di seluruh dunia
dapat mensinkronkan clocknya dengan sinyal ini.
Sinkronasi Clock Fisik
Untuk mengetahui kapan sebuah
peristiwa terjadi secara akurat pada proses system terdistribusi, diperlukan
sinkronisasi dengan sumber waktu dari luar, yang disebut sinkronisasi eksternal
(external synchronization). Dan jika satu clock tersinkronisasi dengan clock
yang lain dengan derajat akurasi yang diketahui, maka kita bisa mengukur
interval terjadinya dua peristiwa pada komputer yang berbeda, walaupun tidak
tersinkronisasi ke sumber waktu dari luar. Hal ini disebut sinkronisasi
internal (internal synchronization).
Beberapa gagasan pengkoreksian
(correctness) untuk clock sudah pernah diajukan. Hardware clock H selalu
dikoreksi apabila drift-nya sudah mencapai angka tertentu (ρ > 0). Jadi,
galat (error) perhitungan interval antara waktu sebenarnya t dan t’ (t > t’)
adalah:
(1 - ρ)(t' - t) ≤ H(t') - H(t) ≤
(1 + ρ)(t' -t)
Clock yang tidak menerima
pengkoreksian apapun dinyatakan faulty. Clock dinyatakan crash failure ketika
berhenti berdetik sama sekali. Kegagalan clock lainnya adalah arbitrary
failure. Contoh arbitrary failure adalah ‘Y2K bug’ yang terjadi pada pergantian
tahun 1999 ke 2000. Setelah 31 Desember 1999 dilanjutkan ke 1 Januari 1900.
Catatan: clock tidak harus akurat untuk menjadi benar.