1,节点
一个redis集群通常由多个节点(node)组成,组建一个集群,需要将各个独立的节点连接起来,构成一个多节点的集群
通过CLUSTER MEET <ip> <port> 命令,让当前节点与ip、port指定的节点进行握手,将指定节点加入当前节点所在的集群中
集群数据结构
每个节点使用一个clusteNode结构记录状态,会为集群中的其他节点都创建一个相应的clusterNode,来记录其他节点状态
CLUSTER MEET 实现
通过CLUSTER MEET 将B节点添加到A节点的集群中
节点A为B创建一个clusterNode,并添加到自己的clusterState.nodes字典中
A通过CLUSTER MEET 命令给定的IP+PORT向B发送一条MEET消息
B收到A的MEET消息,B为A创建一个clusterNode,并添加到自己的clusterState.nodes中,返回PONG消息给A
A接收到B的PONG消息,确认了A给B发的MEET被B收到了,然后再给B发一个PING消息
B收到A发的PING消息,确认了B给A发的PONG消息被A收到了,则两边握手都正常,完成握手可以通信
之后,A会将B的信息通过Gossip协议传播给其他节点,让其他节点与B握手,完成集群节点添加