矩阵时钟解决了什么但矢量时钟不能解决?

时间:2014-01-26 03:12:35

标签: distributed-computing clock vector-clock

我理解在标量逻辑时钟方面对矢量时钟的需求无法提供足够的信息来判断密钥值存储更新中是否存在更新冲突。

但是我不确定矢量时钟仍然没有解决什么问题,然后通过更庞大的矩阵时钟来解决?

2 个答案:

答案 0 :(得分:5)

在最终的一致性环境中,系统创建的所有消息都需要保留,直到每个对等方都收到消息(==最终一致性)。但是你不想永远保留消息,所以你需要有办法告诉所有节点收到哪些消息并且可以删除,这就是你使用矩阵时钟的原因。

矩阵时钟是矢量时钟列表,因此您可以了解系统中每个节点的当前状态。基于此,您可以知道哪个对等方已收到哪些消息。当您与系统中的另一个节点交换消息时,您需要比较矩阵时钟并始终记住每个节点的最高值。之后,您可以删除之前发送的消息,因为该节点已经接收过它们。

这是TSAE(带时间戳的反熵)协议的简要描述。您可以在论文项目中阅读更多有关它的信息。理查德·安德鲁·戈尔丁(Richard Andrew Golding)从1992年开始(http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.88.7385&rep=rep1&type=pdf)从第5章开始。{/ p>

答案 1 :(得分:3)

Lamport时钟(标量逻辑时钟,在您的术语中),矢量时钟和矩阵时钟之间的区别在于它们代表不同级别的知识

对于网站$ i $中的矢量时钟$ vt_i [1 \ ldots n] $,条目$ vt_i [k] $表示网站$ S_i $对网站$ S_k $的了解。知识的形式为" $ i $ $ $ $ $ $ $ $ ldots $"。

对于网站$ S_i $中的矩阵时钟$ mt_i [1 \ ldots n,1 \ ldots n] $,条目$ mt_i [k,l] $表示网站$ S_i $对知识的了解$ S_k $关于网站$ S_l $。这里的知识形式为" $ i $知道$ k $知道$ l $ $ ldots $"。

直观地说,我们可以用更多知识做更多事情。

以下描述主要引自[1]:

  

矢量时钟和矩阵时钟广泛用于异步分布式消息传递系统。

     

使用向量时钟的一些示例区域是检查点,因果记忆,维护复制文件的一致性,全局快照,全局时间近似,终止检测,共享变量的有界多写器构造,互斥和调试(谓词检测)。

     

使用矩阵时钟的一些示例区域是设计容错协议和分布式数据库协议,包括丢弃分布式数据库中过时信息的协议,以及解决复制日志和复制字典问题的协议。

对于矩阵时钟,我们注意到了 $ min_k(mt_i [k,i])\ ge t $表示网站$ S_i $知道每个其他网站$ k $知道其进度直到当地时间$ t $。

此属性允许网站不再使用本地时间$ \ le t $发送信息或丢弃过时信息。

[1] Concurrent Knowledge and Logical Clock Abstractions Ajay D. Kshemkalyani 2000