MIT 6.824 基于raft构建KV数据库
文章平均质量分 84
实现raft算法,并且构建上层KV数据库
greyjoy_wh
即将毕业的非科班,努力学习中
展开
-
Lab 2C
中的添加 Xterm Xindex,主要是Xinex 来告诉Leader的nextIndex 该退回到哪里,然后感觉这里的Xterm作用不大(课程上面也有人提到这个的作用是什么,老师回答比较模糊,意思就是取决于你的实现),这里我吧Xterm 为-1的时候表示follower没有任何的log,也就是需要把nextIndex设置为1。的实验的纯代码可能要写就十分钟就写完了,但是测试还是很难全部通过,这边我们不贴全部代码了,还是很简单的。相比于2A与2B的实现多了几处修改的地方,代码放在这里了,可以去看看。原创 2024-04-16 11:21:11 · 275 阅读 · 0 评论 -
raft_guide理解与翻译
因为如果有的心跳RPC由于网络等问题,时过时的心跳RPC,但是有没有错误,这时如果我们截断后面的entry,会导致丧失了很多entry,而leader不知道。当所有的服务器、网络等外部因素都是没有错误的情况下,共识算法都是很好理解的,但是实际的应用中,算法必须考虑到每一个可能发生的错误,而这里面的细节就是相当复杂的。,但是这是可能是错误的,因为在接收和发送RPC之间,服务器可能会有其他的更新操作,所以我们不能直接的使用服务器当前的字段来更新,而应该用我们发送RPC时传入的参数来进行更新相关的操作。原创 2024-04-16 10:04:59 · 326 阅读 · 0 评论 -
Lab2 2A&2B
以及重置选举超时时间。原创 2024-04-16 10:02:08 · 1145 阅读 · 0 评论 -
GFS笔记
虽然改写不会涉及到重新写的问题,但是改写会存在这样的问题:一个改写操作很可能涉及到一个文件多个chunk的改写,如果部分chunk成功,部分chunk失败,我们读到的文件就是错误的!原因是 一个 改写操作可能涉及到多个chunk,而租约决定的控制流只能保证相同chunk副本之间执行的顺序一致,而不同chunk 很可能会选择不同的执行顺序,又一个执行改写会操作多个chunk 所以会导致最终的chunk出现问题。master中的元数据时非常重要的,而GFS选择实现的是单中心节点,而非分布式的中心节点。原创 2024-04-16 09:54:32 · 639 阅读 · 0 评论 -
Lab1 MapReduce
读完谷歌的MapReduce的论文,基本上就会对这个分布式模型设计有了初步的认识,这里就不过多介绍。来具体看看lab1的 任务要求task: 在现有的顺序MapReduce程序中,设计一个分布式的实现。包括coordinator以及worker。worker通过RPC与coordinator通信,每一个woker都会询问一个任务,从文件中读取输入,执行任务,并且将输出写入到files中。原创 2024-04-16 09:52:30 · 932 阅读 · 0 评论