java - 了解八卦协议(protocol)

标签 java scala akka distributed-system gossip

我正在阅读 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.

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

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

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

最佳答案

在下一段中,文章讨论了使用 vector 时钟。它说

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

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

关于java - 了解八卦协议(protocol),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39427940/

相关文章:

Java 语法错误?

list - Scala:从第一个非零元素切分列表

scala - 如何获取余积的所有可能成员

Scala:使用 Akka future 实现 Redis 客户端

scala - 带有可变参数的案例类的隐式 jsonFormat

java - akka java 编程覆盖配置

java - 带有阿拉伯字符的drawString-java

java - ManyToMany 和 JPA EclipseLink 的问题

java - Java 中字符串的输入验证

斯卡拉 : exclude some Dates