长话短说, 开刷MIT6.824这个经典的分布式系统课程, 基于2020年春季最新课程. 作为学习笔记记录心得, 实践部分可能得单开一个大系列了
0x00. 前言
学习脉络主要是:
- 官方教课 (lectures)
- 看对应的资料 (paper)
- 做实验(Lab)
- 思考
然后分布式我对它的理解感觉还不够系统, 希望通过MIT的这门课来重新认识分布式.
前置课程有经典的6.828(OS), 之后也会一并补上. 当然, 最基本的, 在6.824的课程中, 至少要掌握:
- 基本的Go语言编程 (Online Go tutorial)
- 基本的OS知识
0x01. 序章
这一章对应视频1~4 (课程简介), 介绍为什么要学习分布式课程, 以及分布式的核心三个分支: 存储, 计算, 通信
1.为什么需要分布式
关键词: 并行(parallelism), 容错(fault tolerance)
A. 并行
在并发编程的时候大家都知道, 并行是理想情况的并发, 真正的多资源做事, 而分布式就是简单来说的多人协同, 天然的具有并行的特点.
- CPU
- 内存
- 磁盘
这是最常见的三种资源, 人们希望可以像孙悟空聚集元气弹一样, 把分散在各处的机器资源整合起来使用, 想想都非常令人振奋.
B. 容错
- 超时机制
- 熔断机制
C. 难点
- 快速阅读Paper
- Lab实验
- trade-off
2. 课程大纲
整体的进程安排和教案可以参考此. 会详细说明每次课前需要自行阅读的资料.
A. Paper
核心基础是Google三篇论文, 奠定了分布式的根基.
- GFS
- MapReduce
- BigTable (暂未引入)
Official Paper Question Website
B. Lab`
- MapReduce: 自己实现MR
- Raft: 理解并实现Raft
- K-V Store Basic: 核心是实现基本分布式的可用/容错性
- K-V Store Final: 核心加入了Shard
其他的项目参考, 算是进一步的拔高了.
C. Exam
考试很良心的把近10几年的都列了出来, 并且带有PDF题目/答案版, 建议把近3~5年的都做一下.
0x02. MapReduce
高性能的系统, 一般都要尽可能避免过多写入传统非易失性存储 (HDD/SSD), 简单说就是避免落盘, 因为从内存到磁盘的速率会暴跌几个数量级, 而且磁盘还有很明显的IOPS瓶颈, 这也是为什么内存类数据库, 以及内存计算组件会大受欢迎的原因, 单说性能肯定好得多.
参考资料:
