zk(zookeeper)的选举机制
zk中有两种角色Leader 和 FllowerLeader是集群各台电脑投票选举出来的。事务【非常重要】一通操作要么同时成立要么都不成立。LeaderZookeeper 集群工作的核心。1.事务请求写操作的唯一调度和处理者保证集群事务处理的顺序性举例 比如添加了一个节点删除了节点修改了数据 都是事务操作。2.集群内部各个服务器的调度者。3.对于 create setData delete 等有写操作的请求需要统一转发给leader 处理 leader 需要决定编号、执行操作这个过程称为一个事务。类似于村长Fllower1.处理客户端非事务读操作请求转发事务请求写操作给 Leader2.参与集群 Leader 选举投票 2n-1台可以做集群投票。 1 3 5 7 9 ....3.此外针对访问量比较大的 zookeeper 集群 还可新增观察者角色。类似于村民Observer1.观察者角色观察 Zookeeper 集群的最新状态变化并将这些状态同步过来其对于非事务请求可以进行独立处理对于事务请求则会转发给 Leader服务器进行处理。2.不会参与任何形式的投票只提供非事务服务(读数据)通常用于在不影响集群事务处理能力的前提下提升集群的非事务处理能力。类似于外来人员暂住选举的关键看这三个值epoch zxid myid先比较 epoch 谁大谁是领导 --资历逻辑时钟 参与过的选举的次数 类似于老党员如何查看epoch呢zxid 如果epoch 相等就看谁的zxid大谁就是领导zxid 代表的是事务的次数 如果这个值很大就表示这个机器上的数据比较的新如果zxid 也相等就看每台电脑上的myid了如果myid谁大谁是领导。我现在的集群中有三台zk,为什么第二台是领导zk01 1zk02 2zk03 3启动第一台第一台开始选举自己投自己一票因为超过半数才有效所以zk01不是领导此时的状态是选举中。启动第二台先投自己一票然后第一台开始投票比较两者之间谁的myid大谁的大就投给谁zk02再得一票第二台两票超过了半数领导出现了zk02.启动第三台发现有领导了投了吧当fllower吧。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2498821.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!