向量时钟是一种算法,可生成事件的部分顺序并检测分布式系统中的因果关系违规。这些时钟在标量时间上扩展,以方便地随意查看分布式系统,它们检测是否有事件促成分布式系统中的另一个事件。它实质上捕获了所有临时关系。该算法帮助我们为系统中每个进程的每个本地时钟的矢量(整数列表)标记一个进程,该矢量带有一个整数。因此,对于N个给定的进程,将存在大小为N的向量/数组。
矢量时钟算法如何工作:
- 最初,所有时钟都设置为零。
- 每当进程中发生内部事件时,向量中进程逻辑时钟的值就会增加1
- 此外,每次进程发送消息时,向量中进程逻辑时钟的值都会增加1。
每次进程接收到一条消息时,矢量中进程逻辑时钟的值都会增加1,此外,每个元素都会通过获取其自己的矢量时钟中值的最大值和向量中的值来更新。收到的消息(针对每个元素)。
示例1:
考虑每个进程的向量大小为N的过程(P):上面提到的规则集将由向量时钟执行:
上面的示例描述了矢量时钟机制,其中矢量时钟在内部事件执行之后被更新,箭头指示如何在进程(P1,P2,P3)之间发送矢量值。
示例2:
综上所述,矢量时钟算法用于分布式系统中,以提供随意一致的事件排序,但是对于每个发送的消息,整个矢量都将发送到每个进程,以使矢量时钟保持同步。