zookeeper数据同步

leader节点会为每个follower节点维护一个FIFO数据队列,更新数据时往队列中添加

 

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

节点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往后开始同步数据。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值