ETCD 源码学习--Raft 协议实现的消息类型说明(四)

在 ETCD 源码学习过程,不会讲解太多的源码知识,只讲解相关的实现机制,需要关注源码细节的朋友可以自行根据文章中的提示,找到相关源码进行学习

消息类型

注释文档: /ectd/raft/doc.go

代码地址: /ectd/raft/raft.go

消息说明
MsgBeat心跳消息(tickHeartbeat),该消息会触发 Leader 广播心跳消息。
MsgHeartbeat当 Leader 被触发广播心跳消息时,会发送该类型的消息给 Follower(sendHeartbeat)
MsgHeartbeatRespFollower 接收到 MsgHeartbeat 消息时,返回该类型消息。
MsgCheckQuorumLeader 自我检查,以判断是否能维持 Leader 状态。
MsgHupFollower 在选举计数器超时时,触发该消息,尝试发起一轮新选举 (tickElection)
MsgProp提案消息,收到这个消息,Leader会将消息保存到raftLog,同时同步给其他节点(msgs)。
MsgApp将msgs中的消息,封装打包成 MsgApp 消息发送给其他节点(maybeSendAppend)。
MsgAppRespFollower 收到 MsgApp 消息时,会响应该类型消息给Leader,以通知 Leader 接收消息成功。
MsgReadIndex一致性读实现(linearizableReadLoop)
MsgReadIndexResp 
MsgUnreachableLeader 同步日志给 Follower 时,如果发送失败,会触发该类型消息
MsgTransferLeaderLeader 被停止时,会选择一个合适的节点,作为下一任Leader节点。然后发送 MsgTransferLeader 消息。
MsgTimeoutNow该消息会触发新一轮的选举。
MsgSnap快照消息
MsgSnapStatusLeader 发送快照消息时,会根据发送情况上报快照发送情况。
MsgPreVote如果开启预选举,那么在选举之前,会发送该消息,进行预选举。(campaign)
MsgPreVoteResp节点收到 MsgPreVote之后,返回 MsgPreVoteResp 已表明当前节点是否可以参加选举。(campaign)
MsgVoteCandidate 发送该消息,其他节点接收到该消息之后,通过一定规则判断是否选举目标节点为 Leader。(campaign)
MsgVoteResp节点将结果通过 MsgVoteResp 返回给 Candidate。(campaign)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

PS:欢迎纠正

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值