0%

原文:Ceph: A Scalable, High-Performance Distributed File System

这篇文章介绍了Ceph,一种分布式文件系统。它的最大特点是数据层与元数据分离所带来的高弹性。不像其它分布式文件系统(如GFS)master通过本地表记录数据分布,在Ceph中数据是由一种伪随机函数CRUSH来确定分布在哪个对象存储设备(OSD)上的。OSD本身是高度自治的单元,负责replication、错误检测、恢复。这种设计具备了非常高的弹性与灵活性。

(通篇看下来感觉Ceph是挺适合云上部署的,另外明显感觉到分布式系统、存储、数据库三个领域需要融合,至少在2006年)

阅读全文 »

原文:Paxos Made Live - An Engineering Perspective

Chubby的第一个版本基于一个第三方可容错的商业数据库(下文称为3DB),它的replication有很多bug,并没有基于任何已有证明的算法,也无法证明其正确性。最终Chubby将3DB替换为了基于Paxos的实现。

作者在实现Paxos的过程中,发现这个工作并不trivial:

  • 描述Paxos的伪代码只要一页就够了,但作者的C++实现多达几千行。膨胀的原因是实际的生产系统需要的很多特性和优化是原paper中没有的。
  • 社区习惯于证明篇幅短的算法(一页伪代码)的正确性,但其证明方法难以扩展到几千行代码的规模,导致作者必须使用不同的广域来证明其实现的正确。
  • 容错算法只能处理一个精心选择的固定集合中的错误,而真实世界有着多得多的错误类型,包括了算法本身的错误、实现的错误、操作错误。
  • 真实系统很少能有精确的spec,甚至在实现过程中还会修改spec,就需要实现本身具有可塑性,也许就会有实现“误解”了spec导致的错误。

这篇文章就在讲作者将Paxos从理论搬到实际的过程中的一些挑战。

阅读全文 »

原文:Consensus on Transaction Commit

TL;DR

这篇文章是Jim Gray和Leslie Lamport两位图灵奖大佬的合作产物,是数据库与系统两个领域在consensus方面的结合。

Paxos Commit算法使用Paxos弥补了2PC在容错性上的软肋,而进一步的Fast Paxos Commit算法则减少了一轮commit的延时跳数,代价是增加了总的通信次数。

文章另外还论证了经典的2PC就是Paxos Commit的一种特例。

阅读全文 »

原文:An Integrated Approach to Recovery and High Availability in an Updatable, Distributed Data Warehouse

TL;DR

这篇文章介绍了HARBOR,一种针对高可用数仓的新的恢复与高可用机制。相比传统的基于ARIES的系统,HARBOR不依赖log,而是利用冗余replica,在恢复时query其它replica来恢复数据。

总的来说不太适合作为生产系统,错误处理与恢复流程需要考虑非常多的corner case。K-safety机制似乎是database社区对distributed system社区的一种反抗(我偏不用Paxos)。

阅读全文 »

原文:DBMSs On A Modern Processor: Where Does Time Go?

TL;DR

我们都知道数据库开销的大头是I/O,但在现代机器架构下,CPU与内存的交互成本也不容忽视。这篇文章比较了四种商用数据库在三种典型场景下的性能分解,得出结论:

  1. 一半的执行时间实际是在停顿(stall)。
  2. 90%的停顿是因为L1指令cache miss与L2数据cache miss导致的,而L2指令cache miss与L1数据cache miss则不重要。
  3. 20%的停顿是因为实现细节(如分支预测失败等)。
  4. 内存访问延时对性能的影响大于内存带宽的影响。
  5. 更快的CPU与缓存、内存的延时差距越来越大,以上因素会更加明显。

这篇文章是1999年的,机器是PⅡ,在当前(2021年)的系统中本文的结论仍然有效,且可能有更大的影响。

阅读全文 »

Amazon Aurora目前有两篇文章:

其中第一篇内容比较多,重点讲架构与实现;第二篇重点讲的是细节,比如一致性、优化、恢复过程、成员变更。

Deep Dive on Amazon Aurora这个slide还介绍了很多paper中没提到的特性,比如cache在DB进程之外、锁优化、索引构建优化等。

阅读全文 »