1 个回答
假设一下,某个集群中的网络通信不好,导致心跳检测超时。follower认为leader节点挂掉了,但是leader并未挂掉,这就导致了假死现象。
leader节点假死之后,Zookeeper通知所有follower节点选举出新的leader。此时集群中存在两个leader节点。
此时Zookeeper需要将新的leader节点的信息通知给所有的follower节点。在这个过程中,由于网络环境的原因,消息的到达存在快慢之分。
如果部分client获得了新leader节点的信息,而部分没有获得,此时client向Zookeeper发起读写请求,Zookeeper内部的不一致就会导致部分client连接到了新的leader节点上,另一部分连接到了旧的leader节点上。
集群中出现了两个leader,client不知道接受哪个leader的信息。
leader节点假死之后,Zookeeper通知所有follower节点选举出新的leader。此时集群中存在两个leader节点。
此时Zookeeper需要将新的leader节点的信息通知给所有的follower节点。在这个过程中,由于网络环境的原因,消息的到达存在快慢之分。
如果部分client获得了新leader节点的信息,而部分没有获得,此时client向Zookeeper发起读写请求,Zookeeper内部的不一致就会导致部分client连接到了新的leader节点上,另一部分连接到了旧的leader节点上。
集群中出现了两个leader,client不知道接受哪个leader的信息。
发布于:3个月前 (01-24) IP属地:四川省
我来回答
您需要 登录 后回答此问题!