选举算法:基于 Fast Paxos :FastLeaderElection 算法
ZooKeeper 的核心是原子广播,这个机制保证了各个 Server 之间的同步。
实现这个机制的协 议叫做 ZAB 协议(Zookeeper Atomic BrodCast)。
1、启动1,1去联系leader,跟leader做状态数据, 因为是第一个启动的。 所以没有寻找到leader那么就发起投票来进行选举leader, 首先选举自己来成为leader,但是发起投票的请求给其他的服务器,这些服务器全部都没有响应。所以最终不能选举成功,当前这个节点1就进入looking状态
2、启动2,2要去联系leader,跟1一样也没有寻找到leader,2节点也要发起投票来选举leader,最终投票结束之后,2节点只能收集到2个赞成票,还不至于能决定当前的2节点成为新的leader,原因是赞成票并没有超过集群的总节点(只有能参与投票的总节点数)的半数, 2节点也进入looking状态
3、启动服务器3,3也没有联系到leader,所以也会发起投票,最终投票结果是3节点获取到3票。所以3票超过了总节点的半数,所以服务器节点3就能成为leader。所以,所有上线了的其他服务器就自动成为规定好的角色:follower
4、启动服务器4,去联系leader,能寻找到该zookeeepr集群有leader,当前服务器4就自动成为follower
5、启动服务器5 和 4结果的过程一样
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。