
mit_6.824_2021
文章平均质量分 93
mit 6.824 2021 公开课
一把健
专硕如何在中山大学毕业呢?
展开
-
mit_6.824_2021_lab4B_Sharded_Key/Value_Server
mit_6.824_2021_lab4B_Sharded_Key/Value_Server最后,构建一个分片的 kv 容错系统;感觉比 lab2 更难理解,因为 lab2 有一个模板论文可以参考,但是 lab4b 基本没有一个固定的范式Part B: Sharded Key/Value Server每个 shardkv server 相当于副本组的一部分,每个副本组相当于 lab3,都支持Get, Put, Append操作,当然它们各自仅维护各自的分片;客户端使用key2shard()去找到一个原创 2021-12-21 15:17:10 · 1086 阅读 · 0 评论 -
mit_6.824_2021_lab4A_The_Shard_controller
mit_6.824_2021_lab4A_The_Shard_controllerlab4 系列除了构建一个 键值存储系统,还需要将系统按键 分片(shard) 或对一组副本进行分区;分片的策略有很多,比如:所有以 “a” 开头的键是一个分片,所有以 “b” 开头的键是一个分片,等等为什么需要分片?从性能考虑,每个副本只处理一部分分片的 put 和 get,并且这些副本之间是支持并行操作的;因此,系统的总吞吐量和副本的数量成比例增加shard kv 系统组成分片键值对存储系统将由两个组件组成;首原创 2021-12-07 20:22:47 · 586 阅读 · 0 评论 -
mit_6.824_2021_lab3B_kvraft_with_snapshots
mit_6.824_2021_lab3B_kvraft_with_snapshotsPart B: Key/value service with snapshots紧接着 lab3A,将键值存储服务的快照功能加上,这里的代码量不多,主要是对lab3A,和 raft 一些细枝末节的改动,让整体代码更可读,但还是发现了一个 raft 初始化的 bug,导致自己卡了一会,不过也加深了自己对 persist 这一部分的理解实验内容首先要知道,重启的服务器会执行一次完整的Raft日志以恢复其状态,但是,raf原创 2021-11-24 21:55:29 · 480 阅读 · 0 评论 -
mit_6.824_2021_lab3A_kvraft
mit_6.824_2021_lab3Amit_6.824_2021_lab3A_kvraftlab3 系列是将此前写好的 lab2 的 raft 库加以调用,在此基础之上实现上层的状态机,即 service 层;所以,lab2 写得不好,lab3 怎么也过不去,故需要确保 lab2 基本万无一失;但是在此基础上,还需要依靠 service 层实现线性一致性,lab3 工作量不大,但是还是需要有良好的设计参考了网上的部分博客和思路https://blog.youkuaiyun.com/qq_40443651原创 2021-11-21 20:36:54 · 1829 阅读 · 0 评论 -
mit_6.824_2021_lab2D_log_compaction
mit_6.824_2021_lab2D_log_compactionlab2D 主要是日志压缩功能,实验里是采用论文的最简单的方式,snapshot 压缩快照,并且更简单的是不分块的形式;感觉主要有两点需要注意:快照功能的加入对原有逻辑的修改快照功能的流程(InstallSnapshot, Snapshot, CondInstallSnapshot, applyCh)lab2D_log_compaction实验内容要实现快照功能,需要实现 Snapshot、CondInstallSnap原创 2021-10-17 17:12:19 · 816 阅读 · 0 评论 -
mit_6.824_2021_lab1_mapreduce
mit 6.824 2021 lab1 mapreducelab1 mapreduce实验:https://pdos.csail.mit.edu/6.824/labs/lab-mr.html实验结果源码:https://github.com/SwordHarry/mit6.824实验背景mapreduce paper: https://static.googleusercontent.com/media/research.google.com/zh-CN//archive/mapreduce-原创 2021-07-17 23:39:35 · 869 阅读 · 2 评论 -
mit_6.824_2021_lab2C_persistence
mit_6.824_2021_lab2C_persistencepersistence 引入持久化,持久化的相关代码已经在 persister.go 中实现,我们要做的只是调用 api 就好,相对容易的一节;但同时也是不容易的一节,因为这一节中有两个关于 图8 的网络崩溃节点崩溃实验,基本都会出 bug,出 bug 基本都是因为 lab2A 和 lab2B 引入的 bug;本人也因为 lab2B 引入的 bug 导致在 lab2C 卡了很久;这里阐述一下自己的心路历程lab2C_persistenc原创 2021-10-15 20:36:56 · 421 阅读 · 0 评论 -
mit_6.824_2021_lab2B_log_replication
mit_6.824_2021_lab2B_log_replicationlab2B,日志复制,我愿称之为 raft 核心中的核心,细节爆炸????,细节都在魔鬼中还是需要将 Fig2 完全实现,并且将 5.3 和 5.4节完全实现,这里我在实现的时候顺便把 nextIndex 优化给做了,具体实现可以直接在助教的 guide 中直接找到lab2B:log replication实验内容实现 leader 和 follower 的相关代码以实现日志追加,用go test -run 2B -race进原创 2021-10-13 17:11:50 · 675 阅读 · 2 评论 -
mit_6.824_2021_lab2A_leader_election
mit_6.824_2021_lab2A_leader_election做完 lab2 之后回来写系列文章总结如果说 lab1 的 mapreduce 是用来入门分布式系统课程的,那么 lab2 开始就是课程设计的真正开始lab2 系列为 raft 分布式一致性协议算法的实现,论文 extended Raft paper 更是要反复看,尤其是 Figure 2,以及第五章节的一些实现细节raft 将分布式一致性共识分解为若干个子问题,lab2 系列也随之挂钩:leader election,领原创 2021-10-10 23:46:21 · 596 阅读 · 1 评论