Zookeeper的选举机制

这篇具有很好参考价值的文章主要介绍了Zookeeper的选举机制。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Zookeeper的高度可靠性

是一个分布式的系统,多个节点 并且节点中记录的数据是完全一致(一致性) , 当某个zk的节点宕机之后不会影响工作。因为Zookeeper的主节点不存在单点故障!Zookeeper的主节点是可以动态选举出来的!

Zookeeper的选举机制(奇数台)

zookeeper的进程在不同的工作模式下,有不同的通信端口(比如选举时,通过端口3888通信;作为leader或者follower接收客户端请求时通过端口2181;leader和follower之间通信用2888)
zk集群安装的时候 会人为的为每台机器分配一个唯一的id
Leader选举过程(以3个节点的集群为例):文章来源地址https://www.toymoban.com/news/detail-566187.html

  • 集群初次启动时的选举流程
  1. 第一台机器(id=1)启动,发现没有leader,进入投票模式,投自己,并收到自己投这一票,得1票,不能当选leader(当leader的条件是,集群机器数量过半的票数)
  2. 第2台机器(id=2)启动,发现没有leader,进入投票模式,投自己(因为自己的id>1 收到的另一台机器的票的id)
  3. 第1台机器收到2的票,发现集群中有一个比自己id大的机器上线了,重新投票,投id=2
  4. 第2台收到的得票数为2票,过半数,自己当选,切换模式:Leader模式
  5. 第1台就发现有Leader存在了,自己切换模式:Follower
  6. 第3台启动,发现有Leader,自动进入Follower状态
    如果每个节点是同时启动的zk 同时选举自己 ,同时广播 , 同时获取别人的广播,3号机器会当选
  • 集群在运行过程中的选举流程
  1. 在某个时间点上,id=2机器挂了(leader),别的机器发现没有leader了,全体进入投票模式
  2. 先投自己,票中会携带(自己的id,自己的数据的版本号)
  3. 大家都投数据版本最新的节点做leader,如果有多个节点数据版本一样,则从中选id最大的那个作为投票目标!
    从上述投票机制可以看出:
    Zookeeper集群的节点数最好配置为奇数!
    Zookeeper集群的节点规模一般在3~5台就够!

到了这里,关于Zookeeper的选举机制的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Zookeeper快速入门(Zookeeper概述、安装、集群安装、选举机制、命令行操作、节点类型、监听器原理)

    1.1 概述 Zookeeper是一个开源的分布式的,为分布式框架提供协调服务的Apache项目。 1、Zookeeper工作机制 Zookeeper从设置模式角度来理解:是一个基于观察者模式设计的分布式服务管理框架,它负责储存和管理大家都关心的数据,然后接受观察者的注册,一旦这些数据的状态发生

    2024年03月28日
    浏览(40)
  • ZooKeeper只完美解决Unable to read additional data from server sessionid 0x0报错问题,并带你深度理解ZooKeeper内部机制之选举机制

    🍅 作者简介:上火不找我,CSDN2022新星计划top4🏆、算法领域新星创造者💪 🍅有什么问题直接私信作者,秒回哦💪💪💪 Linux环境下 今天搭建了一个zookeeper集群,分别为server2,server3,server4。 报错如下: 在一个节点上进入到zookeeper命令行执行 zkCli.sh 时,报了下面这个异常! 一开

    2023年04月08日
    浏览(47)
  • zookeeper1==zookeeper源码阅读,源码启动ZK集群

    下载源码 Tags · apache/zookeeper · GitHub https://codeload.github.com/apache/zookeeper/zip/refs/tags/release-3.9.1 JDK8 MAVEN3.8.6 mvn -DskipTests=true package 配置ZK1 zkServer.cmd中指出了启动类是 QuorumPeerMain QuorumPeer翻译成集群成员比较合理,Quorum集群Peer成员 在代码目录下新建data文件夹和log文件夹 并在dat

    2024年02月05日
    浏览(27)
  • zookeeper选举流程源码分析

    zookeeper选举流程源码分析 选举的代码主要是在 QuorumPeer.java 这个类中。 它有一个内部枚举类,用来表示当前节点的状态。 LOOKING: 当前节点在选举过程中 FOLLOWING:当前节点是从节点 LEADING: 当前节点是主节点 OBSERVING: 当前节点是观察者状态,这种状态的节点不参与选举的投

    2024年02月11日
    浏览(26)
  • zookeeper源码(04)leader选举流程

    在\\\"zookeeper源码(03)集群启动流程\\\"中介绍了leader选举的入口,本文将详细分析leader选举组件和流程。 quorumPeer的start阶段使用startLeaderElection()方法启动选举 LOOKING状态,投自己一票 createElectionAlgorithm - 创建选举核心组件:QuorumCnxManager(管理连接)、FastLeaderElection(选举)等 quorumPeer的

    2024年02月05日
    浏览(29)
  • 浅谈Zookeeper集群选举Leader节点源码

    写在前面: zookeeper源码比较复杂,本文讲解的重点为各个zookeeper服务节点之间的state选举。至于各个节点之间的数据同步,不在文本的侧重讲解范围内。 在没有对zookeeper组件有一个整体架构认识的基础上,不建议直接死磕细节。本文写作的目的也是基于此,阅读本文,希望读

    2024年02月07日
    浏览(33)
  • ZooKeeper的应用场景(集群管理、Master选举)

    随着分布式系统规模的日益扩大,集群中的机器规模也随之变大,因此,如何更好地进行集群管理也显得越来越重要了。 所谓集群管理,包括集群监控与集群控制两大块,前者侧重对集群运行时状态的收集,后者则是对集群进行操作与控制。在日常开发和运维过程中,我们经

    2024年02月12日
    浏览(24)
  • Redis——哨兵模式与Zookeeper选举的异同点

    当我们使用主从复制出现的问题:手动故障转移:写能力和存储能力受限:主从复制 -master 宕机故障处理。 主从切换技术的方法是:当主服务器宕机后,需要手动把一台从服务器切换为主服务器,这就需要人工干预,费事费力,还会造成一段时间内服务不可用。这不是一种推

    2024年02月06日
    浏览(25)
  • Zookeeper源码分析——ZK服务端加载数据源码解析

    (1)zk 中的数据模型,是一棵树,DataTree,每个节点,叫做DataNode (2)zk 集群中的DataTree 时刻保持状态同步 (3)Zookeeper 集群中每个zk 节点中,数据在内存和磁盘中都有一份完整的数据。 ⚫ 内存数据:DataTree ⚫ 磁盘数据:快照文件 + 编辑日志 ZK服务端初始化源码解析 启动

    2023年04月24日
    浏览(40)
  • Spring Boot Dubbo Zookeeper(含ZK安装脚本)

    Common 公共依赖 定义接口(用户服务注册使用) Provider 首先需要依赖Common yml 实现定义的接口(Service是apache.dubbo) 启动类(@EnableDubbo) Consumer 首先需要依赖Common Controller(@Reference注解) 安装脚本

    2024年02月10日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包