Zookeeper-follower 初始化

2019-12-13  本文已影响0人  maxam0128

Follower 初始化

选举完成后,节点状态被初始化为FOLLOWING,之后创建follower节点,跟随leader并从leader同步数据。

1、Follower 相关类

2、follower控制逻辑

在follower 初始化完成后,通过 follower#followLeader 来跟随leader。

1、寻找leader节点

寻找leader节点通过Learner#findLeader实现。遍历所有节点,通过投票信息找出leaderId。

2、连接leader

通过Learner#connectToLeader 和上一步找到的leader建立连接,如果失败默认会重试不辞

3、同步新的选举周期

这一步和leader的数据交互都是同步的,有以下几个步骤:

4、向Leader同步数据

通过Learner#syncWithLeader 实现数据同步。这一步leader 会根据 follower 之前回复的ack数据包中lastLoggedZxid 来确定同步策略(参考leader初始化篇)。

1、数据同步前处理

在数据开始同步前,follower会根据leader 发送的数据同步策略预先做一些处理

2、同步数据

3、启动 FollowerZookeeperServer

4、处理snapshot 到 uptodate 之间的数据

再以snapshot的方式同步数据时,开始同步数据到follower 收到uptodate数据包之间有可能leader也有数据变更,这时需要将这部分数据提交。

经过以上的步骤之后,follower 服务启动完成。作为follower 它一方面需要处理来自客户端的请求,一方面也需要处理来自leader 的心跳数据和proposal和commit数据。

上一篇 下一篇

猜你喜欢

热点阅读