version vector 和 vector timestamp(clock)

来源:互联网 发布:山东工商学院网络课 编辑:程序博客网 时间:2024/06/05 05:32

version vector 和 vector timestamp是 causality 关系的在分布式系统两个领域上的应用,前者是replica之间的causality关系,后者是event 的的causality关系

对于前者一般用compatible 和 conflict,后者一般用happen-before 和 concurrent

两个replica的version是compatible的是说一个是另一个的ancestor,否则就是conflict的;对于compatible的,用较新的更新,对于conflict需要merge(reconcile)


vector的每个分量叫concurrent source,对应于一个process,或一个replica。

一些概念:

modification id: 全局unique的一个id,一般就是(site, local sequence)

modification history: 就是一个version包含的所有modification id, 两个版本如果包含有不同的 modification id就incompatible的(compatible是一个是另一个的子集)

version vector是优化版 modification history,modification history太大了


version vector有个缺点,同一个replica上的modification和 lww(last write win)类似,有更新丢失问题,也就是基于同一状态不同client进行不同的修改问题。常见做法是把所有的sibling作为一个组都归到一个version vector( serverId, seqeunce) 对应的版本下。将来在merge。

https://haslab.wordpress.com/2011/07/08/version-vectors-are-not-vector-clocks/







0 0