Skip to content

向量时钟

Vector clock

用每进程计数向量在标准消息传递模型中精确刻画事件因果偏序。

条目类型
模型

形式陈述

在含 n 个进程的标准消息传递模型中,每个进程 i 维护初始为全零的向量 ViNn。本地或发送事件前递增自身分量;消息携带向量;进程 i 收到向量 W 时先取逐分量最大值,再递增自身分量:

Vimax(Vi,W),Vi[i]Vi[i]+1.

定义 uv 为逐分量不大于,u<vuvuv。对事件时间戳 V(a),V(b),在该模型及规则下

abV(a)<V(b).

两个向量不可比当且仅当相应事件并发。

直觉

向量时钟为每个进程保留一个因果进度分量,其中第 j 个分量记录当前事件已知的进程 j 历史进度。本地事件推进自己的坐标,消息接收则逐坐标取最大值,于是一个事件的向量概括了它所“知道”的各进程历史前缀。逐坐标小于等于恰好对应一份因果知识被另一份完整包含,两个向量互不可比则揭示并发。相比只能保序、不能反推因果的标量逻辑时钟,它用 O(n) 元数据换回了因果关系的反向判定能力。

向量时钟的接收合并
例子与边界

V(a)=(2,0)V(b)=(0,3),二者不可比,表示并发;若 V(c)=(2,4),则前两者都先于 c

三进程初始均为 (0,0,0)P1 本地事件后为 (1,0,0) 并发送;P2 已有 (0,1,0),接收后取最大并递增自身,得到 (1,2,0)。独立的 P3 事件为 (0,0,1);它与 (1,2,0) 两边都不逐坐标支配,所以二者并发。

上述精确等价依赖固定进程身份、可靠事件规则和标准 happened-before 模型;压缩时钟或共享内存变体需要重新陈述保证。向量维度固定为参与者数量,动态成员或海量客户端会造成元数据膨胀;版本向量、点版本向量等变体会在特定复制模型中压缩信息。相等向量通常只表示相同的因果历史摘要,不意味着事件内容或物理发生时刻相同。

推论与应用

逻辑时钟 只保证因果蕴含时间递增,向量时钟则精确实现 Happens-before偏序 嵌入。它用于多主复制中的冲突检测、因果广播和分布式调试;版本向量等相邻构造会针对对象版本而非每个事件维护因果摘要。其主要代价是时间戳通常包含每个进程一个分量,即 Θ(n) 空间;稀疏表示和矩阵时钟可在不同工作负载下作进一步权衡。

参考资料
  • Friedemann Mattern, “Virtual Time and Global States of Distributed Systems,” in Proceedings of the Workshop on Parallel and Distributed Algorithms, 1989, pp. 215–226,Full paper。
  • Nancy A. Lynch, Distributed Algorithms, Morgan Kaufmann, 1996,Ch. 6。
关系图谱2 个相邻概念 · 2 类关系

拖动节点调整位置。

显示关系

显示:依赖

  1. 前置三跳
  2. 前置二跳
  3. 前置一跳
  4. 当前条目
  5. 后续一跳
  6. 后续二跳
  7. 后续三跳
文字版关系按与当前条目的最短距离分组
类型化关系

并列辨析