← 所有文章2026.09.11 · CS 425 · 雲端運算概念

沒有 Global Clock 的時間:Causality 與 Multicast Order

從 clock synchronization 推進到 Lamport timestamp、vector clock,以及 FIFO、causal、total-order multicast。

Physical clock 會 drift、network delay 會變,沒有 process 能讀取完美 global clock。Cristian’s algorithm 與 NTP 用 message exchange 估時間,但 uncertainty 仍存在。許多 protocol 真正需要的是 event order,不是 wall-clock time。

Happened-before

Lamport 定義 (a → b):

  1. 兩 event 在同一 process,且 a 先發生;
  2. a send message,b receive;
  3. relation 具有 transitivity。

若 (a → b)、(b → a) 都不成立,兩者 concurrent。

Lamport clock 在 local event 增加,並把 timestamp 放進 message。Receive 時:

clock = max(local_clock, received_clock) + 1

它保證 (a → b ⇒ L(a) < L(b)),反向不成立;timestamp 較小不能證明 causality。

Vector clock 每個 process 保存一個 counter,透過 component-wise comparison 分辨 causality/concurrency,代價是 metadata 隨 membership 成長。

白話來說: Lamport clock 提供可排序的收據號;vector clock 還能看出某 event 是否可能知道另一 event。

Multicast order 是 contract

Guarantee 意義
FIFO 每個 sender 的 message 按 send order deliver
Causal Causally related message 按 causal order deliver
Total 所有 recipient 使用相同 delivery order

Total order 不自動保存 causality;causal order 也不強迫 concurrent message 進入單一 global order。應選能維持 application correctness 的最弱 contract。

Reliable multicast 處理 loss 下的 delivery guarantee。Virtual synchrony 把 multicast 與 membership view 結合,讓 surviving process 對 join/failure 周圍的 delivery 有一致觀察。

複習卡

  • Physical synchronization 只能估時間,不能消除 uncertainty。
  • Happened-before 定義 causal order。
  • Lamport timestamp 只單向保留 causality。
  • Vector clock 可偵測 concurrency,但 metadata 較大。
  • FIFO、causal、total order 解決不同問題。
  • Ordering 要和 reliability、membership change 一起定義。