首页 > 其他分享 >Zookeeper - ZAB 集群数据同步的过程

Zookeeper - ZAB 集群数据同步的过程

时间:2022-10-28 12:08:15浏览次数:48  
标签:初始化 事务 Zookeeper ZAB epoch follower 集群 集合 leader


Zookeeper 事务ID


每个zookeeper 事务都有一个全局唯一的事务ID,ZXID。ZXID 高32 位是leader 周期epoch,低32 位是递增计数器。


第一阶段(准leader 生成初始化事务集合)


  1. 所有follower 向准leader 发送自己最后接收的事务的epoch;
  2. 准leader 选取最大的epoch,加1得到e1,将e1 发送给follower;
  3. follower 收到准leader 发送的epoch 值之后,与自己的epoch 值作比较,若小于,则将自己的epoch 更新为e1,并向准leader 发送反馈ACK信息(epoch 信息、历史事务集合);
  4. 准leader 接收到ACK 消息之后,会在所有历史事务集合中选择其中一个历史事务集合作为初始化事务集合,该事务集合满足ZXID最大;

第二阶段(数据同步)


  1. 准leader 将epoch 与 初始化事务集合发送给集群中过半的follower;每个follower 会分配到一个队列,leader 会将那些没有被各个follower 同步的事务以proposal 形式发送给各个follower,并在后面追加commit 消息,表示事务已被提交;
  2. follower 接收后,会执行初始化事务集合中的事务(执行过跳过,未执行执行),反馈给leader 表明自己已经处理(追上来了)
  3. leader 收到后过半反馈后,发送commit 消息;
  4. follower 接收到commit 消息后,提交事务;

 

标签:初始化,事务,Zookeeper,ZAB,epoch,follower,集群,集合,leader
From: https://blog.51cto.com/u_11290086/5804038

相关文章

  • Zookeeper - ACL(Access Control List)
    zookeeper的权限控制机制权限模式IP针对某个IP或者针对某个IP网段Digestusername:passwordworldworld:anyonesuper超级用户授权对象权限赋予的用......
  • Zookeeper - zookeeper 底层实现数据一致性
    zookeeper主要应用事务日志和数据快照来实现底层数据一致性;事务日志事务日志是记录zookeeper事务操作的日志文件。以ZXID为事务日志文件名的后缀,可以快速的定位到查询......
  • Clickhouse之集群操作
    查看集群:在任意一台机上,使用/usr/bin/clickhouse-client--hostlocalhost--port9000连接本地服务器select*from`system`.clusters; 建库:建库create......
  • Elasticsearch 集群健康值红色解决方法
    通过http://10.2.83.29:9100/查询集群状态为红色,说明部分主分片不可用head插件会以不同的颜色显示。绿色——最健康的状态,代表所有的主分片和副本分片都可用;黄色——所......
  • Zabbix技术分享——监控windows进程资源使用情况
       监控系统进程资源的使用情况是IT运维的常规操作。在实际工作中,运维人员有可能遇到可以使用ZabbixAgent监控linux系统进程,却无法监控windows系统进程的情况。这是......
  • 一键部署zabbix脚本
    #!/bin/bashZABBIX_VER=5.0URL="https://mirror.tuna.tsinghua.edu.cn/zabbix"FONT=msyhbd.ttcMYSQL_HOST=localhost#MYSQL_HOST=10.0.0.100MYSQL_ZABBIX_USER="zabbix@loca......
  • zookeeper伪分布式环境的搭建
    搭建Zookeeper集群1.1搭建要求真实的集群是需要部署在不同的服务器上的,但是在我们测试时同时启动很多个虚拟机内存会吃不消,所以我们通常会搭建伪集群,也就是把所有的服务......
  • 在 Kubernetes 集群中部署现代应用的通用模式
    在Kubernetes集群中部署现代应用的通用模式摘要我们正在经历现代应用交付领域的第二次浪潮,而Kubernetes和容器化则是这次浪潮的主要推动力量。随着第二次浪潮的推进,......
  • Java 中那些绕不开的内置接口 -- Serializable
    上一部分我们着重讲了Java集合框架中在开发项目时经常会被用到的数据容器,在讲解、演示使用实践的同时,把这个过程中遇到的各种相关知识点:泛型、​​Lambada​​​、​​Str......
  • redis集群手动切换主从
    生产环境一个三主三从,其中一个主节点挂掉了,但是没有自动切换到从节点cluster-require-full-coverage默认为yes,当集群中一段槽位的主从都不可用时,整个集群不提供服务直接导致......