前面分别讨论了ZooKeeper客户端节点、Follower节点在发生故障的情况的,ZooKeeper是如何处理的。最后,我就想讨论一下Leader节点发生故障的情况下,ZooKeeper的处理机制。
1.若Leader节点在第2步之前发生了故障,则Follower的第2步不会执行成功,但该请求包被添加到了Follower的pendingSyncs集合中,同时Follower再次之前就已经发现Leader已经实失效,退出Follower角色,同时关闭与之相连的客户端,并不在。之后,Follower就会参入Leader的选举中,而在选举的过程中,该节点不会再接受任何客户端的连接。
2.若Leader节点在第2步之后,第3步之前发生了故障,处理同1。
3.若Leader节点在第3步之后,第4步之前发生了故障,处理同1。
4.若Leader节点在第4步之后,第5步之前发生了故障,处理同1。
5.若Leader节点在第5步之后,第6步之前发生了故障,则Folloer的处理同1的同时,也会执行第6步操作。