ETCD 源码学习--Raft 协议实现的文件说明及 Raft 数据结构解析(三)

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

主要文件说明

在ETCD中,Raft协议实现的源码主要在 etcd/raft 目录下

1.raft.go  实现Raft协议的主要逻辑。

2.log.go  用于维护日志记录,其中包括两部分 log,持久化  log 和 未持久化 log 

3.log_unstable.go 用于维护未持久化 log

4.stable.go  定义存储接口协议,同时实现 MemoryStorage 存储实例

5.node.go & rawnode.go 共同实现 Raf t节点,一个 node 相当于一个 raft 节点。主要做消息转发功能,当有请求时,会调用底层 raft 协议处理,当底层 raft 处理完之后,会将消息封装,然后传递给上层模块处理。

6.tracker/inflights.go  用于维护已发送,但未得到对应节点响应的消息日志记录。

7.tracker/processs.go  用于维护单个节点状态,比如节点活跃状态、已提交的 Index、已匹配的 Index 等。

8. tracker/tracker.go  用于管理所有节点的状态。

9. quorum 目录下的文件,主要用于实现 quorum 机制(过半机制)

10. confchange 目录下的文件,是用于实现在接收的状态机配置变更时,如何实现当前节点的配置变更。

11.raftpb 目录下的文件是消息协议文件(protobuf)

Raft 协议的数据结构

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值