zooKeeper和ZAB协议总结一下

zookeeper的主备同步和leader选举是通过ZAB协议来完成的。写一下能够记得更牢一些。
因为ZK大多数是读,少部分写,所以读都是读follower。写的是leader
数据同步的过程类似于二阶段提交

  1. Client 写数据到leader,leader为每一个follower构建队列,异步将写入的数据放到队列里
  2. 队列里的数据发送proposal给到每一个follower
  3. follower收到后,将数据写入,并且发送ack
  4. leader收到大多数的ack之后,发送ack给到每一个follower,follower根据如果没问题就commit,然后发送给leader,leader收到之后给到client

像这样的分布式协议,主要还是考虑特殊情况。
可能出现的特殊情况如下:

  1. leader故障,毫无疑问, ZK重新选取主,然后重试
  2. 有一半的follower没ack,然后就没法commit,client接收到的也是失败,数据并没有持久化了,不会丢失。
  3. leader发送commit 丢了,那么follower没法commit,数据也没持久化下来,client接收到的失败。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值