ZooKeeper应用案例之选举机制原理分析

本文从原理和实现角度介绍如何使用ZooKeeper解决常见的分布式问题,包括leader选举、分布式队列、负载均衡等。基于ZooKeeper实现leader选举的基本思想是,让各个参与竞选的实例同时在ZooKeeper上创建指定的znode,比如/current/leader,谁创建成功则谁竞选成功,并将自己的信息(host、port)写入该znode数据域,之后其他竞选者向该znode注册watcher,以便当前leader出现故障时,第一时间再次参与竞选,具体如图所示:

《ZooKeeper应用案例之选举机制原理分析》 基于ZooKeeper的leader选举

基于ZooKeeper的leader选举流程如下:

1)各实例启动后,尝试在ZooKeeper上创建ephemeral类型znode节点/current/leader,假设实例B创建成功,则将自己的信息写入该znode,并将自己的角色标注为leader,开始执行leader相关的初始化工作。

2)除B之外的实例得知创建znode失败,则向/current/leader注册watcher,并将自己角色标注为follower,开始执行follower相关的初始化工作。

3)系统正常运行,知道实例B因故障退出,此时znode节点/current/leader被ZooKeeper删除,其他follower收到节点被删除的事情,重新转入步骤1,开始新一轮leader选举。

在Haddop生态系统中,HBase、YARN和HDFS等系统,采用了类似的机制结局leader选举问题。

    原文作者:皮皮裴
    原文地址: https://www.jianshu.com/p/4354bc7a143d
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞