查看其它 1 个回答windfeng的回答

windfengwindfeng系统分析师华为

业务节点有Leader,Follower的角色,当有节点故障的时候,Leader节点负责将故障节点下的设备进行重新分配。
集群业务节点成员的Leader/Follower角色是基于业界开源的AKKA框架及Raft算法实现的,工作机制和选举流程如下:

Follower:候选人,发起选举。
Candidate:接收到选举请求后投票。
Leader:获得半数以上投票的Candidate将切换为Leader,负责业务数据同步和复制。
选举流程如下:
a. 所有节点初始状态都是Follower,并启动选举定时器。
b. 选举定时器超时,Follower会自动转化角色为Candidate,发起选举,期待其它Server回复OK同意自己成为Leader。
c. 一轮Term选举过后,如果没有Server选举成功,则currentTerm加一,重新发起选举。
d. 如果得到超过半数选票,则角色转换成Leader,开始广播心跳报文。
e. 当Candidate在选举过程中收到Leader的心跳报文,如果Leader的Term不小于本地的currentTerm,则承认Leader合法,主动降为Follower。
f. 当Leader收到比自己更高Term的Leader的心跳报文,则主动降级为Follower。
g. Candidate既没有选举成功,也没有收到其它Leader的RPC请求,这种情况一般出现在多个节点同时发起选举,最终每个Candidate都将超时。为了减少冲突,这里采取“随机退让”策略,每个Candidate重启选举定时器(随机值),大大降低了冲突概率。

详细资料可以参考 本次活动"日程资料”页面

软件开发 · 2018-11-29
浏览2913

回答者

windfeng
系统分析师华为
擅长领域: 网络云计算私有云

windfeng 最近回答过的问题

回答状态

  • 发布时间:2018-11-29
  • 关注会员:4 人
  • 回答浏览:2913
  • X社区推广