分散式系統設計經典論文
推薦幾篇工業界分散式系統設計的論文。
1. Google 經典的“三駕馬車”
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,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 也是一個非常經典的儲存系統——設計的目標是雲原生資料庫。