https://lamport.azurewebsites.net/pubs/time-clocks.pdf
http://yang.observer/2020/07/26/time-lamport-logical-time/
Lamport Logical Clock 解決的問題是找到一種方法,給分佈式系統中所有時間定一個序,這個序能夠正確地排列出具有因果關係的事件(注意,是不能保證併發事件的真實順序的),使得分佈式系統在邏輯上不會發生因果倒置的錯誤。
實現方法:
如此一來有先後順序關係的 events 時間都一定不會錯亂了(本地中每發生一個 event 時間就加一,發送/接收的消息,「接收的 event 的邏輯時間」一定大於「發送的 event 的邏輯時間」)
所以對於兩個事件 a 和 b,如果 $a\rarr b$,則 $C(a)\lt C(b)$。但反過來若 $C(a)\lt C(b)$ 並不代表 $a\rightarrow b$。
如此一來我們可以得到一個偏序(Partial order)的事件集。偏序的定義即集合中的元素是部分有序的。例如上圖中我們並不知道事件 $a$ 與 $f$ 的先後順序。
要能達到全序的效果也很簡單,只要符合以下其中一個條件,我們就稱 $a\rArr b$。
全序的用途:http://yang.observer/2020/07/26/time-lamport-logical-time/#真分布式锁