在本文中,我们将讨论 Gossip 协议的概述,主要关注 Gossip 协议的工作以及在集群中与其他节点通信的作用。让我们一一讨论。
八卦协议:
在 Cassandra 中,节点通过八卦协议相互通信。 gossip 协议的主要作用是识别环中其他节点正在做什么。 Gossip 协议的主要存在是为了确保每个节点都知道自己和环中其他每个节点的状态。
Gossip 协议的工作:
在此,我们将讨论 Gossip 协议的工作,我们将看到 Gossip 协议的实际工作原理,并将主要关注两个节点之间的通信是如何发生的。 Gossip 协议必须能够知道其他节点正在做什么并找到其他节点。现在,我们将一一讨论其功能。
它很可能是一个 TCP 3 次握手协议。
- 同步 –
在同步部分,它会向集群中的接收节点发送 GossipDigestSynMessage 请求,接收节点会收到这个请求并做出相应的响应。 - 确认 –
请求同步后,一旦接收节点收到请求,它就会确认请求并发送 GossipDigestAckMessage。 - 确认2 –
最后,初始节点将获得确认,然后将 GossipDigestAck2Message 发送到接收节点以确认来自接收节点的确认响应。
Gossip 协议的工作步骤:
- 最初,为了接收端点状态信息,它会在 Cassandra 启动时完成,它会向 Gossiper 注册自己。
- 之后,周期性地,通常每秒一次,然后 Gossiper 将选择环中的随机节点来启动 Gossip 会话。
- 之后,发起节点将请求 GossipDigestSynMessage 发送到接收节点,这意味着它正在请求同步。
- 之后,当接收节点收到请求时,它将使用 GossipDigestAckMessage 消息确认请求以确认请求。
- 最后,当发起节点从接收节点收到确认时,它将再次发送带有 GossipDigestAck2Message 的确认。
参考 :
https://wiki.apache.org/cassandra/ArchitectureGossip