向量时钟和版本向量的用例是什么?

时间:2019-10-24 15:20:40

标签: data-structures synchronization replication distributed-computing distributed-system

我一直很难找到一个示例,说明哪些用例适用于Vector ClocksVersion Vectors,以及它们之间的不同。我了解它们在很大程度上以相同的方式工作,其中向量时钟使用receivesend函数,而版本向量使用sync函数,但是我不理解两者之间的区别两个选择。只是表达同一事物的两种不同方式,还是它们之间用例的真正差异?

我只能找到一个与某些问题相关的问题:"When do I use a consensus algorithm like Paxos vs using a something like a Vector Clock?"

即使链接的答案陈述了以下内容,并引用了一篇简短的文章,但对我而言,区别仍然不清楚。

  

您可能希望将版本向量用于无领导者的分布式   存储。您可以将矢量时钟用于同一时钟(尽管这是一个   不合适文章还建议您使用它来保持一致   快照,用于在通用分布式环境中实施因果排序   系统等)。

1 个答案:

答案 0 :(得分:0)

这里有同样的问题,对我来说还不是很清楚,但是我发现版本向量更适合确定特定复制节点网络中事件的因果关系分布式系统,您唯一感兴趣的是先发生什么,然后发生什么。

相比之下,矢量时钟在分布式系统中以不确定的事件序列确定事件顺序。

从这个意义上说,使用整数作为版本向量太过复杂,因为如果我们只想确定哪个节点(A或B)被更新,考虑到初始情况下A [2,2]和B [2, 2](因此同步)。

从版本矢量角度看,A [3,2]> B [2,2]表示相同与A [10,2]> B [2,2]。这可以解释为什么我们可以对版本向量使用一组固定的值,而唯一重要的操作就是同步版本

从矢量时钟的角度来看,A [10,2]和A [3,2]之间存在 差异。这意味着同时发生了+7个事件。这可以解释为什么我们需要跟踪所有事件,并且有发送接收操作来同步网络中的所有矢量时钟。

无论如何,我还是像您一样缺少一些清晰的文档,该文档清楚地说明了一个与另一个相比的区别和用法。