选举机制
选举机制是在zookeeper集群选出leader
选举过程分为两个阶段:
第一个阶段是数据恢复阶段,当集群中的节点被启动的时候,会去加载当前节点中的数据(最大事务id,当前节点编号,逻辑时钟值),之后从这些数据中找出最大事务id
第二个阶段是选举阶段,最开始所有节点都会推荐自己当leader,之后会把自己的节点信息发送给每一个节点进行比较,先比较最大事务id,谁大谁赢,事务id相同再去比较myid,也是谁大谁赢,若比较赢了的节点会进行下一轮选举,输了自然的成为follower
选举过程中会出现的问题 :脑裂
由于网络波动导致集群中出现了多主多从的情况,也就是出现了多个leader。此时zookeeper给出的解决是:当集群中存活的节点个数超过一半,才会对外提供服务
zookeeper过半性
选举过半:只有一个节点胜过一半的节点才能成为leader
过半服务:zookeeper集群中超过一半的节点存活才能对外提供服务
过半操作:zookeeper集群中超过一半的节点同意才会提交请求