了解八卦协议

Understanding Gossip protocol

我正在阅读 akka 集群文档,现在我在 Gossip 部分。我没看懂下面的语句:

Cluster membership is communicated using a Gossip Protocol, where the current state of the cluster is gossiped randomly through the cluster, with preference to members that have not seen the latest version.

很难想象。我有以下问题:

问题:如果最新的变化还在闲聊,节点如何知道哪些成员没有看到最新的变化。

我的意思是,如果节点收到通知,它如何决定将通知发送到哪里?显然,它不应该发回,因为发送者已经看到了最新的变化。但是其他成员呢?他们中的一些人可能已经看到了状态,并且除了查询所有这些成员之外没有任何其他方法可以弄清楚。但是,如果我们查询一个节点,它会在查询期间以 "no, I have not seen it yet" 响应,有人可能会将状态发送给它...

在下一段中,文章将讨论使用向量时钟。它说

Convergence is implemented by passing a set of nodes that have seen current state version during gossip.

请注意,我以前从未在八卦协议中见过这种情况,因为它通常会很快自行收敛。我会去寻找来源,但我记得当八卦者交换信息而不是仅仅推送信息时,大约有 1000 个节点在大约 10-15 个步骤中聚合。