第十二章目录
第十二章 Zookeeper
ZooKeeper 是一个分布式应用程序协调服务,是一个为分布式应用提供一致性服务的软件
12.1 Zookeeper 选举机制
12.1.1 容错机制(为什么单数节点)
剩下的节点数必须大于宕掉的个数,也就是存货节点需要大于总数一半,zookeeper才可以继续使用。假设总结点为5,则需要3台存活,即使增加为6也是3台,也就是说只有节点数为增加到奇数时最小存活节点才会增加,所以设置节点为奇数节约资源。
12.1.2 选举机制
暂停对外服务,
- 各节点会先选自己作为leader,然后将选票携带事务id:zxid发送出去
- 各节点拿到选票后,先排除非本轮的票,然后比对自己的选票跟各个节点发来的选票,先比较zxid(越大说明数据越新),相同时比较myid,大的一方获胜,将票投给获胜方,然后各自发回节点。(假如自己是1节点,3节点发来的票,比对后要么返回1要么返回3)
- 投票后,各个节点会统计投票信息,判断如果有过半选票则认为选出了leader,更新自身状态为follow或leader,如果没有则一直重复2直到满足条件为止。
- 选举出leader后,新节点或原leader节点宕机恢复后,会直接变为follow状态,不再进行选举。