MIT 6.5840 分布式系统怎么学:22 讲结构、5 个 Lab 与阅读顺序

教程资源2小时前发布 一方
1 00

MIT 6.5840 是 MIT 开设的研究生分布式系统课,课程站公开了讲义、论文清单与五个编程实验。它不按教材讲,主体是读论文、讨论案例,再把 Raft、分片这类机制写成能跑的 Go 代码。

课程定位:12 单元,讲原理也写代码

官方把它定义为 12 unit 的研究生核心课,包含讲座、阅读、编程实验、可选项目、期中与期末。2026 年春季的上课时间是周二、周四 13:00–14:30,教室在 54-100。

先修要求写得很具体:6.1910(原 6.004),加上 6.1800(原 6.033)或 6.1810 其中之一,或同等背景,还需要相当的编程经验。没写过并发程序的人,前两周就会卡在 Lab 1 的锁与 RPC 上。

课程编号在 2023 年前是 6.824,现在叫 6.5840,旧编号的域名仍指向同一个站。讲义、论文与实验说明都放在 课程主页,搜资料时两个编号会同时出现,内容以当年的日程为准。

课程结构:22 讲、5 个 Lab、两场考试

MIT 6.5840 课程表:2026 春季 22 讲与各 Lab 截止日期
截图来源:pdos.csail.mit.edu(2026-11-09)

2026 年春季的 日程表 从 2 月 3 日排到 5 月 12 日,共 22 次课,最后一次是项目演示,其余 21 次各有对应的论文或讲义。两次考试不设补考或替代时间,选课时要避开冲突。

组成数量与范围说明
讲座22 次,含 1 次项目演示周二、周四各一次
阅读21 篇论文或讲义上课前读完,课前 24 小时有思考题
实验5 个,含 3A–3D、4A–4C、5A–5D每周或每两周一个截止
考试期中、期末各一场期中覆盖 LEC 1–11 与 Lab 1/2/3A–C
评分40/20/20/15/5Lab、期中、期末、check-off、论文题

评分细则值得单独看一眼:实验占 40%,期中 20%,期末 20%,五次实验口试占 15%,论文问题占 5%。口试是随机抽 lab,助教会追问你的代码为什么这样写,光让测试变绿不够。细则写在 课程信息页。

迟交额度总共 72 小时,可以自行分配在 Lab 1、2、3、4 与 5A 上;5B–D 与项目不能用。超过 72 小时但在停课前提交,按半分计;停课之后不再收。

阅读顺序:论文在课前读完,Lab 与讲次错开

官方要求上课前读完当次论文,并在开课前 24 小时回答一个问题;答案一两段即可,会计入那 5%。这个设计逼着人把论文读到能复述的程度,而不是只记住名词。

21 次阅读里,MapReduce、GFS、Raft 三篇是后面实验与考试反复引用的基础,Paxos 与线性一致性两讲则是理解 Raft 的前提。每篇论文配一份 FAQ 与思考题,讲义是纯文本的 l-*.txt,卡住时先看 FAQ。

整学期的阅读可以分三段:

  1. 第 1–4 讲:MapReduce、RPC 与线程、GFS、Paxos。这一段建立“分布式系统在解决什么”的框架,同时把 goroutine、channel 与 RPC 用熟。
  2. 第 6–11 讲:Raft 两讲、线性一致性、ZooKeeper、分布式事务。Raft 是整门课的重心,Lab 3 的四个子部分都压在这里。
  3. 第 12–21 讲:Spanner、链式复制、FaRM、Memcached、Lambda、Ray、SUNDR、Bitcoin、BFT。这一段是案例巡礼,期末范围也按这里划。

不建议按 Lab 顺序读论文。Lab 1 在开学第二周就布置,而 GFS 与 Paxos 要到第三、四讲才讲;先做实验再回看论文,很多设计取舍才对得上。若需要一套按课时与前置关系排课的方法,站内 Kaggle Learn 的学习顺序 可以借用思路。

Lab 怎么排:五个实验的依赖与难度

五个 Lab 是递进的,后一个默认前一个已经可靠。官方只给难度区间,具体耗时取决于并发调试的经验。

Lab内容子部分依赖
1MapReduce,协调者与 worker,失败重发无无
2单机键值服务,处理重复请求无无
3Raft:选主、日志复制、持久化、快照3A / 3B / 3C / 3DLab 1 的 RPC 经验
4在 Raft 上做线性一致的键值服务4A / 4B / 4CLab 3
5分片键值:配置控制器与分片组5A / 5B / 5C / 5DLab 3、4

Lab 1 的 实验说明 给了具体骨架:git clone git://g.csail.mit.edu/6.5840-golabs-2026,测试用 make mr。协调者在十秒内没收到任务完成就重发给别的 worker,这个超时值写在实验说明里。

Lab 3 是分水岭。测试会反复杀服务器、丢包、乱序、分区,跑一次通过不算通过,通常要连续跑很多轮才敢提交。很多人在这里第一次体会到结构化日志比断点有用;Go 手感不稳时,可以先用 Exercism 的 Go 练习 补几道。

最后一个 Lab 与期末项目二选一。项目要两三人组队,提前交提案并经批准,停课前交报告与代码,还要在课上做演示。口试只抽五次,却单列 15%,意味着每个 Lab 都要能讲清状态机与超时处理,而不是只留一份能跑的代码。

时间与版本落差:200 小时、Go 1.22 与逐年变的骨架

课程按 12 unit 计,按 MIT 的 unit 口径大致是每周 12 小时投入,含上课与实验。第三方课程目录站 给的自学估算是 200 小时,与“一个学期、每周十小时以上”对得上。

语言只用 Go,环境页 要求 1.22 或更新版本。Windows 需要 WSL 2 加 Ubuntu 24.04,WSL 1 不行;实验在 Athena 集群上跑不起来。

骨架按年份发布,2026 版是 6.5840-golabs-2026。网上的攻略多基于旧骨架,一份学习仓库 整理称,2026 的 Lab 2 改成带 version 的键值服务,Lab 4 先实现通用 rsm,Lab 5 引入 shardgrp 与 shardkv1。照旧文抄目录名,会找不到文件。

考试范围也按讲次切。期中只考 LEC 1–11 与 Lab 1/2/3A–C,期末只考 LEC 12–21 与 Lab 3D/4A–C;拿错年份的真题,范围会对不上。

课程首页列出了 2025 到 2000 年的历年入口,切换时整页一起换。录像可以看旧版,讲义与实验骨架要跟当年。

适合谁:先修、放弃条件与常见问题

适合想进基础设施、存储、数据库方向的工程师,也适合需要把共识算法从“背过”变成“写出来”的人。课程资料免费公开,但没有证书,也没有官方答疑与成绩。

不适合三类人:只想听懂概念、不打算写代码的;Go 与并发都没碰过的;这段时间抽不出每周十小时的。把讲义当科普读,收益会远低于动手做 Lab。

时间确实紧张时,可以只做 Lab 1 与 Lab 3A:前者覆盖任务分发与失败重发,后者覆盖选主与心跳,两段做通,再读后面的论文不容易飘。

建议的自学顺序:

如果命令行与 Git 还不熟,先补站内的 Missing Semester,再进 Lab 会顺很多。

  1. 先过一遍 Go 官方 tour,写一个带锁的并发计数器与一个 RPC 小例子。
  2. 读 MapReduce 论文,做 Lab 1,把测试跑到多轮稳定通过。
  3. 读 Raft 论文的前半部分,做 Lab 3A 与 3B,再补 3C、3D;每改一次都跑十遍测试。
  4. 之后接 Lab 4 与 Lab 5,最后按兴趣补案例论文。

常见问题

没有 MIT 学籍能学吗?能。讲义、论文、Lab 说明与测试都在公开站点,只是没有学分、成绩与口试环节。

需要买教材吗?不需要。课程以论文与讲义为主,首页没有指定教材;论文清单就是阅读主线。

可以用别的语言做 Lab 吗?不行。测试框架与代码骨架都是 Go,换语言等于自己重写一套验收标准。

Lab 代码能公开吗?官方明确要求不要发布,GitHub 仓库默认公开,建议建私有库,别影响后续选课的人。


相关地址

以下为课程官方入口,讲次、实验与版本以这些页面为准。

  • MIT 6.5840 课程主页:https://pdos.csail.mit.edu/6.824/
  • Spring 2026 课程日程:https://pdos.csail.mit.edu/6.824/schedule.html
  • 课程信息与评分规则:https://pdos.csail.mit.edu/6.824/general.html
  • Lab 1: MapReduce:https://pdos.csail.mit.edu/6.824/labs/lab-mr.html
  • Go 环境设置:https://pdos.csail.mit.edu/6.824/labs/go.html
  • 2026 实验骨架(Git):git://g.csail.mit.edu/6.5840-golabs-2026
© 版权声明

相关文章