分布式系统

我的研究和教学重点是操作系统和分布式系统。由于我经常被问及阅读清单和博客,我将在这里开始收集它们的清单:

博客

https://www.the-paper-trail.org/

https://perspectives.mvdirona.com/

https://scalingsystems.com/category/distributed-systems/

论文

从我的cs249班

  • ZooKeeper: https://www.usenix.org/legacy/events/atc10/tech/full_papers/Hunt.pdf -我是一名作家,但我们在课堂项目中使用ZooKeeper,所以这是一个很好的起始论文。
  • Lamport时钟:https://amturing.acm.org/p558-lamport.pdf -在分布式系统中思考时间的经典方式。
  • 矢量时钟:https://www.vs.inf.ethz.ch/publ/papers/VirtTimeGlobStates.pdf -另一种经典的方式来跟踪时间与更多的信息。
  • CAP: https://users.ece.cmu.edu/~adrian/731-sp04/readings/GL-cap.pdf -在分布式系统中观察权衡的经典实用方法。
  • FLP: https://groups.csail.mit.edu/tds/papers/Lynch/jacm85.pdf -关于任何共识算法的极限的经典论文。
  • ADB: https://groups.csail.mit.edu/tds/papers/Attiya/TM-423.pdf -一个非常早期的简单分布式注册实现。
  • Paxos: https://lamport.azurewebsites.net/pubs/paxos-simple.pdf——描述Paxos的一种简明(并不简单)的方式。
  • https://www.cs.princeton.edu/courses/archive/fall17/cos418/papers/bft.pdf -经典的拜占庭容错论文。
  • 协议与执行:http://www.cs.cornell.edu/lorenzo/papers/sosp03.pdf -这篇论文有很多想法。对我来说,最大的贡献是突出了共识可以分为两个部分,每个部分都有不同的性质和要求。
  • RSM: https://www.cs.cornell.edu/fbs/publications/SMSurvey.pdf -一种非常复杂的谈论RSM的方式。我还没有找到更好的报纸。
  • primary/backup: https://www.cs.cornell.edu/fbs/publications/DSbook.c8.pdf -一种非常复杂的方式来谈论primary/backup。再说一遍,我还没有找到更好的论文。
  • Dynamo: https://www.allthingsdistributed.com/files/amazon-dynamo-sosp2007.pdf -一个有趣的例子,通过放松需求来解决实际问题。我比他们打破了“最终一致性”这个词更痛苦……
  • 链复制:https://www.cs.cornell.edu/home/rvr/papers/OSDI04.pdf -一个非常好的简单复制协议的例子。我们在课堂上实现它,这是一个很好的学习经验,了解实现分布式系统是多么困难。(大多数学生很快实现它,表明它有效,然后当他们的实现试图与其他学生互操作时失败。)
  • 等待免费同步:http://dx.doi.org/10.1145/114005.102808 -这是一篇很好的文章,展示了不同的原语如何组成以及如何显示边界。
  • 并发对象:https://lamport.azurewebsites.net/pubs/interprocess.pdf -一篇非常复杂的论文,但它对并发修改进行了重要的讨论。
  • 目击者:http://www2.cs.uh.edu/~paris/MYPAPERS/Icdcs86.pdf -一个需要更多使用的无数据副本的简单想法!
  • GFS: https://static.googleusercontent.com/media/research.google.com/en//archive/gfs-sosp2003.pdf -一个经典的大规模分布式文件系统。
  • 大表:https://static.googleusercontent.com/media/research.google.com/en//archive/bigtable-osdi06.pdf -一个经典的大规模分布式键/值存储。
  • Map /reduce: https://static.googleusercontent.com/media/research.google.com/en//archive/mapreduce-osdi04.pdf -一个经典的大规模数据处理引擎。
  • Raft: https://web.stanford.edu/~ouster/cgi-bin/papers/raft-atc14 -一个相对较新的原子广播算法。它带回了一些关于视图盖章复制的早期论文的概念。人们把它和paxos混为一谈,但它有一些非常重要的区别,尤其是对工程师来说。它也让你更接近你想要到达的地方:paxos做出一个决定,raft做这个决定并确保它被传播。
  • DHT: https://www.cs.princeton.edu/courses/archive/fall17/cos418/papers/chord.pdf -经典的分布式哈希表论文。
  • ceph: https://www.ssrc.ucsc.edu/Papers/weil-osdi06.pdf——一个更现代的DHT,它考虑了数据中心的结构。

以前的cs249论文

  • 灵活的仲裁系统:https://arxiv.org/pdf/1608.06696v1.pdf -一个很好的,如果不切实际的,看仲裁系统的方式。它对一些共识算法的不同阶段提供了很好的见解。
  • 活动磁盘paxos: https://groups.csail.mit.edu/tds/papers/Chockler/podc-02.pdf——一种有趣的方式,它使用带有一点额外功能的磁盘来达成共识。
  • 虚拟同步:https://www.cs.cornell.edu/home/rvr/sys/p123-birman.pdf -在分布式系统中使用因果关系的经典论文。
  • Paxos: https://lamport.azurewebsites.net/pubs/lamport-paxos.pdf -这是真正的Paxos论文!这是我最喜欢读的报纸之一。这是第一个。它有很多在后来的paxos工作中丢失的想法。