zookeeper写数据流程

1.zookeeper中任意节点收到写请求,如果是follower节点,则会把写请求转发给leader,如果是leader节点就直接进行下一步。

2.leader生成一个新的事务并为这个事务生成一个唯一的ZXID

3.leader将这个事务发送给所有的follows节点

4.follower节点将收到的事务请求加入到历史队列(history queue)中,并返回ack确认包.

5.当leader收到半数以上的follower的ack消息,leader就进行写入操作,并且发送给所有follower 进行这个写request 持久化操作的commit(也带有这个zxid),当follower接收到commit还会进行一次check(队列中zxid和commit中的zxid比较),正确则进行写入操作,否则去sync leader数据.

 即leader接受到写请求(标记为zxid)就会发送proposal给所有follower,follower接受到请求先把zxid写入到队列中并返回ack确认包,当leader收到超过半数follower回传的ack后就进行写入操作,并且发送给所有follower 进行这个写request 持久化操作的commit(也带有这个zxid),当follower接收到commit还会进行一次check(队列中zxid和commit中的zxid比较),正确则进行写入操作,否则去sync leader数据

posted @ 2020-05-17 22:31  北城cheng  阅读(2310)  评论(1编辑  收藏  举报