Gossip协议

    Gossip也称“病毒感染算法”、“谣言传播算法”,Redis集群节点间使用Gossip协议交互。以下是Gossip算法的描述:

1、在总数为n+1的人群中,被感染的人数初始化为1,并向周围传播。(一个节点状态发生变化,并向邻近节点发送更新信息)

Gossip协议

2、在每个周期内总有未被感染的人转变为被感染的人,方式为每个被感染的人随机感染b个人。(对于节点状态变化的信息随机发送给b个节点,下图b值为2,Redis Cluster中默认值为3)

Gossip协议

3、经过足够的时间,所有人都会被感染。(随着时间推移,信息能够传递到所有节点)

Gossip协议

    对于Redis Cluster而言,node首先需要知道集群中至少一个seed node,此node向seed发送ping请求,接收到seed节点pong返回自身节点已知的所有nodes列表,然后与node解析返回的nodes列表并与之建立连接,同时也会向每个nodes发送ping,并从pong结果中merge出全局的nodes列表,并与之逐步建立连接。另数据传输的方式也是类似,如上述gossip协议。