Zookeeper的数据一致性原理

zookeeper

  • 命令
create [-s] [-s] path data acl
get path [watch]
set path data [version]
delete path [version]
ls patch [watch]
rmr path
stat path [watch]
  • 数据一致性

leader选举时机

​ 集群启动;

​ leader宕机;

​ follower挂掉后leader发现已经没有过半的follower跟随自己,不能对外提供服务;

leader选举机制

机器先给自己投票,然后发投票信息在没有收到发送投票信息的反馈时,一直处于looking选举状态,其他机器会收到之前机器所发过来的投票消息,如果一旦所收到的票数过半,那么则成为leader,其他机器成为follower,即使后续机器同样会收到其他机器发过来的投票信息,甚至会比leader的票数多,那么也是不会成为leader的。

  • Zab协议

1、ZAB(Zookeeper Atomic Broadcast) 协议是为分布式协调服务zookeeper专门设计的一种原子广播协议。

2、Leader负责处理写入请求

3、广播通知Follower节点

  • Zab协议的两阶段提交流程

1、leader收到写入请求,会把请求组成一个提案,以提案的形式发送给follower节点,follower节点收到提案后,就会受理,且暂时不会生效,会进行资源预留、资源判定,如果成功,则会通知leader写入请求可以成功,

扫描二维码关注公众号,回复: 14703207 查看本文章

2、leader收到半数以上的follower的反馈信息之后,leader会下发生效提案广播信息

  • Zab的顺序一致性

1、连续的事务ID

ZXID

​ 前32位表示任期,意思是在一致性状态下处于任期状态,重新选举会修改这个数值。

​ 后32位标识事务id,任期内如果有事务那么会进行自增操作。

2、Leader会根据zxid严格控制提案的生效顺序。未生效的提案会存放到map中,key就是zxid。

猜你喜欢

转载自blog.csdn.net/Zaric_001/article/details/113861534