码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 「笔耕不辍」zookeeper的选主过程


    zookeeper的选主过程

    1 . 接收投票消息。投票消息会包括id,zxid,epoch,state,这四种信息,分别代表

    Id: 唯一标识一台机器,存储在myid文件中

    Zxid: 标识了本机想要选举谁为leader,是本机目前所见到的最大的id值

    Epoch: 逻辑时钟。用于判断选举是否过期

    State: 本机的状态信息(包括looking,leading,following,observing)

    2 .判断PeerState状态,如果是looking状态,则继续.如果是leading,foolowing,observing则走别的流程

    3 .收到票后,会判断发送过来的逻辑时钟是否大于目前的逻辑时钟,如果是说明集群已经进入了新一轮的投票了。

    4 .清空投票箱。因为这个之前的投票都是上一次投票期间维护的。

    5 . 如果等于目前的逻辑时钟,说明是当前的,则更新最大的leader id和提案id

    判断是否需要更新当前自己的选举情况.在这里是根据选举leader id,保存的最大数据id来进行判断的,这两种数据之间对这个选举结果的影响的权重关系是:首先看数据id,数据id大者胜出;其次再判断leader id,leader id大者胜出

    判读投票结果代码

    6 . 发送通知,通知其他的QuorumPeer更新leader信息.同时将更新后的leader信息放入投票箱

    检查是否已经接收到了所有服务器的投票代码参考。如果是的,则设置自己的选择结果

    如果没有接收到所有服务器的投票,那判读这个leadId是否得到了一半以后的服务器的投票代码参考,如果是则返回

    以上流程描述的是在zookeeper中,参考使用的算法是FastLeaderElection

    在zookeeper的的选主的流程,另外还提供了LeaderElection和AuthFastLeaderElection的实现

    LeaderElection的实现比较简单。以(id,zxid)做为投票的依据.并且它的实现是同步的,需要等待所有服务器返回后再统计结果。

    而相比FastLeaderElection是每次收到回复都会计算投票结果,效率上会比LeaderElection更好一些

  • 相关阅读:
    自己编写程序publish出kitti数据集,可视化kitti数据集
    【Spark 实战系列】Phoenix 整合 spark 进行查询分析
    2023大连工业大学计算机考研信息汇总
    豪赌?远见?浙江东方的量子冒险
    EN 14351-1窗和外部行人门—CE认证
    项目实战:组件扫描(5)-解析带有GetMapping或PostMapping的方法最后封装成ControllerDefinition
    shiro配置文件shiro.ini简介说明
    hdu 3549 a flow problem 的多种解法
    数据结构和算法(12):词典
    GPT-4 来了!这些开源的 GPT 应用又要变强了
  • 原文地址:https://blog.csdn.net/weixin_43719843/article/details/126801474
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号