写数据原理
写流程直接请求发送给Leader节点
这里假设集群中有三个zookeeper服务端
ACK (Acknowledge character)即是确认字符,在数据通信中,接收站发给发送站的一种传输类控制字符。 表示发来的数据已确认接收无误。 在TCP/IP协议中,如果接收方成功的接收到数据,那么会回复一个ACK数据。 通常ACK信号有自己固定的格式,长度大小,由接收方回复给发送方。
步骤Leaderfollower-1号follower-2号1首先接受到写请求,然后写数据到leader中2leader会通知对应的follower,让他写相应的数据3这里follower-1号在写完数据的时候会给leader返回一次ack告诉leader写完了.这里ZooKeeper的机制是当数据已有半数以上的写入那么leader服务端(这里是因为写入请求请求的leader)就可以给客户端进行(ack)应答,告诉客户端我的数据已经写好了4即使leader已经应答了客户端,但是这里leader依旧会通知其他没有写入数据的follower进行数据的写入5当follow-2号写完数据时也会给leader返回一次ack,告诉leader他写完了
写流程直接请求发送给Follower节点
这里依旧假设集群中有三个zookeeper服务端
步骤Leaderfollower-1号follower-2号1首先接受到写请求,因为follower没有写权限所以需要把写(write)请求交给leader进行处理2leader接受到follower-1号写请求,然后写数据到leader中3leader会通知对应的follower,让他写相应的数据4这里follower-1号在写完数据的时候会给leader返回一次ack告诉leader写完了.这里ZooKeeper的机制是当数据已有半数以上的写入,那么leader服务端这里需要对follower-1号进行应答,因为是follower-1号先接受到的客户端传来的写请求这里follower-1号接收到了,leader传过来的已经达到了半数的应答.就可以给客户端进行(ack)应答,告诉客户端我的数据已经写好了.这里不是leader去做应答给客户端是因为客户端请求的是follower-1号5即使follower-1号已经应答了客户端,但是这里leader依旧会通知其他没有写入数据的follower进行数据的写入6当follow-2号写完数据时也会给leader返回一次ack,告诉leader他写完了
版权归原作者 社畜阿藏 所有, 如有侵权,请联系我们删除。