mit_6.824_2021_lab2D_log_compaction
lab2D 主要是日志压缩功能,实验里是采用论文的最简单的方式,snapshot 压缩快照,并且更简单的是不分块的形式;感觉主要有两点需要注意:
- 快照功能的加入对原有逻辑的修改
- 快照功能的流程(InstallSnapshot, Snapshot, CondInstallSnapshot, applyCh)
lab2D_log_compaction
实验内容
- 要实现快照功能,需要实现
Snapshot
、CondInstallSnapshot
和InstallSnapshot RPC
- 还需要继续使用修剪后的日志进行操作
- lab3 将会对 lab2 更彻底地测试快照功能,因为会压测
实验提示
- 在单个
InstallSnapshot
RPC 中发送整个快照。不用分块和 offset - Raft 日志不能再使用日志条目的绝对位置或日志的长度来确定日志条目索引;您将需要使用独立于日志位置的索引方案。
- 即使日志被修剪,仍然需要在
AppendEntries
RPC 中的新条目之前正确发送条目的术语和索引;这可能需要保存和引用最新快照的lastIncludedTerm/lastIncludedIndex
,且两者需要考虑被持久化 - 使用
persister.Save