Assalamu‘alaikum wr. wb.
Hello guys! Agar Komputer di Seluruh Dunia Tersinkron dan Sama, diperlukan Algoritma khusus yang menyatukan Jam-jam di Seluruh Dunia. Untuk itulah diperlukan yang namanya Sinkronisasi Jam atau Clock Synchronization.
Sumber Artikel Materi : Komputasi.files.Wordpress.com (PDF), People.CS.Rutgers.edu (PDF), CS.Helsinki.fi (PDF), Ilmuskripsi.com, Educative.io, Blog.Sofwancoder.com, dan Thecode11.com
A. Pengertian Sinkronisasi dan Sinkronisasi Jam
Sinkronisasi adalah proses pengaturan jalannya beberapa proses pada saat yang bersamaan. Tujuan utama sinkronisasi adalah menghindari terjadinya inkonsitensi data karena pengaksesan oleh beberapa proses yang berbeda (mutual exclusion) serta untuk mengatur urutan jalannya proses-proses sehingga dapat berjalan dengan lancar dan terhindar dari deadlock dan starvation. Sinkronisasi umumnya dilakukan dengan bantuan perangkat sinkronisasi. Penyelesaian terhadap masalah ini sangat penting karena perkembangan teknologi sistem komputer menuju ke sistem multiprocessing, terdistribusi dan paralel yang mengharuskan adanya proses-proses kongkuren.
Entitas-entitas dalam sister sering harus bekerjasama (cooperate) dan menyerempakkan (synchronize) untuk menyelesaikan masalah yang diberikan dengan benar Misalnya, Dalam suatu sistem berkas terdistribusi, proses-proses harus berinskronisasi dan bekerjasama sehingga dua proses tidak dibolehkan untuk menulis ke bagian yang sama dari suatu file, pada waktu yang sama.
B. Jenis-jenis Sinkronisasi Jam
Algoritma untuk sinkronisasi dalam sistem terdistribusi memiliki beberapa sifat :
- Informasi yang relevan tersebar di beberapa computer
- Keputusan pembuatan proses hanya berdasarkan informasi local.
- Peristiwa kegagalan dengan penyebab tunggal di dalam sistem harus dihindarkan.
- Tidak tersedianya clock atau sumber waktu global yang akurat.
- Sinkronisasi merupakan bagian penting untuk kerjasama dalam Pemakaian Sumber Daya Berbagi (Sharing resources), pengurutan kejadian dan kesepakatan clock tersebar
Sinkronisasi merupakan bagian penting untuk kerjasama dalam Pemakaian sumberdaya berbagi (Sharing resources), pengurutan kejadian dan kesepakatan clock tersebar. Contohnya, Tidak Adanya Kesepakatan Clock Global.
1. Sinkronisasi Straightforward
Cara yang paling mudah untuk menentukan waktu adalah dengan bertanya langsung ke server waktu (Universal Coordinated Time - UTC), hanya saja akan banyak perbedaan dalam request. Karena waktu merupakan dasar dari cara orang berpikir, dan akibat tidak adanya sinkronisasi clock juga sangat dramatis, seperti yang dilihat pada contoh sebelumnya, sehingga wajar saja bila dalam pembahasan sikronisasi dimulai dengan pertanyaan sederhana :
Mungkinkan mensinkronkan semua clock yang ada dalam sistem tersebar?
2. Clock Logika
Boleh dikatakan semua komputer memiliki rangkaian pencatat waktu. Walaupun penggunakan kata Clock sudah meluas, kata yang lebih tepat adalah timer untuk merujuk komponen dari rangkaian tersebut. Timer ini menggunakan crystal quartz sebagai sumber frekuensinya. Walaupun frekuensi osilator pada osilator kristal biasanya stabil, tetap saja tidak mungkin menjamin bahwa semua kristal yang bekerja diberbagai komputer memiliki frekuensi yang persis sama.
Selalu ada sedikit perbedaan yang terjadi dan mengakibatkan perbedaan waktu pula yang disebut clock skew. Berbagai algoritma telah dikembangkan untuk menangani sinkronisasi clock dan beberapanya akan dibahas berikut ini.
3. Algoritma Lamport
Menurut Lamport, sikronisasi clock tidak harus dilakukan dengan nilai mutlak clocknya, karena yang diperlukan dalam sikronisasi proses-proses adalah urutan proses tersebut. Jadi yang dipentingkan adalah konsistensi internal clock, bukan apakah clock tersebut harus sama persis dengan waktu real. Clock jenis ini biasanya disebut clock logika.
4. Internal Clock Synchronization
Merujuk pada sinkronisasi jam internal di dalam suatu sistem atau perangkat. Ini memastikan bahwa berbagai bagian dari satu sistem komputer atau perangkat keras memiliki waktu yang seragam.
5. External Clock Synchronization
Sinkronisasi dengan referensi waktu eksternal, seperti sinyal jam dari sumber waktu global atau server waktu eksternal. Network Time Protocol (NTP) adalah contoh yang baik untuk jenis sinkronisasi ini.
C. Alasan Perlunya Sinkronisasi Jam
Sinkronisasi jam sangat penting dalam berbagai konteks di dunia komputasi dan jaringan. Berikut adalah beberapa alasan mengapa sinkronisasi jam diperlukan :
1. Koordinasi di Antara Sistem Terdistribusi
Dalam sistem terdistribusi, entitas atau komputer yang berbeda sering perlu berkomunikasi dan berkoordinasi satu sama lain. Sinkronisasi jam memastikan bahwa waktu yang digunakan oleh entitas ini adalah seragam, memudahkan penjadwalan dan koordinasi tugas.
2. Pembukuan dan Analisis Log
Data log dan pembukuan waktu menjadi tidak konsisten dan sulit dianalisis jika waktu di berbagai perangkat atau sistem tidak sinkron. Informasi waktu yang tepat penting untuk menganalisis peristiwa dan masalah dalam sistem.
3. Keamanan dan Enkripsi
Beberapa Protokol keamanan mengandalkan informasi waktu, seperti sertifikat digital atau token waktu. Keberhasilan implementasi protokol ini memerlukan waktu yang akurat di seluruh sistem.
4. Transaksi dan Database
Dalam sistem basis data terdistribusi, sinkronisasi waktu penting untuk memastikan konsistensi transaksi dan waktu pencatatan data. Ini dapat mencegah masalah seperti ketidakcocokan dan inkonsistensi data.
5. Real-Time Systems
Dalam sistem waktu nyata (real-time), di mana waktu sangat kritis, sinkronisasi jam sangat diperlukan untuk memastikan bahwa peristiwa terjadi sesuai dengan jadwal yang diinginkan.
6. Pembaruan Perangkat dan Aplikasi
Sinkronisasi jam membantu dalam koordinasi pembaruan perangkat keras dan perangkat lunak di berbagai komputer dalam jaringan. Pembaruan ini dapat diatur dan dilakukan pada waktu yang bersamaan untuk menghindari masalah kesalahan dan ketidakcocokan waktu.
7. Pembaruan Otomatis
Beberapa proses dan aplikasi memerlukan pembaruan otomatis berdasarkan waktu. Sinkronisasi jam memungkinkan pembaruan ini dilakukan secara konsisten.
8. Ketepatan Waktu
Dalam berbagai konteks, seperti komunikasi dan transaksi keuangan, ketepatan waktu menjadi sangat penting. Sinkronisasi jam memastikan bahwa entitas yang terlibat menggunakan waktu yang sama dan akurat.
9. Pelacakan dan Manajemen Sumber Daya
Dalam lingkungan komputasi awan dan manajemen sumber daya terdistribusi, sinkronisasi waktu diperlukan untuk melacak dan mengelola sumber daya secara efisien.
Contohnya, Pelacakan Kendaraan dalam suatu Sistem Pengawasan Kota menggunakan Jaringan Sensor Kamera Terdistribusi
- Tujuan : untuk mengetahui jejak (track) dari kendaraan yang mencurigakan
- Camera Sensor Nodes dipasang di seluruh kota
- Setiap Camera Sensor yang mendeteksi suatu kendaraan melaporkan waktunya ke server pusat
- Server merekam pergerakan kendaraan yang mencurigakan
10. Penulisan File
Penulisan File juga dapat menjadi salah satu alasan diperlukannya sinkronisasi jam. Berikut adalah beberapa situasi di mana sinkronisasi jam sangat penting untuk operasi penulisan file :
- Pencatatan Waktu Transaksi
- Verifikasi dan Audit
- Konsistensi File System
- Replikasi dan Backup
- Koordinasi antara Node
- Penjadwalan Tugas dan Pekerjaan
- Pembaruan File dan Metadata
- Integritas dan Keamanan
Penulisan file dalam suatu Sistem Berkas Tersebar (Distributed File System).
D. Pelacakan Waktu pada Komputer
Bagaimana suatu komputer memelihara catatan waktunya?
- Setiap komputer mempunyai hardware timer
- Timer ini menyebabkan suatu interrupt 'H' kali dalam sedetik
- Interrupt handler menambahkan 1 ke Jam Softwarenya (C)
Persoalan dengan jam pada suatu komputer
- Dalam praktek, hardware timer tidak tepat/teliti
- Ia tidak benar-benar berinterupsi 'H' kali sedetik dikarenakan ketidak-sempurnaan material hardware dan variasi temperatur
- Komputer menghitung waktu lebih lambat atau lebih cepat daripada waktu aktual
- Sehingga muncul Clock Skew yaitu kemiringan antara :
- Jam komputer dan waktu sebenarnya (misalnya UTC)
Ada beberapa terminologi terkait Sinkronisasi Jam yang perlu dicatat, yaitu :
1. Skew
Perbedaan antara waktu yang disinkronkan antara dua jam pada saat tertentu. Sebagai contoh, jika dua jam yang seharusnya menunjukkan waktu yang sama memiliki perbedaan 10 detik dalam waktu yang ditampilkan, maka berpincang antara kedua jam tersebut adalah 10 detik.
Pada saat waktu UTC adalah t, misalkan jam pada komputer mempunyai waktu C (t).
Tiga Jenis jam yang mungkin, yaitu :
a. Jam Sempurna :
Timer ber-detak 'H' interupsi sedetik.
b. Jam Cepat :
Timer berdetak lebih dari 'H' kali sedetik.
c. Jam Lambat :
Timer berdetak kurang dari 'H' interupsi per detik.
Frequency dari jam didefinisikan sebagai ratio dari jumlah detik yang dihitung oleh jam software untuk setiap detik UTC
Skew dari jam tersebut didefinisikan sebagai sejauh mana frekuensi berbeda dari jam yang sempurna
Karena :
- > 0, Untuk Jam yang Cepat.
- = 0, Untuk Jam yang Sempurna.
- < 0, Untuk Jam yang Lambat.
2. Drift Rate
Laju di mana suatu jam tertentu dapat bergeser dari Jam ideal. Sebagai contoh, jam kuarsa biasa biasanya bergeser sekitar 1 detik dalam 11–12 hari.
a. Pabrikan jam menetapkan batas atas dan bawah yang clock skew dapat berfluktuasi (turun-naik). Nilai ini dikenal sebagai maximum drift rate (p)
b. Seberapa jauh dua jam dapat berpisah jarak?
- Jika dua jam menyimpang dari UTC dalam arah berlawanan, pada waktu At setelah
- keduanya disinkronkan, jaraknya sebanyak 2pAt detik
c. Menjamin simpangan maksimum antar komputer dalam suatu Sistem Terdistribusi
- Jika maximum drift yang dibolehkan dalam suatu SisTer adalah ō detik, maka jam dari setiap komputer harus disinkron-ulangkan setidaknya setiap ō/2p detik.
E. Jenis-jenis Algoritma Sinkronisasi Clock
Untuk mengatasi masalah sinkronisasi jam, beberapa algoritma telah dirancang yang membantu mencapai sinkronisasi jam seakurat mungkin. Beberapa dari algoritma-algoritma ini adalah :
- Algoritma Cristian
- Algoritma Berkeley
- Network Time Protocol (NTP)
1. Cristian Algorithm
Flaviu Cristian (1989) menawarkan suatu algoritma untuk menyerempakkan komputer komputer dalam jaringan dengan suatu server waktu (time server).
Cristian's Algorithm digunakan untuk menyinkronkan jam pada komputer dalam suatu jaringan. Algoritma ini mengandalkan server waktu sentral yang dianggap memiliki waktu yang tepat. Klien mengirim permintaan waktu ke server, dan server memberikan tanggapan. Waktu yang diterima oleh klien digunakan untuk menyesuaikan waktu lokalnya.
Algoritma Cristian didasarkan pada 2 (Dua) Asumsi :
- Ada setidaknya satu jam yang menampilkan waktu yang akurat dan dapat digunakan oleh jam lain untuk memperbaiki waktu mereka.
- Waktu permintaan dan waktu respons dalam satu putaran selalu konstan dan dengan demikian dapat digunakan untuk memperkirakan waktu penundaan.
Mari kita lanjutkan contoh kita tentang sistem terdistribusi yang berisi server dan beberapa klien, dan asumsikan server kita memiliki waktu yang benar yang akan diminta oleh klien untuk menentukan waktu mereka sendiri.
Dalam algoritma Cristian, empat waktu berbeda T1, T2, T3, dan T4 dicatat saat klien mengirim permintaan ke server, server memproses permintaan, dan mengirim respons, dan klien menerima respons.
One Round Trip (Algoritma Christian) |
Kita memiliki Rumus berikut :
Waktu Permintaan + Waktu Respons = (T4 - T1) - (T3 - T2)
Dengan asumsi waktu permintaan ≈ waktu respons, kita dapat menyatakan 2Tr = waktu permintaan + waktu respons sebagai,
2Tr = (T4 - T1) - (T3 - T2)
Klien dapat menetapkan waktu T4 = T3 = 0.5Tr.
Dan inilah beberapa Kelebihan dari Algoritma Christian :
- Asumsi mengenai delay transmisi paket
- Algoritma Cristian menganggap bahwa waktu round-trip untuk pertukaran message di jaringan adalah cukup pendek
- Algoritma menganggap bahwa delay untuk request dan respon adalah sama.
- Algoritma Cristian dimaksudkan untuk mensinkronkan komputer-komputer dalam Intranet
- Pendekatan Probabilistik untuk menghitung delay
- Tidak ada batasan ketat mengenai maximum drift antar jam dari komputer-komputer
- Kegagalan Time server atau Jam Server Salah
- Jam yang salah pada time server mengakibatkan ketidakakuratan jam di dalam seluruh SisTer
- Kegagalan dari time server akan mengakibatkan tidak mungkinnya sinkronisasi.
2. Berkeley Algorithm
Berkeley Algorithm juga digunakan untuk menyinkronkan jam di komputer dalam jaringan. Perbedaannya dengan Cristian's Algorithm adalah bahwa dalam Berkeley Algorithm, setiap komputer dianggap setara. Perhitungan waktu rata-rata dari komputer-komputer dalam jaringan digunakan untuk menyesuaikan waktu lokal.
Diberikan n node yang berisi jam yang perlu disinkronkan, satu node diangkat sebagai pemimpin sementara yang lain dianggap sebagai pengikut.
Node pemimpin secara periodik melakukan ping ke semua node pengikut dan mendapatkan waktu mereka menggunakan algoritma Cristian. Setelah semua waktu diperoleh, node pemimpin menggunakannya (dan waktu sendiri) untuk menghitung rata-rata perbedaan waktu. Node pemimpin kemudian memperbarui waktu sendiri menggunakan perbedaan waktu yang dihitung dan menyebarkan waktu yang diperbarui ke seluruh jaringan. Setelah menerima waktu yang disebarkan, node pengikut kemudian memperbarui waktu mereka sendiri juga.
Menerima Waktu dari semua Node (Algoritma Berkeley) |
Menyebarkan waktu yang diperbarui ke semua Node (Algoritma Berkeley) |
Contoh Pendekatan :
- Suatu time server secara berkala (sekitar sekali dalam 4 menit) mengirimkan waktunya ke semua komputer dan mengambil selisih waktunya
- Komputer menghitung selisih waktu dan kemudian membalas
- Server menghitung suatu selisih waktu rerata untuk setiap komputer
- Server memerintahkan semua komputer untuk meng-Update waktu mereka (dengan sinkronisasi waktu gradual)
Pada Jam di atas menunjukkan bahwa terdiri dari 1 (Satu) Time Server dan 2 (Dua) Komputer Client. Pada Jam di Server menunjukkan Pukul 3:05, sedangkan Jam di Client menunjukkan Pukul 2:55 dan 3:30.
Dan inilah beberapa Kelebihan dari Algoritma Berkeley :
- Asumsi mengenai delay transmisi paket
- Algoritma Berkeley memprediksi delay jaringan (mirip algoritma Cristian)
- Karena itu, ini efektif dalam intranet, dan tidak akurat dalam jaringan area luas
- Tidak diperlukan UTC Receiver
- Jam-jam dalam sistem bersinkronisasi dengan pererataan semua waktu komputer
- Menurunkan efek dari jam rusak
- Toleransi salah perhitungan rerata, dimana jam pencilan (outlier) diabaikan, dapat dengan mudah dikerjakan dalam algotima Berkeley
- Kegagalan Time server dapat disembunyikan
- Jika suatu time server rusak, komputer lain dapat dipilih sebagai suatu time server
3. Network Time Protocol (NTP)
Network Time Protocol (NTP) adalah protokol jaringan yang dirancang untuk menyinkronkan jam di komputer dalam jaringan. NTP bekerja berdasarkan hirarkis server waktu. Ada server waktu paling akurat yang disebut sebagai server referensi, dan server waktu lainnya sinkron dengan server referensi. NTP menggunakan pendekatan algoritma yang rumit untuk mengukur dan mengkoreksi perbedaan waktu antara server dan klien.
Setiap lapisan dalam protokol disebut sebagai Stratum dan diberi nomor n mulai dari 0 hingga 15. Jam di Stratum teratas, Stratum 0, adalah yang paling akurat. Akurasi jam berkurang seiring dengan meningkatnya nilai n.
Stratum 0 terdiri dari jam yang sangat presisi seperti jam atom, GPS, dan jam radio. Ini terhubung langsung ke server waktu utama di Stratum 1. Setiap Stratum n meminta waktu dari Stratum n-1 di atasnya, misalnya jam Stratum 2 mengirim permintaan ke jam Stratum 1. Jam di Stratum yang sama juga dapat berkoordinasi satu sama lain untuk meningkatkan akurasinya.
Misalkan Jam A di Stratum n mengatur waktunya untuk pertama kalinya. Jam A akan memulai permintaan waktu dengan Jam B di Stratum n-1. Enam pertukaran akan terjadi antara kedua jam tersebut selama periode 5 hingga 10 menit. Ini kemudian akan digunakan oleh Jam A untuk mengatur waktu awalnya. Setelah waktu awal diatur, Jam A kemudian akan memperbarui waktunya setiap 10 menit dengan pertukaran waktu dengan jam mana pun di Stratum n-1.
Network Time Protocol (NTP) |
Versi NPT yang lebih ketat dikenal sebagai Simple Network Time Protocol (SNTP), yang membatasi komunikasi peer-to-peer. Node dibatasi untuk menggunakan Stratum atas untuk tujuan sinkronisasi saja.
Dan inilah Organisasi Hirarkis dari Server NTP :
Ketika time server A menghubungi time server B untuk Sinkronisasi :
- Jika strata(A) ≤ strata(B), maka A tidak mensinkronkan dengan B
- Jika strata(A) > strata(B), maka :
- Time server A mensinkronkan dengan B
- Suatu algortima mirip algoritma Cristian digunakan untuk mensinkronkan.
- Namun, sampel statisik lebih besar diambil sebelum dilakukan update jam
- tersebut.
- Time server A mengupdate strata-nya
- strata(A) = strata(B) + 1
[Dan masih banyak lagi Penjelasan lainnya terkait dengan Algoritma Sinkronisasi Clock. Untuk selengkapnya, silakan lihat di sini.]
Itulah Materi tentang Sinkronisasi Clock (Clock Synchronization) dalam Sistem Terdistribusi. Mohon maaf apabila ada kesalahan sedikitpun.
Terima Kasih 😄😘👌👍 :)
Wassalamu‘alaikum wr. wb.