08 2021 档案

摘要:存储和节点的创建 raftexample中的存储其实有两种,一个是通过raft.NewMemoryStorage()进行创建的raft.raftStorage,关联到单个raft节点,另一个是通过newKVStore创建的kv存储,用于服务来自外部的访问。 节点启动时raft.raftStorage 阅读全文
posted @ 2021-08-30 09:18 charlieroro 阅读(929) 评论(0) 推荐(0) 编辑
摘要:本文仅介绍wal的基本处理,如create、open、close、read等操作,从wal目录中加载snapshot,wal文件的创建,以及读取wal目录中的所有数据(主要是entryType、stateType、metadataType这几类)和接收到node.Ready()之后的写操作。 WAL 阅读全文
posted @ 2021-08-10 23:47 charlieroro 阅读(921) 评论(0) 推荐(0) 编辑
摘要:本章给出了raftexample中使用的传输层代码,补全了上一节中传输层与raft节点(raft server和channel server)的交互细节。下图中流程的核心在于传输层中的streamRt和pipelineRt,raft的传输层通过这两个roundtrip与其他节点交互,并通过strea 阅读全文
posted @ 2021-08-05 09:25 charlieroro 阅读(251) 评论(0) 推荐(0) 编辑
摘要:最近在看raft相关的代码和实现,发现etcd的raft模块在实现上还是比较灵活的,但缺点就是需要用户实现比较多的功能,如存储和网络等,同时带来的优点就是不会对用户的存储和传输作限制。网上对该模块的描述也比较多,这里我主要根据代码画出简易的处理逻辑,代码逻辑可以参考这里(后续流程图也会按照这个系列的 阅读全文
posted @ 2021-08-03 22:04 charlieroro 阅读(549) 评论(0) 推荐(1) 编辑