逻辑时钟
概述
逻辑时钟(Logical Clock)是 Leslie Lamport 发明的机制,通过为每个事件分配时间戳来捕捉分布式系统中的因果顺序,不依赖物理时钟。
关键内容
时钟条件
如果 a --> b,则 C(a) < C(b)。逻辑时钟必须与因果关系一致。
实现规则
IR1(进程内规则):进程在任意两个连续事件之间递增本地计数器 C_i。
IR2(消息规则): - 发送消息时,附带当前本地时钟值 T_m = C_i - 接收消息时,更新本地时钟 C_j := max(C_j, T_m) + 1
关键局限
时钟条件的逆命题不成立:C(a) < C(b) 不意味着 a --> b。两个并发事件也可能恰好具有 C(a) < C(b) 的时间戳。
这意味着 Lamport 时钟能捕捉因果关系的"必要条件",但不是"充分条件"。这一局限后来由向量时钟(1988年)解决。
全序扩展
用进程 ID 打破并发事件的平局:a => b 当且仅当 C(a) < C(b),或 C(a) = C(b) 且 P(a) < P(b)。
应用
- 分布式互斥
- 事件排序
- 分布式调试
- 因果一致性
来源
- raw/books/计算机科学/13-lamport-time-clocks.md
相关
- Lamport 逻辑时钟论文 — 首次提出
- Leslie Lamport — 发明者
- happened-before 关系 — 实现的目标
- 分布式系统 — 应用领域
- 向量时钟 — 解决了 Lamport 时钟的局限
- 分布式互斥算法 — 应用之一