MIT 6.824 分布式系统
https://pdos.csail.mit.edu/6.824/
https://www.bilibili.com/video/BV1x7411M7Sf?p=5 (Simviso翻译字幕)
Robert Morrison
RPC, 多线程
I/O concurrency, 同一时间有多个IO任务
Parallelism
Convenience
探活 心跳 重复地执行一些周期性任务
学生问, 这种开销是否值得吗?
爬虫的案例讲解,使用Go
waitGroup ( CountdownLanch )
defer 关键字
GFS, Google File System
分布式系统, 设计初衷是为了性能.
PERFORMANCE 驱动. -->
分治思想 -> SHARDING
故障是必然的,出错怎么办 -> FT (Fault Tolerance )
FT -> REPLICA
副本, 怎么保障一致性? --> CONSISTENCY
保障一致性,就降低性能 -> LOW PERFORMANCE
STRONG CONSISTENCY (强一致性)
先引入一个单节点服务器, 存储了一个KV Hash-Table
副本设计,
再引入第二台节点, 希望是和第一台节点的数据保持一致.
这是一个bad design 没有维护客户端更新数据的顺序.
GFS是怎么解决的?
Distribute, Sharding, FT 在当时的背景下 这些观点并非超前.
但提出了比较新颖的观点, 即不保证永久都返回正确的数据
Google拥有庞大的数据: 网页内容,视频,索引, 所以非常有动机去尝试解决海量数据中的存储与检索问题.
Global
Sharding, 将大型文件分拆成若干份较小的文件块,放在不同的服务器中;
Automatic recovering 自动的自自治愈能力
Single data center
Internal use
Big Sequential access, not random
Master (主节点存储的元数据有什么)
- fileName -> array of chunk handlers
- handle -> list of chunkservers version lease expiration 过期时间
Read
Write
Primary-Backup, Replica
副本解决什么问题, 单点故障
State Transfer Machine
状态转移, 只让备机接收外部的输入,执行既定动作, 备机不维护状态.