2020 MIT 6.824 分布式系统课程
Posted DataFlow范式
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2020 MIT 6.824 分布式系统课程相关的知识,希望对你有一定的参考价值。
MIT 6.824,笔者在几年前刷完了一遍,过程还是相当折磨人的,但受益颇多。如今已是 2020 年了,这个特殊的一年,笔者想和大家一起拿起小板凳,准备好笔记本,再来完整地学习 MIT Spring 2020 课程。
可能有读者开始脑补了,说了半天,还不知道 MIT 6.824 是什么。
不用担心,笔者下面会详细介绍这门非常有名的网上公开课,对于已经知道的博学的读者就温故而知新吧。
MIT 6.824
MIT 6.824 是麻省理工的一门关于分布式系统的课程,该课程由 12 个单元组成的核心研究生科目,包括演讲、阅读、编程实验室、可选项目、期中考试和期末考试。课程介绍了工程分布式系统的抽象和实现技术,主要主题包括容错、复制和一致性。该课程的大部分内容包括研究和讨论分布式系统的案例研究。
这里插播一条好消息,MIT 2020 年春季学期的课程已经公开了官方视频,方便全世界一起学习,估计有的读者可能回忆起以前 MIT 6.824 那种偷拍的模糊不清的视频。
课程表
先来看一下 2020 年春季 MIT 6.824 的课程表(6.824 Schedule: Spring 2020)。
读者可以直接访问 MIT 官方课程表地址 。
https://pdos.csail.mit.edu/6.824/schedule.html
知识点
为了便于读者是否下定决心参与本门课程学习,笔者将所有课程的知识点概括性地罗列一下,现在不会写的太细,以后针对每门课会有较为完善的笔记,作为参考。
课程 1. 分布式系统介绍
阅读 MapReduce 论文[1] 。
涉及 Lab 1,使用 Go 语言完成 MapReduce 实验。
[1] https://pdos.csail.mit.edu/6.824/papers/mapreduce.pdf
课程 2. RPC 和 Threads
介绍基础实施 RPC 网络通信和多线程,另外 在线练习[1] 使用 Go 实现一些功能,比如爬虫、K/V 存储。另外也可以使用 教程[2] 学习 Go 语言。
[1] http://tour.golang.org/
[2] https://golang.org/doc/effective_go.html
课程 3. GFS
阅读 GFS 论文[1]。
学习 GFS 案例。大部分读者熟悉的 HDFS 最早就是根据 GFS 的论文概念模型来设计实现的。
[1] https://pdos.csail.mit.edu/6.824/papers/gfs.pdf
课程 4. 主从复制
阅读 容错虚拟机实用系统的设计论文[1]。
主从复制实现容错,提供高可用。
[1] https://pdos.csail.mit.edu/6.824/papers/vm-ft.pdf
课程 5. Go、Threads 和 Raft
阅读 Go Memory Model[1]。
介绍 Go 方面的知识,包括内存模型、goroutines 机制和闭包等。
[1] https://golang.org/ref/mem
课程 6. 容错:Raft (1)
阅读 Raft 论文[1]。
分布式共识是一个人们已经研究了几十年的难题,本节课介绍 Raft 选举和 log 处理。记得以前课程好像是 Paxos,比较难理解,笔者把论文看了几遍才懵懂。换成 Raft 相对容易理解,以及易于工程实现。Lab 2A 和 2B 要求基于 Raft 完成实验。
[1] https://pdos.csail.mit.edu/6.824/papers/raft-extended.pdf
课程 7. 容错:Raft (2)
继续阅读 Raft 论文[1]。
本节课介绍 Raft 持久化、客户端交互行为和 snapshots,其中包括 Lab 2C 和 3 的实验。
[1] https://pdos.csail.mit.edu/6.824/papers/raft-extended.pdf
课程 8. Zookeeper
阅读 Zookeeper 论文[1]。
Zookeeper 案例学习。Zookeeper 在大数据生态系统中占据着重要地位,不少产品都使用到了 Zookeeper,比如 Kafka、Hadoop、HBase 等。
[1] https://pdos.csail.mit.edu/6.824/papers/zookeeper.pdf
课程 9. 更多的复制,CRAQ
阅读 CRAQ 论文[1]。
本节课包括 Lab 3 实验,使用 Lab 2 中的 Raft 库构建一个容错的 K/V 存储服务。
[1] https://pdos.csail.mit.edu/6.824/papers/craq.pdf
课程 10. 云复制数据库,Aurora
阅读 Aurora 论文[1]。
Amazon Aurora 全球数据库针对全球分布式应用程序而设计,允许单个 Amazon Aurora 数据库跨越多个 AWS 地区。它在不影响数据库性能的情况下复制数据,在每个地区中实现低延迟的快速本地读取,并且在发生地区级的中断时提供灾难恢复能力。
[1] https://pdos.csail.mit.edu/6.824/papers/aurora.pdf
课程 11. 缓存一致性
阅读 Frangipani 论文[1]。
Frangipani 的目标是强一致性且用户无感知的文件系统,所以运行在 kernel 层。Frangipani 还拥有很好的扩展能力。学习的时候,可以和 GFS 进行对比,会发现很多彩蛋。
[1] https://pdos.csail.mit.edu/6.824/papers/thekkath-frangipani.pdf
课程 12. 分布式事务
提供 阅读材料[1]。
讨论的主题是 distributed transactions = concurrency control + atomic commit 。
[1] https://ocw.mit.edu/resources/res-6-004-principles-of-computer-system-design-an-introduction-spring-2009/online-textbook/
小插曲
期中考试,内容覆盖课程 1 到 11,以及包括 Lab 1 和 2。
课程 13. Spanner
阅读 Spanner 论文[1]。
Spanner 是 Google 公司研发的具备可扩展的、多版本、全球分布式、同步复制数据库。另外,完成 Lab 4,具有分片功能的 K/V 服务。
[1] https://pdos.csail.mit.edu/6.824/papers/spanner.pdf
课程 14. 乐观并发控制
阅读 FaRM 论文[1]。
FaRM 是主内存分布式计算平台,它可以为分布式事务提供严格的 Serializability、高性能、持久性和高可用性。FaRM 在具有 4.9 TB 数据库的 90 台计算机上实现了每秒 1.4 亿个TATP 事务的峰值吞吐量,并且可以在不到 50 毫秒的时间内从故障中恢复,实现这些结果的关键是从最初的原理设计新的事务、复制和恢复协议。
[1] https://pdos.csail.mit.edu/6.824/papers/farm-2015.pdf
课程 15. Fast RPC
阅读 Fast RPC 论文[1]。
在不修改核心 Raft 源代码的情况下,将生产级的 Raft 状态机复制实现移植到 eRPC,在有损以太网上实现了 5.5 µs 的复制延迟,这比使用可编程交换机、FPGAs 或 RDMA 的专用复制系统要快。
[1] https://pdos.csail.mit.edu/6.824/papers/erpc.pdf
课程 16. 大数据 Spark
阅读 Spark 论文[1]。
Apache Spark,大家都太熟悉了,笔者都无从下手了。借用官网一句话描述,Apache Spark 是用于大规模数据处理的统一分析引擎,其实能够做的事情远比描述的多得多。
[1] https://pdos.csail.mit.edu/6.824/papers/zaharia-spark.pdf
课程 17. 缓存一致性:Facebook 的 Memcached
阅读 Facebook 的 Memcached 论文[1]。
Memcached 是一种众所周知的简单的内存缓存解决方案。论文介绍了 Facebook 如何利用 memcached 作为基块来构建和扩展支持全球最大社交网络的分布式键值存储,支持系统每秒处理数十亿个请求,并持有数万亿个 items,为全球超过 10 亿用户提供丰富的体验。
[1] https://pdos.csail.mit.edu/6.824/papers/memcache-fb.pdf
课程 18. 分布式系统因果一致性,COPS
阅读 COPS 论文[1]。
COPS 全称是 Clusters of Order Preserving System。可能大部分读者都熟悉 CAP 理论,然后一小部分读者了解 CAC 理论,最后不知道还有多少人听过 COPS 理论,建议感兴趣的读者脑补一下。笔者所知,有个趋势即 CAP -> CAC -> COPS,通过 COPS 能够获得 ALPS,即 Availability、Low-Latency、Partition-tolerance 和 Scalability。
[1] https://pdos.csail.mit.edu/6.824/papers/cops.pdf
课程 19. 分布式系统因果一致性,FuzzyLog
阅读 FuzzyLog 论文[1]。
FuzzyLog 是一类有向无环图。多个客户端可以并发地构建或遍历它。FuzzyLog 中的每个节点都带有自己的颜色链。每一种“颜色”都是各自区域中的全序集,每个颜色链与别的区通过交叉边构成有向无环图保持。这个对于大部分读者比较陌生,以后读者会比较详细地讲解。
[1] https://pdos.csail.mit.edu/6.824/papers/fuzzylog.pdf
课程 20. Fork Consistency, Certificate Transparency
阅读 Certificate Transparency 论文[1]。
当通过安全连接 (HTTPS) 访问某个网站时,该网站会向浏览器提供数字证书。此证书用于识别该网站的主机名,由已验证网站所有者的证书授权中心 (CA) 签发。只要用户信任相应的 CA,便可信任证书中提供的身份证明。当前模式要求所有用户都必须相信,数百个 CA 组织在为任何网站签发证书时不会出现任何错误。但在有些情况下,人为错误或假冒行为可能会导致误发证书。Certificate Transparency (CT) 改变了签发流程,新流程规定:证书必须记录到可公开验证、不可篡改且只能附加内容的日志中,用户的网络浏览器才会将其视为有效。通过要求将证书记录到这些公开的 CT 日志中,任何感兴趣的相关方都可以查看由授权中心签发的所有证书。这能够促使授权中心在签发证书时更加负责,从而有助于形成一个更可靠的系统。最终,如果使用 HTTPS 的某个网站的证书未记录到 CT 日志中,那么当用户访问该网站时,浏览器可能不会显示安全连接挂锁图标。
[1] https://pdos.csail.mit.edu/6.824/papers/ct.pdf
课程 21. 点对点:Bitcoin
阅读 Bitcoin 论文[1]。
区块链是目前热门的技术,通过分布式账本技术和共识机制,构建了低成本互信机制。区块链三个根本特性是去中心化、实现点对点的价值传递和低成本信任机制。当然提到区块链,比特币(Bitcoin)是无法绕过去的,带动了整个币圈的风起云涌,跌宕起伏,欲知详情可以咨询一下身边的币圈大佬。
[1] https://pdos.csail.mit.edu/6.824/papers/bitcoin.pdf
课程 22. Blockstack
阅读 Blockstack 技术白皮书[1]。
无须多说,看了就明白,至于是不是未来区块链和互联网的信息接口,就需要深入领悟了。之后,大家可以根据自己的想法做一个期末项目,也可以做 Lab 4。
[1] https://pdos.csail.mit.edu/6.824/papers/blockstack-2017.pdf
课程 23. 项目演示
阅读 AnalogicFS 经验性的论文[1]。
[1] https://pdos.csail.mit.edu/6.824/papers/katabi-analogicfs.pdf
是不是,瞬间感觉不好了,不过要相信终有拨云见日时。
课程相关材料
MIT 2020 年春季 Distributed Systems 课程,如上面笔者介绍,一共有 23 节课程,从 分布式系统起始讲起,历经 MapReduce、GFS、主从复制、容错、Spark 等,一直讲到近来备受关注的区块链技术,基本覆盖了当前分布式系统技术基础。
根据 MIT 开放出的课程安排,在 2020 年春季课程中,基本每堂课上课之前,都需要读相关技术经典论文,Lab 一共有 4 个,分成了 8 个部分。
在布置的 Lab 作业中,官网都会提供代码框架以及测试代码,根据课程指南进行下载实验。另外需要说明的是,每个 Lab 都有若干个 Part(比如 Lab 3A/3B),每个 Part 都会有一个大致的代码框架和完整的测试代码。
课程视频官方地址:
https://www.youtube.com/channel/UC7WrbZTCODu1okfUMq88g
技术爱好者在 B 站提供了有英文字幕的课程视频:
https://www.bilibili.com/video/av87684880
总结
2020 年是充满机遇和挑战的一年,也是饱含希望的一年,大家加油。
Ok, that's all for today. See you next time.
☆ END ☆
你若喜欢,点个在看哦
以上是关于2020 MIT 6.824 分布式系统课程的主要内容,如果未能解决你的问题,请参考以下文章
MIT 6.824 Distributed System Lecture 1阅读笔记
MIT 6.824学习笔记 2: RPC and Threads