推薦幾篇工業(yè)界分布式系統(tǒng)設(shè)計(jì)的論文。
1. Google 經(jīng)典的“三駕馬車”
The Google File System (2003)
MapReduce: Simplified Data Processing on Large Clusters (2004)
Bigtable: A Distributed Storage System for Structured Data (2006)
最早發(fā)表的 GFS 論文(2003)到現(xiàn)在(2019)已經(jīng) 16 年了。這三篇論文可以說是工業(yè)界、開源界分布式系統(tǒng)的啟蒙者。之后的 Hadoop 系列開源軟件 HDFS、MapReduce、Hbase 都是參考這三篇論文設(shè)計(jì)的。
2. Amazon 的 Dynamo (高可用、最終一致的分布式 KV)
Dynamo: Amazon’s Highly Available Key-value Store (2007)
和 Bigtable 差不多同一時(shí)期,Amazon 發(fā)表了 Dynamo 這篇論文。個(gè)人覺得這篇論文非常經(jīng)典,絕對值得一讀。從 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 內(nèi)部是如何在 Bigtable 上“打補(bǔ)丁”,直到后來 Spanner 的出現(xiàn)。
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)
最開始的時(shí)候,Spanner 和 F1 分工合作:
Spanner 專注存儲層,是一個(gè)高可用的分布式 KV并且支持分布式事務(wù);
F1 則專注計(jì)算層,是一個(gè)分布式 SQL 引擎。
Spanner: Becoming a SQL System (2017)
后來,Spanner 開始自己實(shí)現(xiàn) SQL 層。(感覺是要替代掉 F1。)
F1 Query: Declarative Querying at Scale (2018)
F1 為了不讓自己被干掉,將自己重新定位成 Google 內(nèi)部統(tǒng)一的查詢引擎,包括 OLTP 和 OLAP。底層數(shù)據(jù)源也不只是適配 Spanner。
Spanner 和 F1 論文的發(fā)布,開啟了 NewSQL 世界的大門。個(gè)人感覺這 21 世紀(jì)以來到現(xiàn)在,Google 幾乎成了是工業(yè)界分布式系統(tǒng)的“風(fēng)向標(biāo)”……著名的兩個(gè)開源 NewSQL,TiDB 和 CockroachDB 都是 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 也是一個(gè)非常經(jīng)典的存儲系統(tǒng)——設(shè)計(jì)的目標(biāo)是云原生數(shù)據(jù)庫。