ZooKeeper学习笔记(八):ZooKeeper集群写数据原理

写数据原理

写流程直接请求发送给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他写完了

其他ZooKeeper文章

ZooKeeper学习笔记(一): ZooKeeper是什么能用来做什么
ZooKeeper学习笔记(二): Zookeeper的安装与启动(Docker)
ZooKeeper学习笔记(三): Zookeeper的五大参数解读
ZooKeeper学习笔记(四): Docker搭建ZooKeeper集群(这里是三个,具体可以修改对应参数)脚本
ZooKeeper学习笔记(五): ZooKeeper集群选举机制
ZooKeeper学习笔记(六): 客户端命令行操作
ZooKeeper学习笔记(七):ZooKeeper依赖-API方法
ZooKeeper学习笔记(八):服务器动态上下线原理

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

社畜阿藏405

挣点钱不丢人吧?

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值