“逻辑时钟 只保证因果蕴含时间递增,向量时钟则精确实现 Happens before 的 偏序 嵌入。它用于多主复制中的冲突检测、因果广播和分布式调试;版本向量等相邻构造会针对对象版本而非每个…”
形式陈述 ​
Lamport 逻辑时钟为每个事件
其中
以
直觉
逻辑时钟不测量物理秒数,而是把因果偏序嵌入自然数,为因果先后安排一致的编号:进程每发生事件就递增,接收消息时跳到本地值和消息值的较大者之后。若一个事件可能影响另一个事件,编号必然递增;但它刻意不追求反向,因为一个标量无法编码所有并发维度,彼此无关的事件也可能恰有不同编号。因此,时间戳大小只能提供因果关系的必要线索,其价值是在不依赖同步物理时钟的情况下生成与因果一致的排序键。
例子与边界
若
这说明
推论与应用
Lamport 时钟由 Happens-before 关系 导出,并使用 自然数 作为标量标签,为因果偏序提供保序嵌入。若应用需要判断两个事件是否真正并发,应转向 向量时钟 等更丰富的结构;若只需构造与因果相容的全局排序,Lamport 时间戳加稳定 tie-break 已足以支持因果一致的事件排序、日志重放、分布式互斥与复制协议。
参考资料
- 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。