回答
Redis Cluster
中节点间采用 Gossip
(流言)协议进行通信。Gossip
协议不需要集群中的所有节点都完全了解集群中每一个节点的详细信息,它的核心在于通过节点间的随机交换信息来实现整个集群中各节点的信息的最终一致性。
在 Redis Cluster
中,所有节点都持有一份数据,如果某个节点出现了数据变更,则该节点会把数据不断地发送给其他节点,其他节点接收到信息后进行数据变更,一段时间后,整个 Redis Cluster
集群中的所有节点都会完成数据变更,从而保证整个集群所有节点的数据都是完整的。
扩展
每个节点都有一个专门用于节点间通信的端口号,就是自己提供服务的端口号+10000。每个节点会定期向另外几个节点发送PING
消息,同时其他节点接收到PING
之后会返回PONG
消息。
消息分类
Gossip
协议的主要职责就是信息交换,在 Redis Cluster 中,Gossip消息可分为:PING
消息、PONG
消息、MEET
消息、FAIL
消息。