码迷,mamicode.com
首页 > 其他好文 > 详细

如何运用zookepper进行kafka Leader Election?

时间:2018-09-30 14:44:58      阅读:271      评论:0      收藏:0      [点我收藏+]

标签:getchild   通知   临时   工作   客户   seq   成功   自己   注册   

主要有两种方法:

(一)抢注Leader节点-----非公平模式

(二)先到先得,后者监听前者-----公平模式

(一)抢注Leader节点-----非公平模式

1.创建Leader父节点,如/chroot,并将其设置为persist持久节点;

2.各客户端通过在/chroot下创建Leader节点,例如/chroot/Leader,来竞争Leader,该节点被设置为ephemeral临时节点;

3.若某客户端创建Leader节点成功,则该客户端成功竞选为Leader;

4.若某客户端创建Leader失败,则竞选Leader失败,在/chroot/Leader节点上注册exist的watch监听,一旦该节点被删除则获得通知;

5.Leader客户端可通过删除Leader节点来放弃Leader;

6.如果Leader宕机,由于Leader节点被设置为ephemeral临时节点,Leader节点会被自行删除,而其他节点由于在Leader节点上注册了watch,故可得到通知,参加下一轮的Leader竞选,从而保证了客户端以Leader角色工作;

 

(二)先到先得,后者监听前者-----公平模式

1.创建Leader父节点,如/chroot,并将其设置为persist持久节点;

2. 各客户端通过在/chroot下创建Leader节点,如/chroot/Leader,来竞争Leader,该节点被设置为ephemeral_sequential临时顺序节点;

3.客户端通过getChildren方法获得/chroot/下的所有子节点,如果其注册的节点ID在所有的子节点ID中是最小的,则当前客户端竞选Leader成功;

4. 否则,在前面的一个节点上注册watch 监听,一旦前面的节点被删除,则它得到通知,返回step3(但是,不能认为自己成为Leader节点,因为可能前面的节点只是宕机了)

5. Leader节点可以通过自行删除自己创建的节点放弃Leader;

 

如何运用zookepper进行kafka Leader Election?

标签:getchild   通知   临时   工作   客户   seq   成功   自己   注册   

原文地址:https://www.cnblogs.com/wangleBlogs/p/9728985.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!