ZAB协议

一、ZAB协议简介

ZAB协议是Fast Paxos算法的一种工业实现。ZAB即原子广播协议,是一种专门为zookeeper设计的一种支持崩溃恢复的原子广播协议,在zk中,主要依赖ZAB实现分布式数据的一致性。

zookeeper使用一个单一的主进程处理客户端的事务写请求,当服务器状态发生变化后,集群采用ZAB协议以事务提案的方式广播到所有的副本进程上,ZAB为保证全局的序列变更,为每一个事务分配一个全局的递增编号xid。

在zookeeper集群中,对于任一节点,若客户端提交读请求,当前节点会根据自己保存的数据进行响应;若是写请求且当前节点不是leader,该节点会将写请求转发给leader,leade会以提案的方式广播该写操作,超过半数同意该操作,则提交写操作请求。然后leader再次广播所有订阅者(learner)同步数据。

二、ZAB中的概念

1、三类角色

当zk以集群方式出现时,zk中的集群有以下三种:

  • Leader:zk集群中写请求的唯一处理者,他收到写请求后会先根据请求发出提议,大多数服务统一之后记性数据修改。同时,他还可以进行投票、发起决议,更新系统状态。
  • Follower:接收客户的读请求,将结果返回客户端;将写请求转给leader;在选举中投票。
  • Observer:无选leader投票权与写操作投票权的Follower,主要是为了协助Follower处理读请求。不能反馈ACK。

同时,者三种角色在不同情况下还有其他称呼:

  • Learner:学习者,从Leader中同步数的server,一般来说,Follower与Observer相对于Leader合称Learner。
  • QuorumServer:法定服务器,具有投票权的主机。在leader选举过程中参与选举与被选举的主机称为QuorumServer,不包括Observer,即Leader+Follower。

需要注意的是:

当一个集群中增加Follower会导致集群写性能变差

2、三种模式

ZAB中的zkServer有三种模式:恢复模式、同步模式、广播模式,他们相互交叉。

  • 恢复模式:服务重启或Leader崩溃后进入恢复模式,恢复模式包含两个阶段:Leader选举阶段与初始化同步阶段。这两个阶段使zk恢复正常服务状态。
  • 广播模式:广播模式分为两种:初始化广播与更新广播。Leader选举结束后,Leader将自己的epoch及自身拥有的但其他Server没有的事务广播给Learner,这是初始化广播。当集群正常时,当Leader事务提案被大多数Follower同意后,Leader会修改自身数据,并将修改后的数据广播给其他Learner,这是更新广播。
  • 同步模式:同步模式分为两种:初始化同步及更新同步。Leader选举结束并发布初始化广播后,所有Learner会将Leader广播的事务及epoch同步到本地,这是初始化同步。当集群正常时,Leader发布更新广播后,所有Learner会将Leader广播的事务同步到本地,这是更新同步。

3、三个数据

zookeeper中有三个重要数据:zxid,epoch,xid

zxid是64位的Long类型,高32位表示epoch,低32位表示事务表示xid。即zxi

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值