推荐几篇工业界分布式系统设计的论文。

1. Google 经典的“三驾马车”

The Google File System (2003) MapReduce: Simplified Data Processing on Large Clusters (2004) Bigtable: A Distributed Storage System for Structured Data (2006)

最早发表的 GFS 论文(2003)到现在(2019)已经 16 年了。这三篇论文可以说是工业界、开源界分布式系统的启蒙者。之后的 Hadoop 系列开源软件 HDFS、MapReduce、Hbase 都是参考这三篇论文设计的。

2. Amazon 的 Dynamo (高可用、最终一致的分布式 KV)

Dynamo: Amazon’s Highly Available Key-value Store (2007)

和 Bigtable 差不多同一时期,Amazon 发表了 Dynamo 这篇论文。个人觉得这篇论文非常经典,绝对值得一读。从 Dynamo 和后来的 Aurora,可以看出 Amazon 做出来的东西都非常有自己的特色。

3. Google 的 Percolator 和 Megastore

Large-scale Incremental Processing Using Distributed Transactions and Notifications (2010) Megastore: Providing Scalable, Highly Available Storage for Interactive Services (2011)

通过这两篇论文,看看 Google 内部是如何在 Bigtable 上“打补丁”,直到后来 Spanner 的出现。

4. Google 的 Spanner 和 F1 。

Spanner: Google’s Globally-Distributed Database (2012) F1: A Distributed SQL Database That Scales (2013) Online, Asynchronous Schema Change in F1 (2013)

最开始的时候,Spanner 和 F1 分工合作: Spanner 专注存储层,是一个高可用的分布式 KV并且支持分布式事务; F1 则专注计算层,是一个分布式 SQL 引擎。

Spanner: Becoming a SQL System (2017)

后来,Spanner 开始自己实现 SQL 层。(感觉是要替代掉 F1。)

F1 Query: Declarative Querying at Scale (2018)

F1 为了不让自己被干掉,将自己重新定位成 Google 内部统一的查询引擎,包括 OLTP 和 OLAP。底层数据源也不只是适配 Spanner。

Spanner 和 F1 论文的发布,开启了 NewSQL 世界的大门。个人感觉这 21 世纪以来到现在,Google 几乎成了是工业界分布式系统的“风向标”……著名的两个开源 NewSQL,TiDBCockroachDB 都是 inspire by Spanner 和 F1。

5. Amazon 的 Aurora

Amazon Aurora: Design Considerations for High Throughput Cloud-Native Relational Databases (2017) Amazon Aurora: On Avoiding Distributed Consensus for I/Os, Commits, and Membership Changes (2018)

Aurora 也是一个非常经典的存储系统——设计的目标是云原生数据库。