![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Mit6.824
文章平均质量分 74
leeleezl
这个作者很懒,什么都没留下…
展开
-
Raft 协议
Raft 使用一种心跳机制来触发领导者选举。原创 2024-03-21 11:21:29 · 926 阅读 · 1 评论 -
【Mit6.824】实验-Lab4-Shard KV Service
shardCtler 是一个分片控制器原创 2024-03-06 15:27:24 · 937 阅读 · 0 评论 -
【Mit6.824】实验-Lab3- KV Service
lab3A需要在lab2的raft基础上封装一个应用层,完成服务端和客户端的逻辑,实现一个分布式kv数据库,实现put,get,append功能。以下Op所代表的是put,get,append操作。原创 2024-03-06 15:25:38 · 393 阅读 · 0 评论 -
【Mit6.824】实验-Lab2D-Raft 日志压缩
对于一个长期运行的服务来说,永远记住完整的 Raft 日志是不切实际的。如果没有压缩⽇志的⽅法,最终将导致可⽤性问题:即服务器存储空间不⾜,或者 启动时间太⻓。因此,任何实际系统都需要某种形式的⽇志压缩。原创 2024-03-06 15:21:28 · 329 阅读 · 0 评论 -
【Mit6.824】实验-Lab2C-Raft 持久化
通过添加保存和恢复持久状态的代码,完成raft.go中的persist()和函数,需要将状态编码(或“序列化”)为字节数组,以便将其传递给Persister。使用labgob编码器。根据Raft论文,我们只需要持久化 currentTerm, votedFor 和 logs 三个数据。persist():将状态持久化到磁盘中:当节点重启时,会重新读取状态恢复在更改 currentTerm, votedFor 和 logs 的地方我们都需要调用persist()方法进行持久化。原创 2024-03-06 15:18:24 · 378 阅读 · 0 评论 -
【Mit6.824】实验-Lab2B-Raft 日志复制
一旦领导者被选举出来,他就开始为客户端提供服务,客户端的请求包含一条被复制状态机执行的指令,领导者把这条指令作为一条新的日志条目附加到日志中去,然后并行的发送RPCs给其他服务器。原创 2024-03-06 15:17:31 · 442 阅读 · 3 评论 -
【Mit6.824】Lab2A-Raft 领导人选举
每次请求和响应时,都要先判断,如果 term > currentTerm,要转换角色为 Follower每个 term 只能 voteFor 其他节点一次candidates 请求投票时间是随机的,注意随机性得到大多数选票后立即结束等待剩余RPC成为 Leader 后要尽快进行心跳,否则其他节点又将变成 Candidate。原创 2024-03-06 15:16:16 · 880 阅读 · 0 评论 -
【Mit6.824】Lab1 MapReduce
MapReduce的思想是,应用程序设计人员和分布式运算的使用者,只需要写简单的Map函数和Reduce函数,而不需要知道任何有关分布式的事情,MapReduce框架会处理剩下的事情。Map函数使用一个key和一个value作为参数。入参中,key是输入文件的名字,value是输入文件的内容。Reduce函数的入参是某个特定key的所有实例(Map输出中的key-value对中,出现了一次特定的key就可以算作一个实例)。原创 2024-03-06 15:12:51 · 358 阅读 · 0 评论