Back to IF3130 Sistem Paralel dan Terdistribusi

Topic: Logical Clock, Happened-Before, & Vector Clock

Questions/Cues

  • Kenapa butuh Logical Clock?

  • Happened-Before Relation ()

  • Transitivity

  • Concurrent Events

  • Lamport Clock Rules

  • Masalah Lamport Clock

  • Totally Ordered Multicast

  • Vector Clock Rules

  • Perbandingan Vector vs Scalar

Reference Points

  • Slides: Page 29-41

  • Fokus: Kausalitas & Pengurutan

1. Konsep Happened-Before ()

Karena sinkronisasi fisik tidak pernah sempurna, Leslie Lamport (1978) mengusulkan: kita tidak perlu waktu absolut, kita hanya perlu tahu urutan kejadian (ordering) yang konsisten.

Relasi Happened-Before ():

  1. Jika dan di proses yang sama, dan terjadi sebelum , maka .

  2. Jika adalah pengiriman pesan (send) dan adalah penerimaan pesan itu (receive), maka .

  3. Transitif: Jika dan , maka .

Concurrent: Jika dan , maka dua event tersebut dikatakan konkuren (terjadi bersamaan secara logis).

2. Lamport Logical Clock

Algoritma sederhana untuk menangkap relasi happened-before menggunakan counter integer tunggal ().

Algoritma/Aturan:

  1. Setiap proses punya counter lokal , inisialisasi 0.

  2. Sebelum event internal, .

  3. Saat kirim pesan , sertakan timestamp .

  4. Saat terima pesan di :

    (Ambil yang terbesar antara jam lokal dan jam pesan, lalu tambah 1).

Keterbatasan Fatal Lamport Clock:

  • Jika , maka pasti . (Benar).

  • TAPI, jika , belum tentu . Bisa saja mereka konkuren.

  • Kesimpulan: Lamport Clock tidak bisa menangkap kausalitas secara sempurna.

3. Aplikasi: Totally Ordered Multicast

Lamport Clock digunakan untuk menjamin semua replika database mengeksekusi update dalam urutan yang persis sama.

  • Mekanisme:

    1. Kirim pesan timestamped ke semua proses (termasuk diri sendiri).

    2. Masukkan pesan masuk ke antrean lokal (diurutkan berdasarkan timestamp).

    3. Kirim ACK ke semua orang.

    4. Pesan diproses aplikasi HANYA JIKA: pesan ada di kepala antrean (head) DAN kita sudah menerima ACK/pesan dengan timestamp lebih besar dari semua proses lain.

  • Asumsi: Kanal komunikasi reliable dan FIFO.

4. Vector Clock (Solusi Kausalitas)

Untuk mengatasi kelemahan Lamport Clock, kita menggunakan Array (Vektor) alih-alih integer tunggal.

Struktur:

Setiap proses memiliki array (n = jumlah proses total).

  • artinya: jumlah event di proses yang sudah “diketahui” oleh .

Algoritma:

  1. Inisialisasi vektor dengan .

  2. Event internal di : Increment elemen miliknya sendiri ().

  3. Kirim pesan: Kirim seluruh vektor bersama pesan.

  4. Terima pesan () di :

    • Update setiap elemen : .

    • Increment elemen sendiri: .

Keunggulan:

Dengan Vector Clock, kita bisa membandingkan dua event dan :

  • jika dan hanya jika .

  • Ini menutup celah yang ada pada Lamport Clock.

Summary

Logical Clock menggantikan waktu absolut dengan konsep keterurutan event. Lamport Clock menggunakan counter sederhana untuk memastikan properti , yang berguna untuk Totally Ordered Multicast. Namun, Lamport Clock tidak bisa mendeteksi kejadian konkuren. Vector Clock mengatasi ini dengan menyimpan array state seluruh sistem, memungkinkan deteksi kausalitas yang sempurna (), namun dengan biaya overhead ukuran pesan yang lebih besar (sebanding jumlah proses).