Zookeeper技术问答系列-NO2

一.ZooKeeper中什么是ZAB协议?

ZAB协议,全称Zookeeper Atomic Broadcast(Zookeeper原子广播协议),是Zookeeper数据一致性的核心算法。它是为分布式协调服务ZooKeeper专门设计的一种支持崩溃恢复的原子广播协议。在ZooKeeper集群中,ZAB协议确保所有服务器之间的数据变更保持一致,即使在出现节点崩溃或网络分区的情况下也能保证数据的一致性。

ZAB协议的核心是定义了对于那些会改变ZooKeeper服务器数据状态的事务请求的处理方式。在ZooKeeper集群中,所有客户端的请求都是写入到Leader进程中的,然后由Leader同步到其他节点,称为Follower。每次有一个新的Leader选举出现时候,Leader服务器取出本地日志中最大的事务ZXID,读取epoch值,进行+1操作,作为新的周期ID。

在集群数据同步的过程中,如果出现Follower节点崩溃或者Leader进程崩溃时,都会通过ZAB协议来保证数据一致性。具体来说,ZAB协议确保丢弃那些只在Leader上被提出而没有被提交的事务,并使用一个单一的主进程(Leader)来接收并处理客户端的事务请求(也就是写请求),然后将服务器数据的状态变更以事务proposal(事务提议)的形式广播到所有的副本(Follower)进程上去,从而保证一个全局的变更序列被顺序引用。

二.ZooKeeper四种类型的数据节点Znode?

ZooKeeper中有四种不同类型的节点,它们分别是:

  1. 持久节点(Persistent Node):一旦创建,持久节点将一直存在,直到显式删除。它们不会因为创建该节点的客户端会话失效而消失。持久节点通常用于存储持久化的配置信息或关键数据。
  2. 临时节点(Ephemeral Node):临时节点的生命周期和客户端会话绑定。当客户端断开连接时,临时节点会被自动删除。另外,临时节点下不能存在子节点。这种节点类型在dubbo架构中service服务的注册、分布式锁等场景中常见。
  3. 持久顺序节点(Persistent Sequential Node):这是一种特殊的持久节点,它在创建时会自动生
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

纵然间

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值