面试题答案
一键面试节点通信方式
Redis 集群节点之间采用** gossip 协议**进行通信。
通信机制原理
- 信息交换:节点定期(通常100毫秒左右)向集群内部分其他节点发送ping消息,消息内容包含自身状态及部分其他节点状态。接收到ping消息的节点回复pong消息。这样节点能不断更新自己对整个集群状态的认知。
- 故障发现:如果一个节点在一定时间内多次没有收到某个节点的pong回复,会将其标记为疑似下线(PFAIL)。当半数以上持有槽的主节点都标记某个节点为PFAIL时,这个节点会被标记为已下线(FAIL),此时集群会进行故障转移。
- 数据更新:通过gossip协议,节点之间交换的状态信息包含节点负责的哈希槽分配等数据。新节点加入集群、节点故障转移等操作时,集群状态的变更信息会通过gossip协议在节点间传播,使各节点最终达成一致的集群状态认知。