我觉得分布式系统这一块其实没有一个非常清晰的知识图谱,更多的是人们遇到了不同的问题,给出了不同的解决方案。所以要说非常经典和基础的文章很难。凑巧的是这学期上了一门我们系陈康老师分布式系统导论的课,每节课讲一两篇论文,很有意思,收获很大。所以在这里分享一下课程中涉及到的论文,未必切合题主要求,仅供参考。
1. GFS。google三驾马车之一,分布式文件系统。毋庸置疑,这应该是分布式系统领域最经典的文章,几乎所有分布式、存储和大数据相关的topic都要提到它。
2. BigTable。google三驾马车之一,经典的分布式key/value store。我的理解这类应用为一个简化版的。在实现上类似于操作系统的多级页表。经典分布式计算模型
3. Dynamo。Dynamo是Amazon开发的一套分布式key/value store,但是从设计到属性都和Bigtable相差很远。里面首次提出著名的DHT(分布式哈希表),可以在系统增减节点时迁移代价更低。
3. MapReduce。分布式计算框架。也是google三驾马车之一。把所有的分布式操作抽象成Map和Reduce两类,使得编程非常简单。只需要实现这两个接口就行了。这应该是最早地最有影响力的提出了分布式计算框架,把程序员从裸写mpi程序中解放出来。
4. Spark。分布式计算框架。现在也是大数据时代的宠儿,应该和MapReduce是应用的最广的两个计算框架了。MapReduce每一轮迭代都是在硬盘上,Spark是在内存中,所以速度可能快上两个数量级。
5. Dryad。是微软出的一个分布式计算框架,提出的时间很早,可惜影响力不如前两者。它提供的接口是把分布式计算流程抽象成一个有向无环图,程序员实现每个节点的计算和边的数据传输即可。比MapReduce复杂,但是也更灵活。
6. Raft。Raft是14年提出的一个一致性协议。用来取代Paxos,因为后者实在太复杂,太难以理解。(lamport表示你们都是渣渣)。分布式系统一个经典的模型就是副本状态机,Raft就是用来维护这个副本状态机的一致性的。
MIT 6.824的课程实验:6.824 Home Page: Spring 2016,基本就是以raft为基础进行展开的。经典分布式计算模型
7. Time Vector Clock。 分布式系统里面很难找到一个全局的时间,因为各个机器的时间是不一致的。所以lamport他们就提出了一个向量时钟的概念,来表示分布式系统里面各个事件的相对顺序。
8. Distributed Snapshot。分布式系统快照。这也是非常经典的一个分布式问题,因为分布式系统做快照的时候,各个机器不同步,加上有些信息在网络上飞,所以如何得到一个正确的快照是一个很难的问题。这篇文章提出一个可以理论证明是正确的解。
9. Concurrency Control & Transaction。严格来说这不是论文,是微软出的一本书,concurrency control and recovery in database systems。但是引用已经破了5000。从理论上介绍了什么是事务(transaction),以及如何保证事务的可顺序化和可恢复性。
10. 2 phase lock。这也是上面那本书中的内容,2pl是一个协议,遵循该协议可以确保事务的可顺序化,不会出现多个事务同时操作导致结果不正确的现象。
11. OCC,乐观控制协议。如何不上锁,又能实现多个事务同时处理的正确性。也是领域的经典文章。
12. 2 phase commit,两阶段提交协议。这是分布式事务环境下,如何确保多个机器上事务同时提交或者失败的一个协议。
13. Byzantine容错。Raft和Paxso的环境是所有的机器都是按照正确的逻辑运行,只是有可能失效;Byzantine算法的环境是有些机器可能被劫持,故意扰乱正常的操作。Byzantine算法是解决这种环境下的一致性协议问题。
14. Memory Coherence in Shared Virtual Memory Systems。这个应该归到分布式一致性领域的问题。只不过应用场景在于分布式共享内存。提供一个统一的接口,使得所有的机器看到的是同一个内存空间,而实际上有一个虚拟内存到物理内存的映射。需要重点考虑的是各个机器一致性的问题。这里用到的是顺序一致性
15. Lazy release consistency for software distributed shared memory。和上面的问题一样,都是分布式共享内存,只不过使用了释放一致性。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/tongxinshuyu/article-28778-1.html
台湾如果收回
刚开战没多久