zookeeper Zab协议—消息广播

本文介绍了Zookeeper中的ZAB协议消息广播过程。当超过半数follower与leader完成状态同步后,集群进入消息广播模式。leader为每个客户端事务请求生成Proposal并发送给所有follower,收集ack后进行事务提交。详细步骤包括Leader的propose、Follower的followLeader,以及后续的提交和处理流程。
摘要由CSDN通过智能技术生成

目录

2021SC@SDUSC

一、消息广播是什么?

二、消息广播过程

三、源码解析

1.Leader.propose()

[1]、生成相应的Proposal,发送给Follower

[2]、接收Follower的ack

2.Follower.followLeader()

[1]、读取leader返回的结果:leaderinfo

[2]、发送ack给leader

3、LearnerHander.syncFollower()

4.LearnerHandleader.queueCommittedProposals()

5.Follower.processPacket()

6.FollowerZooKeeperServer.commit()



2021SC@SDUSC



一、消息广播是什么?

        消息广播是Zab协议的一种基本模式,当集群中已经有过半的follower与leader服务器完成了状态同步,那么整个zk集群就可以进入消息广播模式了。如果集群中的其他节点收到客户端地事务请求,那么这些非leader服务器会首先将这个事务请求转发给leader服务器。

        ZAB协议的消息广播过程使用的是一个原子广播协议,针对每个客户端的事务请求,leader服务器会为其生成对应的事务Proposal,并将其发送给集群中其余所有的机器,然后再分别收集各自的选票,最后进行事务提交。


二、消息广播过程

1.Leader 接收到客户端新的事务请求之后,会生成对应的事务Proposal,并根据ZXID的顺序向所有Follower发送提案。

2.Follower根据消息接收的先后次序来处理这些来自Leader的事务Proposal,并将他们追加到hf中,之后再反馈给Leader。

3.当Leader接收到来自过半Follower针对事务Proposal的Ack消息后,就会发送Commit消息给所有的Follower,要求他们进行事务的提交。

4.当Follower接收到来自Leader的Commit消息后,就会开始提交事务Proposal。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值