故障转移
1、故障发现
通过ping/pong消息实现故障发现:不需要sentinel
主观下线和客观下线
主观下线:某个节点认为另一个节点不可用“偏见”
主观下线流程

客观下线:当半数以上持有槽的主节点都标记某节点主观下线
客观下线的流程

尝试客观下线

通知集群内所有节点标记故障节点为客观下线
通知故障节点的从节点触发故障转移流程
2、故障恢复
2.1资格检查
->每个从节点检查与故障节点的断线时间
->超过cluster-node-timeout*cluster-slave-validity-factor取消资格
->cluster-slave-validity-factor默认是10
2.2准备选举时间

这个流程的意思就是让偏移量(offset)最大的优先参加选举,所以延迟的时间给的最短
2.3选举投票

因为偏移量越大延迟选举的时间就越短,这样它就比其它的节点获取到了更多的投票,因为它优先进入了选举这个步骤了。
2.4替换主节点
->当前从节点取消复制变为主节点(slaveof no one)
->执行clusterDelSlot撤销故障节点负责的槽,并执行clusterAddSlot把这些槽分配给自己
->向集群广播自己的pong消息,表明已经替换了故障从节点