Zab协议(Zookeeper Atomic Broadcast):
广播模式:
- Leader将所有更新(称为proposal),顺序发送给Follower
- 当Leader收到半数以上的Follower对此proposal的ACK时,即向所有Follower发送commit消息,并在本地commit该消息
- Follower收到proposal后即将该proposal写入磁盘,写入成功即返回ACK给Leader
- 每个proposal都有一个唯一的单调递增的proposal ID, 即zxid
- 收到Leader发送过来的commit之后,写进内存数据库,同时去把它commit。
- 查询时访问的是内存数据库。
恢复模式:
- 当Leader宕机或者都是大部分Follower后,即进入恢复模式。
- 当新Leader被选举出来,且大多数Follower完成了与Leader的状态同步后,恢复模式即结束,从而进入广播模式。