zookeeper成功的地方就是使用了zab协议。
ZAB协议(ZooKeeper Atomic Broadcast原子消息广播协议)
zab协议所有事务请求必须由leader协调,首先leader发起proposal消息,大多数server同意后,然后leader发送commit消息。
zxid编号
1、低32位为计数器,客户端每次请求+1
2、高32位为epochID,每次选举新leader+1
状态和阶段
1、Looking:系统刚启动时或者Leader崩溃后正处于选举状态
2、Following:Follower节点所处的状态,Follower与Leader处于数据同步阶段
3、Leading:Leader所处状态,当前集群中有一个Leader为主进程
zookeeper主要分为5个阶段,选举,发现,同步,广播
选举:Looking状态中选举出Leader节点,Leader的lastZXID总是最新的
发现: Follower节点向准Leader推送FOllOWERINFO,该信息中包含了上一周期的epoch,接受准Leader的NEWLEADER指令,检查newEpoch有效性,准Leader要确保Follower的epoch与Z