美文网首页
Zookeeper 数据同步

Zookeeper 数据同步

作者: taj3991 | 来源:发表于2020-02-14 12:34 被阅读0次

zk中所有数据都是放在内存中的,当然也有snapshot、事务日志。

snapshot

用于记录zk服务器上某一时刻的全量内存数据内容。snapshot.2c021384ce,后缀也是一个zxid,表示本次数据快照开始时刻的服务器最新zxid。没有预分配机制,所有内容都是有效的。

事务日志:

每次事务操作都会有一条记录保存在事务日志文件中,文件大小都是64M(包含填充,也就是预分配,主要为了提高事务日志的写入效率,不需要重新分配磁盘空间),日志后缀是一条zxid,也就是写入该事务文件的第一条事务记录的zxid

数据同步

一、已提交的数据不能丢失

节点1为leader,节点2、3、4、5为follower

节点1发起新的事物投票通过后,将事物保持在本地,然后同步给follower们,当节点2、3收到commit指令后,提交事物,4、5尚未收到commit指令,节点1宕机;此时需要重新选主,因为2、3的txid事物ID比4、5的事物ID大,并且节点3的myid比节点2的大,所以最终节点3成为主节点,4、5向2发送心跳,然后从2处开始同步新的数据,4、5找到3中与自己相同的txid,并且比较此txid下数据是否和3中的一致,如果不一致,删除4、5中此txid下的数据,再递归比较再早的一个txid,直到txid在3中存在,并且该事物下的数据与3中相同,则开始同步3中该txid往后的数据。

二、已丢弃的事物不能再现

节点1为leader,节点2、3、4、5为follower

节点1发起新的事物投票通过后,将事物保持在本地,节点1宕机;其他所有follower节点都没有收到commit指令。此时5成为leader节点,节点1重起后,成为follower节点,但是数据比5多,数据不一致。此时节点1取出当前最新的txid,去leader上查找,没有此txid,则丢弃本地的txid,再递归查找上一个txid,不一致就一直丢弃,直到找到与leader上txid一致,并且数据一致;从该txid往后开始同步数据。

原文

https://www.jianshu.com/p/5151f6ec5238

https://blog.csdn.net/shaolong1013/article/details/100087048

相关文章

  • Zookeeper 数据同步

    zk中所有数据都是放在内存中的,当然也有snapshot、事务日志。 snapshot 用于记录zk服务器上某一时...

  • Zookeeper如何保证数据一致性

    ZooKeeper保证数据一致性用的是ZAB协议。通过这个协议来进行ZooKeeper集群间的数据同步,保证数据的...

  • zookeeper 数据同步原理

    首先来看Leader做的工作:二)中提到的同步数据时使用的逻辑时钟,它的初始值是0,每次选举过程都会递增的,在le...

  • Soul网关同步数据之Zookeeper

    Soul网关同步数据之Zookeeper 调整配置 pom文件中注释掉原来默认的websocket同步方式,改为z...

  • soul从入门到放弃16--长轮询同步(一)

    一、前戏 长轮询同步的代码复杂程度,相较于websocket、zookeeper确实增加不少。之前写数据同步方式时...

  • zookeeper

    zookeeper 简述ZAB协议以及zookeeper 简述你所知道的分布式一致性协议 叙述ZAB集群数据同步的...

  • 2.ZooKeeper数据同步

    同步过程 leader接收到的来自某个follower封包一定是FOLLOWERINFO,该封包告知了该服务器保存...

  • zookeeper的原理-数据同步

    整体过程 当读请求,则当前节点获取;若是写请求,则转发给leader,leader提交事务前,则先广播事务,超过过...

  • zookeeper集群间通信类型

    zookeeper集群间通信大体可分为四类:数据同步型,服务器初始化型,请求处理型,会话管理型数据同步型 服务器初...

  • 系统设计:任务调度中心

    关键点 任务配置同步监听同步zookeeper节点变化节点的变化映射job的变化(对比节点历史数据快照) 分布式z...

网友评论

      本文标题:Zookeeper 数据同步

      本文链接:https://www.haomeiwen.com/subject/ibflfhtx.html