“这与逻辑时钟的标量加身份形式相似,但标签生成的事件不同:此处的计数来自一次 quorum 查询,而非每发生本地事件就加一。标签较小的并发写完全可能较晚返回。证明所需的只是实时先后必然得到相应…”
形式陈述
Lamport 逻辑时钟为每个事件
其中
以
直觉
逻辑时钟不测量物理秒数,而是把因果先后转成编号的严格递增。本地递增规则保证同一进程的事件顺序;接收消息时越过发送方的编号,则把这项保证延伸到消息两端,再由传递性覆盖整条因果链。反过来,彼此无关的事件也可能取得不同编号,单看编号大小不能断定因果。因此,逻辑时钟的用途是在没有同步物理时钟的条件下提供与因果相容的排序键。
例子与边界
若
这说明
混合逻辑时钟把标签分成已见物理读数最大值与同值计数器,接收时按双方分量选择四种更新。它延续本页的单向因果保证,并能在另外给定的物理误差模型下界定距离;并发事件仍可被排成先后,物理回拨也不能靠清空逻辑状态处理。
推论与应用
Lamport 时钟以 自然数 为标签,使 Happens-before 关系 中的每条因果边都指向更大的数。这个映射不必单射,也不反映全部偏序关系,因而不应把它称作偏序的嵌入。若应用需要判断两个事件是否真正并发,应转向 向量时钟 等更丰富的结构;若只需构造与因果相容的全局排序,Lamport 时间戳加稳定 tie-break 已足以支持因果一致的事件排序、日志重放、分布式互斥与复制协议。
ABD 的多写者寄存器也使用
参考资料
- Nancy A. Lynch, Distributed Algorithms, Morgan Kaufmann, 1996,Ch. 6。
- Leslie Lamport, “Time, Clocks, and the Ordering of Events in a Distributed System,” Communications of the ACM 21(7), 1978,Full paper, §§1–3。