我无法理解 Akka 中使用的集群算法。
在 akka Gossip Protocol的描述中,它说:
gossip 状态或 gossip 状态的接收者可以使用 gossip 版本(向量时钟)来确定是否:
- 它有一个更新版本的 gossip 状态,在这种情况下,它会将它发送回 gossiper
- 它有一个过时的状态版本,在这种情况下,接收者通过发回它的八卦状态版本来向八卦者请求当前状态
- 它有相互冲突的八卦版本,在这种情况下,不同的版本被合并并发回
第二步似乎浪费了通信,因为 gossiper 发送了两次它的状态。一次是当它发现它没有最新版本时,再一次是当接收者通过发回自己的过时版本来想要最新版本时。
我认为我对此有误解,因为我对矢量时钟和 CFRD 的理解有限,并且 Akka 文档中给出的描述很短,而维基百科的文章是高级的。就我而言,矢量时钟是 CRDT 的一种实现,但这可能是不正确的。
但最后我不明白为什么八卦节点需要两次传达其状态。请说清楚。
但我想我可能误解了vector Akka Cluster