博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Zookeeper如何保证数据的一致性?
阅读量:6619 次
发布时间:2019-06-25

本文共 635 字,大约阅读时间需要 2 分钟。

  hot3.png

1.如何保证数据一致性有两种情况:第一重新选取leader之后的数据同步;第二leader处理完事务请求后与follower保持数据同步。

2.首先是重新选举leader之后的数据同步,通过FastleaderElection选举算法选出leader,选出leader之后,leader需与其他节点进行同步,同步完成leader才能真正变为leader,当超过一半的follower和leader同步结束后才算完成同步,然后follower会带上自己最大的zxid,尝试连接leader,来确定数据是否同步。

然后就是第二种情况,处理完事务请求的leader与follwer保持同步。事务请求全部由leader处理。当leader收到请求后,将请求事务转化为事务proposal,由于leader会为每一个follower创建一个队列,将该事务放入响应队列,保证事务的顺序性。之后会由队列中顺序向其他节点广播该提案,follower收到后会将其以事务的形式写入到本地日志中,并向leader发送反馈ack,leader会等待其他follower的回复,当收到一半以上follower响应时,leader会向其他节点发送commit消息,同时leader提交该提案。当follower将数据同步完成之后,leader会将该follower加入到真正可用的follower列表中。

转载于:https://my.oschina.net/134596/blog/1647658

你可能感兴趣的文章
MapGIS转Shp文件的单位问题
查看>>
使用Karate轻松实现自动API测试
查看>>
CentOS -bash: warning: setlocale: LC_MESSAGES: cannot change locale (en_US.UTF-8)
查看>>
编写一个基本的Android应用程序
查看>>
我的友情链接
查看>>
查看Linux操作系统安装的位数(getconf 命令应用)
查看>>
ifstream读取文件失败和乱码问题
查看>>
Python信息采集器使用轻量级关系型数据库SQLite
查看>>
zookeeper中的exception的问题
查看>>
final+基本类型导致只编译常量类引起的错误
查看>>
分库分表的几种常见玩法及如何解决跨库查询等问题
查看>>
把GPS经纬度放入两个字符串,写入文件
查看>>
Java操作MongoDB实现CRUD
查看>>
给js文件传参数
查看>>
tomcat web.xml启动加载类
查看>>
Linux 配置SSH信任
查看>>
【九度OJ1352】|【剑指offer41】和为S的两个数字
查看>>
《android-文件大小》
查看>>
HTTPS的工作原理
查看>>
PhoneGap使用PushPlugin插件实现消息推送
查看>>