redis cluster模式

        我们接着上一次cluster模式的分析,分析一下cluster模式下,是如何选举主节点,以及进行主从节点切换的。

    上面的代码是cluster定时器中,进行节点转移的主要逻辑;从上面的逻辑中可以看出,节点转移主要有四个步骤:

    1、判断当前节点是否正处于节点转移状态,如果处于该状态,节点转移是否超时;

    2、在当前节点为从节点的场景下,检测当前节点时候满足节点转移条件,当满足条件的情况下,进行节点转移;

    3、判断当前集群中是都存在孤立节点,并且当前节点的主节点的正常的从节点的数量超过两个,如果超过两个,则将一个从节点转移到孤立节点下面;

    接下来,我们从以上四点进行集群节点转移流程的分析:

    1、判断当前是否正在进行节点切换,或者节点切换是否处于超时情况;如果当前节点正处于节点转移状态,并且节点转移的截止时间早于当前时间,也就是节点转移超时,则取消节点转移,重置状态。

2、判断是否满足节点转移条件;如果当前正处于节点转移状态,或者节点已经触发了节点转移状态,也就是可以进行节点转移,则直接返回,不进行后续判断,因为,当前节点需不需要进行节点转移,已经很明确了;如果上面两个条件都不满足,则判断当前节点拷贝到的主节点数据和主节点中产生的数据是否相等,如果相等,则触发节点转移,否则直接退出,

接下来是进行节点转移的主要逻辑,该逻辑主要在clusterHandleSlaveFailover这个方法中;这个方法中逻辑主要可以分为:首先和clusterHandleManualFailover方法一样,判断是否满足节点转移,然后在首次确定本节点可以进行节点转移的时候,进行广播,让大家进行投票,选举出主节点;最后在大家进行选举完成之后,根据结果,判断是否进行故障转移。函数行数较多,不贴代码,大家可以去分析源码逻辑;

你可能感兴趣的:(redis cluster模式)