如何才能更好的学习 MIT 6.824 ?

如何才能更好的学习 MIT 6.824 ?

大名鼎鼎的 MIT 6.824 在今年终于放出了官方视频课程,这门课对于分布式系统入门来说是公认的神课。我是去年刷完的这门课,从一个门外汉开始自学,自己读 paper 和做 lab,实验的难度对我来说还是比较大的,尤其是 Lab2 实现 Raft,在工作之余搞了差不多一个月。我总结了之前自己单兵作战的一些资料和经验,给新入坑的同学做个参考。

英文不好怎么办?

和各路大神不同,我的英文还是比较捉急的,但课程的 notes、paper、question、lab 等都是英文描述的,大段大段的英文容易让人畏惧,同时阅读的时候也容易走神。但计算机领域的好东西都是英文的,这个问题只能迎难而上,不过痛点还是有解决办法的。

视频有了,但听不懂咋办?

视频课程是有了,但我相信和我一样听不懂的同学不会少,在此感谢国内的字幕组,我找到了一个中文版翻译视频:

【MIT 6.824 Distributed Systems Spring 2020 分布式系统 中文翻译版合集】_哔哩哔哩 (゜-゜)つロ 干杯~-bilibiliwww.bilibili.com

还在慢慢更新,也希望更多有能力的小伙伴可以参与翻译。

配合中文翻译来看英文描述。

由于课程每年都在更新,翻译版本必然有滞后性,翻译准确度也是一个问题,但是作为辅助帮助理解与讨论,也是不错的。

github.com/chaozh/MIT-6

实验做不出怎么办?

首先,非常不建议直接照着别人完成的作业实现!这样就没有上这门课的必要了。你可以看 consul raft[2] 实现,看 etcd raft[3] 实现,看别人的博客讨论,就是不要去 github 上搜代码!

lab 1 算是小试牛刀,到了 lab 2 难度会比较大,针对 raft 的实现有一些方法和资料可以参考。

我们要添加代码的地方,都有注释!

除了 lab 的说明,要添加代码的地方都有注释告诉你要大概应该怎么做。而 raft 的实现如果注释没有太多的说明,那就重复地看论文里的这张图:

测试驱动开发,建议先看测试代码 test_test.go

测试文件是个很好的帮助,不知道怎么实现的地方可以从理解测试文件开始,想想到底是要测哪些东西,测试驱动开发,能更好的知道卡在了什么地方,帮助你通过测试。

其它的一些资料

这些都是网上出现得比较多的资料了,助教给出的一些指南:

还有什么要补充的?

Paxos 还是要看的

个人觉得学了这些东西以后,如果想要继续在分布式方面发展,还是要看看 paxos 的,毕竟 Google Chubby 的作者 Mike Burrows 说过:

这个世界上只有一种一致性算法,那就是Paxos

还要继续分布式发展?

可以先从国内的 TiDB 和 TiKV 开始,有着丰富的中文资料和教程,也有很多简单的、容易上手的 issue 去等着你提 PR,是在开源方面刷脸的好项目!

References

[1] MIT 6.824 Distributed Systems Spring 2020 中文翻译版合集: bilibili.com/video/av91
[2] consul raft: github.com/hashicorp/ra
[3] etcd raft: github.com/etcd-io/etcd
[4] Instructors' Guide to Raft: thesquareplanet.com/blo
[5] Students' Guide to Raft: thesquareplanet.com/blo
[6] Raft Q&A: thesquareplanet.com/blo


欢迎关注我的公众号:

编辑于 09-07

文章被以下专栏收录