为什么 akka 中的八卦协议需要传递两次状态才能注册状态更改?



我很难理解Akka中使用的群集算法。

在Akka八卦协议中的描述中说:

八卦状态或八卦状态的收件人可以使用 八卦版本(向量时钟)确定是否:

  1. 它具有八卦状态的较新版本,在这种情况下 回到闲话
  2. 它具有状态过时的版本,在这种情况下,收件人请求八卦者当前状态 通过寄回其八卦状态的版本
  3. 它具有冲突的八卦版本,在这种情况下,不同版本合并,并且 寄回

第二步似乎浪费了沟通,因为闲话者两次发送其状态。有一次,当发现它没有最新版本时,再次,当收件人通过发送自己的过时版本而想要最新版本时。

我认为我误会了这一点,因为我对向量时钟和CFRD的理解是有限的,并且Akka文档中给出的描述很简短,Wikipedia文章是高级的。就我而言,这是向量时钟是CRDT的实现,但这可能是不正确的。

但最后我不明白为什么八卦节点需要两次传达其状态。请澄清。

,但我认为我可能会误解如何向量Akka群集

就像文档中所述的,akka instrument:

使用推拉八卦的变体用于减少八卦的量 围绕集群发送的信息。在推pull八卦中,摘要是 发送表示当前版本,而不是实际值;这 然后,八卦的收件人可以将其具有的任何值发送回去 较新的版本,还请求其过时的值 版本。

因此,在案例2 中进行简化,当八卦消息的收件人看到它具有群集状态的过时版本时,它要求回闲话。因此,从闲聊到收件人的第一条消息 带有版本,第二个从闲话者到收件人的带有节点的实际状态。

希望这会有所帮助。

最新更新