ZooKeeper_13_服务启动

Leader和Follower服务器启动期交互过程


挑重点,原书还讲解了单机、集群服务器的启动过程,我这里就跳过了..

我们来看下集群服务器启动过程中Leader服务器与Follower服务器之间的交互

这里默认集群服务器已经完成了Leader选举,集群中的服务器,角色都已经确定。


(图不画了,直接用原书中的图)



Leader和Follower服务器启动期交互过程


1. 创建Leader和Folower服务器

完成Leader选举之后,每个服务的角色都已经确定,开始创建自身相应的服务器实例,并开始进入各自角色的主流程。


2. Leader服务器启动Follower接收器(LearnerCnxAcceptor)

在ZooKeeper集群运行期间,Leader服务器需要和所有其余的服务器(下面使用"learner"表示)保持连接以确定集群中的机器存活情况。

Follower接收器(LearnerCnxAcceptor)用于负责接收所有非leader服务器的连接请求。


3. learner服务器开始和leader服务器建立连接

所有的Learner服务器启动完毕之后,会与leader选举的投票结果中找到当前集群中的Leader服务器,然后与其建立连接。

简单地说,就是将learner服务器的信息注册到leader服务器中。


4. Leader服务器创建LearnerHandler

leader服务器接收到来自其他机器的连接创建请求之后,会创建一个LearnerHandler实例。

每个LearnerHandler实例都对应了一个Leader与Learner服务器之间的连接。

他负责Leader和Learner服务器之间几乎所有的消息通知和数据同步。


5. 向Leader注册

当learner服务于Leader建立起连接之后,Learner就会向Leader进行注册。

所谓的注册其实就是将Learner服务器自己的基本信息发送给Leader服务器。

我们称之为LearnerInfo,包括当前服务器的SID和服务器处理的最新的ZXID。


6. Leader解析Learner信息,计算新的epoch


7. 发送leader状态

计算出新的epoch之后,Leader会将该信息以一个LEADERINFO消息的形式发送给learner,同时等待Learner的响应。


8. Learner发送ACK消息

learner在接收到leader的消息之后,解析出epoch和ZXID,然后向Leader反馈一个ACKEPOCH


9. 数据同步


10. 启动Leader 和 Learner服务器

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值