“副本保存已应用前缀F:F[o]=s表示该来源的1到s号写全部已经应用。这里复用向量的逐分量比较与最大合并,但只对写编号,不对每个网络事件递增。F=(2,0,1)表示来源A前两项和来源C第一项…”
形式陈述
在含
定义
两个向量不可比当且仅当相应事件并发。
直觉
向量时钟为每个进程保留一个因果进度分量,其中第
例子与边界
若
三进程初始均为
上述精确等价依赖固定进程身份、可靠事件规则和标准 happened-before 模型;压缩时钟或共享内存变体需要重新陈述保证。向量维度固定为参与者数量,动态成员或海量客户端会造成元数据膨胀;版本向量、点版本向量等变体会在特定复制模型中压缩信息。在本页对每个事件都递增的规则下,不同实际事件不会获得相等向量。同一进程的事件由自身坐标严格区分;若另一进程的事件已取得前者的最新计数,前者就已因果先于它,接收方的自身递增又使两向量严格不同。初始化的全零值不是事件时间戳。点式版本向量等针对对象更新的摘要采用不同的编号规则,不能把它们的相等情形套到这个逐事件结论上。
推论与应用
逻辑时钟 只保证因果蕴含时间递增,向量时钟则精确实现 Happens-before 的 偏序 嵌入。它用于多主复制中的冲突检测、因果广播和分布式调试;版本向量等相邻构造会针对对象版本而非每个事件维护因果摘要。其主要代价是时间戳通常包含每个进程一个分量,即
混合逻辑时钟用物理来源分量和同值计数器组成二元标签,也只保留因果蕴含标签递增的单向保证。其并发事件d与f可以满足H(d)<H(f),因此二元字典序不能代替本页的逐分量偏序比较;固定数量字段与精确并发判定是这里不同的信息合同。
参考资料
- 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。