磨蹭 3 个月,神课分布式系统 MIT 6.824 终于完结了。学习这门课的起因是被同年 6 月份 pingCAP 训练营橄榄了,虽然同为 raft 算法,但工业级的实现显然要比教学级难更多。我对分布式的理解还是太浅,于是决心从基础打起,好好体会一下这门神课的洗礼。
课程架构
该课程由神级程序员 Robert Tappan Morris 讲授。整门课程共有 22 节课,共需进行 16 篇论文的阅读。除去最后涉及到系统安全的部分本人因为不感兴趣没看,对其余所有论文都做了适当解读。
- MapReduce:一种基于策略,用于处理和生成大型数据集的模型。
- GFS:一个用于大型分布式数据密集型应用程序的可扩展分布式文件系统。
- VMware-FT:一个提供容错虚拟机的商业企业级系统。
- Raft:一种基于多数原则的用于管理复制日志的共识算法。
- Zookeeper:用于协调分布式应用程序进程,同时提供消息群发、共享寄存器和分布式锁等集中式服务。
- CRAQ:一种以读取为主的工作负载的高吞吐量链式复制。
- Aurora:一个高性能,高可靠的关系数据库服务。
- Frangipani:一种建立在 Petal 上的可扩展的分布式文件系统,并使用分布式锁来确保一致性。
- Spanner:Google 基于 TrueTime 的可扩展、多版本、全球分布和同步复制的数据库。
- FaRM:一个通过为分布式事务提供序列化、高性能、持久性和高可用性的主存分布式计算平台。
- Spark:一个基于弹性分布式数据集的容错数据处理框架,能够帮助用户简单的开发快速,统一的大数据应用,对数据进行,协处理,流式处理,交互式分析等。
- Memcache:一款高性能的分布式内存对象缓存系统,以低成本提供对共享存储池的低延迟访问,并在 Facebook 手下得到了拓展。
- COPS:一种可提供具有收敛冲突处理的因果一致性的 ALPS 键值存储系统,并且具有高可扩展性。
另外,本课程设计了 4 个 lab。分别为
我的实现通过所有 test,将代码 push 在了我的 github 仓库中,并写了说明文档:
学习感悟
每节课看一篇论文对我而言还是比较硬的,但确实能够从中学到许多知识,复制、容错、一致、性能优化……这些无一不是分布式领域中的人类思想的精华。在进一步经历了 4 个 lab 的虐待后,无论是对 go 还是对整个分布式系统的实现都有了更深的认识。这也难怪 MIT 的学生一直以来都是各大互联网企业争相抢夺的人才资源,能够把这门课完整的学下来已经能让一个人进步非常多了。