kvraft_with_snapshots_Lab3B
发布时间
阅读量:
阅读量
mit_6.824_2021_lab3B_kvraft_with_snapshots
Part B: Key/value service with snapshots
在完成 lab3A 的基础上,接下来增加了键值存储服务的快照功能,这部分代码量较少,主要涉及对 lab3A 以及 raft 模块的一些细节调整,使整体代码结构更加清晰易读。然而,在实现过程中发现了一个与 raft 初始化相关的错误,导致一时陷入停滞,不过这一问题的解决也进一步加深了对 persist 部分机制的理解。
实验内容概述
首先需要明确的是,当服务器重启后,会执行一次完整的Raft日志以恢复其原有状态。然而,Raft日志的长度不可能无限增长(这一点与lab2D相同);
为节省存储空间,可以借助Raft提供的Snapshot()方法以及lab2D中的CondInstallSnapshot机制;
在启动服务器时,需将maxraftstate参数传递给StartKVServer()函数。其中,maxraftstate用于定义持久化Raft状态所允许的最大字节数(包含raftState内容,但不包含快照数据)。通过将该参数与persister.Raftstatesize()进行对比,可判断是否达到限制;
一旦KV服务器发现持久化的Raft状态接
全部评论 (0)
还没有任何评论哟~
