当前位置: 首页 > news >正文

Zookeeper原理

一、概念

  1. Zookeeper是一个开源的、分布式的,为分布式应用提供协调服务的Apache项目。封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。

二、选举机制

  1. 首先是几个概念:
    1. myid:节点的唯一标识,在启动节点之前需要配置好;
    2. zxid:在数据修改后会增加,zxid越大证明这个节点里的数据越新。
    3. leader:leading 角色与状态
    4. follower:following
    5. observer:looking
  2. 过程
    1. 只有两种情况下会产生选举:
      1. 集群初始化(没有leader);
      2. leader不能与其他节点保持稳定连接;
    2. 第一轮:一开始都是looking状态,第一个节点都自己投票(因为没超过半数,所以继续下一轮投票)
      1. 然后节点2也给自己投票,然后互相交换投票结果(会检查有效性)。选票的形式为(myid,zxid)。
      2. 选票比较机制:会比较zxid,保留zxid较大的选票,如果zxid都一致,那么保留myid最大的选票。
    3. 第二轮将通过比较取舍后的选票互相发送,然后判断是否有超过半数的节点保留了相同的选票,如果是,则选票决定了leader;如果否,则节点2为looking状态,继续开启第三个节点进行选票。
    4. 添加一个节点时,如果已有leader,则新加节点自动变成follower。
    5. 整体而言,就是挨个启动节点,然后投一次票比一次id:带你搞明白Zookeeper选举机制_qu_smalldoubao的博客-CSDN博客
  3. ZAB协议
    1. zab协议是为zk专门设计的一种支持崩溃恢复的原子广播协议,zk依赖zab实现分布式数据一致性,来保证住呗模式的系统架构中各个副本之间的数据一致性。zab协议包括两个模式:崩溃回复(新选举leader)和消息广播(选举出Leader服务器之后,进入消息广播模式,开始接收处理客户端的请求)

http://www.lryc.cn/news/44458.html

相关文章:

  • 关于FPGA如何快速生成模块的例化模板(实用)
  • 在 Python 中将字符串转换为集合
  • 大数据Flink进阶(十三):Flink 任务提交模式
  • day11—编程题
  • CentOS下安装crontab及cron表达式解析
  • python 绘制训练曲线--基于Numpy.convolve曲线平均滤波
  • 状态管理插件vuex
  • arthas—阿里开源的Java诊断工具
  • Java学习记录
  • OpenGL API 之 glVertexAttribPointer
  • 蓝桥杯真题4
  • day02_基本语法
  • 多线程之单例模式
  • 2023年绿色建筑国际会议(ICoGB 2023) | Springer独立出版
  • Python中进程和线程到底有什么区别?
  • 2023美赛春季赛F题思路数据代码论文分享
  • 念一句咒语 AI 就帮我写一个应用,我人麻了...
  • 开放平台设计之接口签名认证
  • Vue自创插件发布到npm以及使用方法
  • 合成孔径雷达干涉测量InSAR数据处理、地形三维重建、形变信息提取、监测等实践技术
  • Java刷题,蓝桥杯省赛第十二届(第一场)4-------------6
  • Docker Cgroups——Docker 资源限制背后的技术原理
  • 十四. MySQL 锁相关
  • ModStartBlog v7.0.0 网站简单统计,支持博客分享
  • 【C语言蓝桥杯每日一题】—— 递增序列
  • node_express框架01
  • 想转行做程序员,该怎么选择开发语言?哪个岗位工资最高?
  • JavaWeb——【笔记】3.2JavaWeb_Web核心_Request(请求)+Response(响应)
  • HTML 标签和属性
  • MySQL 连接的使用