网站源码使用方法,flash素材网站,html5购物网站,wordpress标签是什么当slave发现自己的master变为FAIL状态时#xff0c;便尝试进行Failover#xff0c;以期成为新的master。由于挂掉的master可能会有多个slave#xff0c;从而存在多个slave竞争成为master节点的过程#xff0c; 其过程如下#xff1a;
slave发现自己的master变为FAIL。将自…当slave发现自己的master变为FAIL状态时便尝试进行Failover以期成为新的master。由于挂掉的master可能会有多个slave从而存在多个slave竞争成为master节点的过程 其过程如下
slave发现自己的master变为FAIL。将自己记录的集群currentEpoch加1并广播FAILOVER_AUTH_REQUEST 信息。其他节点收到该信息只有master响应判断请求者的合法性并发送FAILOVER_AUTH_ACK对每一个epoch只发送一次ack。尝试failover的slave收集master返回的FAILOVER_AUTH_ACK。slave收到超过半数master的ack后变成新Master(这里解释了集群为什么至少需要三个主节点如果只有两个当其中一个挂了只剩一个主节点是不能选举成功的)。slave广播Pong消息通知其他集群节点。从节点并不是在主节点一进入 FAIL 状态就马上尝试发起选举而是有一定延迟一定的延迟确保我们等待FAIL状态在集群中传播slave如果立即尝试选举其它masters或许尚未意识到FAIL状态可能会拒绝投票。 延迟计算公式 DELAY 500ms random(0 ~ 500ms) SLAVE_RANK * 1000ms SLAVE_RANK表示此slave已经从master复制数据的总量的rank。Rank越小代表已复制的数据越新。这种方式下持有最新数据的slave将会首先发起选举理论上来说。