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写入请求可以成功,
2、leader收到半数以上的follower的反馈信息之后,leader会下发生效提案广播信息
- Zab的顺序一致性
1、连续的事务ID
ZXID
前32位表示任期,意思是在一致性状态下处于任期状态,重新选举会修改这个数值。
后32位标识事务id,任期内如果有事务那么会进行自增操作。
2、Leader会根据zxid严格控制提案的生效顺序。未生效的提案会存放到map中,key就是zxid。