介绍下Martin Kleppmann博士在剑桥上开的课程Distributed Systems。这个课程可以认为是Martin Kleppmann对《数据密集型应用系统设计》这本书的一个补充。感兴趣的可以关注:
- 提纲:https://www.cst.cam.ac.uk/teaching/2021/ConcDisSys
- 视频地址:https://www.youtube.com/playlist?list=PLeKd45zvjcDFUEv_ohr_HdUFe97RItdiB
这个课程主要是研究分布式系统的基本特征,包括分布式系统的模型和体系结构、用于构建分布式系统的具体技术、分布式系统使用的算法和分布式系统的具体细节。
下面是这个课程的目录:
- 分布式系统简介和RPC协议:分布式系统的优点和遇到的挑战;无法预测的延迟和部分故障;网络协议;透明性(分布式系统中各个单独模块对用户和应用程序员的进行了高度封装); 客户-服务器系统;远程过程调用(RPC);编码(发送消息时的数据格式); 接口定义语言(IDL)。
- 系统模型和故障。同步,半同步和异步网络模型;崩溃停止,崩溃恢复和拜占庭故障;错误,故障和容错能力;两个将军问题( The two generals problem)。
- 时间,时钟和事件的有序性:物理时钟;世界标准时间; 时钟同步,漂移和补偿;网络时间协议(NTP)、逻辑时间;happens-before关系;Lamport 时钟;矢量时钟。
- 复制:容错能力。基于单领导者的,多领导者和无领导者的复制;仲裁系统;复制一致性;线性化;CAP定理;最终一致性;Session Guarantees。
- 中间件和协议:处理群组;FIFO,因果顺序和完全顺序广播;面向消息和面向对象的中间件;分布式互斥。
- 共识和分布式事务:领导人选举;共识;FLP结果;Paxos和Raft;状态机复制;分布式交易;原子提交协议;2阶段提交。
- 实例探究:网络文件系统(NFS);亚马逊的Dynamo;Google数据中心技术(例如MapReduce,Spanner);云计算服务。
- 高级主题:无冲突的复制数据类型(CRDT);拜占庭容错;对等系统;分布式系统的安全性。
从目录中可以看出,这个课程基本上包含了分布式系统的方方面面。听完前两节课,我感觉Martin Kleppmann博士的这个课程相比于MIT的分布式系统课程,更为通俗易懂。
因为这个课程质量非常高,后面本公众号会持续更新关于这个课程的笔记和一些实践,以飨读者。


