`

Zookeeper 3.3.3 LeaderElection算法总结

阅读更多

LeaderElection. lookForLeader():

1.        生成一个随机数xid

2.        对每一个PARTICIPANT依次执行如下步骤:

a)        发送xid,等待消息该PARTICIPANT返回。

b)        响应返回responseBuffer,读取第一个字段xid1,对比返回的xid1是否与xid相同,不同则认为是错误的消息,continue;

c)        读取返回的PARTICIPANT的服务器id,放入heardFrom列表。

d)        读取返回的PARTICIPANT的服务器推荐的投票的服务器id和zxid,放入votes中。

3.        countVotes统计以上返回的投票情况

a)        去掉votes中没有在heardFrom中的服务器列表,(就是说所有被推举的服务器本身也必须要有响应返回才行)。

b)        将votes中所有相同的服务器id的zxid设置成他们中最大的zxid.

c)        统计每个服务器id被推举的次数count,并记录count最大的服务器id和count为winner.

d)        统计zxid最大的服务器id出现的次数count,记录该服务器的id和count为vote.

4.        设置vote为当前投票结果。

5.        如果winner的winningcount大于1/2 PARTICIPANT 数,那么就要设置当前结果为winner.(注:有可能最后选择的不是zxid最大的服务器…??),更改本地服务器状态,为leading或者following.

6.        如果以上方式没有选择出leader,则继续从第2步循环执行。

 

PS:

  LeaderElection与FastLeaderElection的算法区别还是比较大的,LeaderElection相对比较简单,它需要等待所有服务器返回后再统计投票结果,并且最后选择的leader有可能不是zxid最大的服务器。FastLeaderElection是每次收到回复都会计算投票结果,相对来说选择leader的效率上应当会高些,当然这个只是我从这个算法上的看法。

另外:采用这种选举算法不需要设置electionaddr. 即host:port1:port2 中,port2是不需要的。

分享到:
评论

相关推荐

    zookeeper-3.3.3-API文档-中文版.zip

    赠送jar包:zookeeper-3.3.3.jar; 赠送原API文档:zookeeper-3.3.3-javadoc.jar; 赠送源代码:zookeeper-3.3.3-sources.jar; 包含翻译后的API文档:zookeeper-3.3.3-javadoc-API文档-中文(简体)版.zip 对应...

    apache-zookeeper3.3.3到3.9.2全版本集合

    zookeeper-3.3.3,3.3.4,3.3.5,3.3.6, zookeeper-3.4.0,3.4.1,3.4.10,3.4.11,3.4.12,3.4.13,3.4.14,3.4.2,3.4.3,3.4.4,3.4.5,3.4.6,3.4.7,3.4.8,3.4.9, zookeeper-3.5.0-alpha,3.5.1-alpha,3.5.10,3.5.2-alpha,3.5.3-...

    使用Zookeeper来为你的程序加上Leader Election的功能。

    在 Leader Election 场景中,ZooKeeper 使用一种称为“选举算法”的机制来决定哪个节点成为领导者。 选举算法通常基于节点的优先级或状态信息。在 ZooKeeper 中,每个参与选举的节点都会创建一个临时顺序节点...

    zookeeper-3.3.3-API文档-中英对照版.zip

    赠送jar包:zookeeper-3.3.3.jar 赠送原API文档:zookeeper-3.3.3-javadoc.jar 赠送源代码:zookeeper-3.3.3-sources.jar 包含翻译后的API文档:zookeeper-3.3.3-javadoc-API文档-中文(简体)-英语-对照版.zip ...

    zookeeper-3.3.3.jar

    动物园管理员服务器 org.apache.zookeeper/zookeeper/3.3.3/zookeeper-3.3.3.jar

    zookeeper.-3.3.5.jar

    zookeeper.-3.3.5.jar 工具类

    面试官:说一说Zookeeper中Leader选举机制.doc

    Zookeeper 中 Leader 选举机制 在分布式系统中,Leader 选举机制是非常重要的一环,Zookeeper 作为一个广泛应用于分布式系统的协调服务,自然也有自己的 Leader 选举机制。下面,我们将通过一个有趣的面试对话来...

    zookeeper的通俗原理解释

    Zookeeper 是基于 Paxos 算法实现的分布式协调服务,它提供了高可用、高性能、可扩展的解决方案。下面我们将通过一个通俗的例子来解释 Paxos 算法的原理和 Zookeeper 的实现机制。 Paxos 算法原理 Paxos 算法描述...

    zookeeper基于paxos算法的资料。

    在Zookeeper中,Paxos算法被用来选举 Leader 和维护集群的状态一致性。Paxos算法通常包括提议者(Proposer)、接受者(Acceptor)和学习者(Learner)三个角色。在Zookeeper中,这些角色分别对应于客户端、服务器...

    fast paxos算法与zookeeper leader选举源代码分析.doc

    fast paxos算法与zookeeper leader选举源代码分析.doc

    自动动手写zookeeper选举算法与心跳同步

    本文将深入探讨Zookeeper中的选举算法和心跳同步机制,这两个概念对于理解Zookeeper如何保证集群的一致性和高可用性至关重要。 首先,让我们从选举算法开始。在Zookeeper中,最常用的选举算法是Fast Paxos,它是在...

    zookepper中leader作用

    zookeeper中的leader的主要作用,一个zookeeper 集群 只有一个leader: 类似master/slave模式

    zookeeper的安装

    ZooKeeper采用一种称为Leader election的选举算法。在整个集群运行过程中,只有一个Leader,其他的都是Follower,如果ZooKeeper集群在运行过程中 Leader出了问题,系统会采用该算法重新选出一个Leader。因此,各个...

    zookeeper 系列整理总结

    ZooKeeper通过 zab(ZooKeeper Atomic Broadcast)协议保证了强一致性,而Leader选举则是ZooKeeper集群中实现高可用性的关键过程,确保即使有服务器故障,服务仍能继续运行。 总的来说,ZooKeeper是一个强大的工具...

    Zookeeper安装

    一、实验要求 完成Zookeeper的完全分布模式的安装 Zookeeper服务能够正常... Zookeeper采用的投票算法要求至少有3个及其以上的服务节点,且服务节点为奇数时为最有效的配置,所以将集群的五台主机全部作为服务节点。

    zookeeper.7z

    - **Zookeeper 的选举算法**:Zookeeper 使用的是 Fast Leader Election 算法,它能够在短时间内选举出领导者,保证系统的快速恢复。 5. **Zookeeper 的运维与调优** - **监控与日志**:监控 Zookeeper 的运行...

    19-Zookeeper知识点1

    ZooKeeper 采用 Fast Leader Election 算法(可以理解为 Paxos 的一个简化版,一个变种)。ZooKeeper 服务器共有 4 个状态:LOOKING:寻找 Leader 状态。LEADING:领导者。FOLLOWING:跟随者。OBSERVING:观察者。...

    Zookeeper和Hbase安装总结手册.

    Zookeeper和Hbase安装总结手册.

    zookeeper-3.4.5

    例如,在分布式环境中,多个节点可能需要选举一个领导者,Zookeeper的Leader选举算法可以很好地解决这个问题。此外,Zookeeper的分布式锁可以帮助解决并发问题,确保在分布式操作中的数据一致性。 回到“zookeeper-...

Global site tag (gtag.js) - Google Analytics