我想只跟踪最近的数据,并利用矢量时钟的帮助来解决问题,这样我就可以通过 LWW 规则轻松丢弃数据。(最后写入获胜)假设我们有 3 个节点:
- Node1
- Node2
- Node3
然后我们将使用向量时钟来跟踪每个事件/更改的因果关系和并发性。我们最初用
{Node1:0, Node2:0, Node3:0}.
例如 Node1 获得 5 个本地更改,这意味着我们将其时钟增加 5 个增量,这将导致
{Node1: 5, Node2:0, Node3:0}.
这通常没问题吧?
那么如果同时 Node2 更新它的本地并增加它的时钟会导致
{Node1:0, Node2:1, Node3:0}.
在某个时刻,Node1 向 Node3 发送一个事件,传递更新并搭载其矢量时钟。因此,具有 VC 的 Node3{Node1:0, Node2:0, Node3:0}
很容易合并数据和时钟,因为它还没有更改。
我正在考虑如何处理的问题是,如果 Node2 发送一个事件以更新到 Node3 并传递它自己的 VC 和更新,会发生什么。数据和时钟会发生什么。当从 Node1 写入 Node3 的第一个写入基本上会显示为稍后写入,因为它在自己的时钟上具有更大的 VC 值,我如何在这里应用 Last Write 获胜。合并前Node3的时钟:{Node1: 5, Node2: 0 , Node3: 1}
Node3收到的Node2的messagevc:{Node1:0, Node2:1, Node3:0}
如何处理并发 VC 上的解析数据?