ZooKeeper选举机制
Zookeeper:
ZooKeeper 是 Apache 软件基金会的一个软件项目,它为大型分布式计算提供开源的分布式配置服 务、同步服务和命名注册。
ZooKeeper 的架构通过冗余服务实现高可用性。
Zookeeper 的设计目标是将那些复杂且容易出错的分布式一致性服务封装起来,构成一个高效可靠的原 语集,并以一系列简单易用的接口提供给用户使用。
一个典型的分布式数据一致性的解决方案,分布式应用程序可以基于它实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master 选举、分布式锁和分布式队列等功能。
一、第一次启动选举
这里以5台机器组成的集群为例。(半数以上的票数则为leader
(1)服务器1启动,发起一次选举,服务器1投自己一票。此时服务器1票数为一票,不够半数以上(3),选举无法完成,服务器1的状态保持LOOKING(竞选状态)。
(2)服务器2启动,再发起一次选举,服务器1和2分别投自己一票并交换选票信息;此时服务器1发现服务器2的myid比自己目前投票选举的(服务器1-自己)大,更改选票为推举服务器2,此时服务器1票数为0,服务器2票数为2,没有达到半数以上的结果,选举无法完成