Zookeeper是通过ZAB 协议保持数据的一致性的。
写数据流程:
1、Client向Zookeeper的Server1上写数据,发送一个写请求。
2、如果server1不是Leader,那么server1会把这个写请求转发给Leader,这个Leader会将写请求广播给各个server,各个server会将这个写请求加入代写队列,并发送给Leader成功信息。(当然也有可能是失败信息,这个时候有可能是请求的序列号比当前版本的序列号低,该server自杀重启,向Leader同步数据)
3、当Leader收到一半以上的server的成功信息,说明该写操作可以执行,Leader会向各个server发送提交信息,各个server收到信息后会落实队列里的写请求,此时写成功。
4、server1会进一步通知Client数据写成功了,此时就认为整个写操作成功。