分佈式系統經典論文彙總

分佈式系統領域有着最令人費解的理論,全鏈路的不確定性堪比物理中的量子力學。同時,分佈式系統領域又有着當代最宏偉的計算機系統,Google、Facebook、亞馬遜遍佈全球的系統支撐着我們的信息生活。顯然,能夠征服分佈式系統的,都是理論和實踐兩手抓兩手都要硬的強者。然而,分佈式系統領域還有着最高的上手門檻,沒有大規模的基礎設施、沒有潮水般的流量,分佈式領域幽靈般的問題並不會浮出水面。那麼,我們應該如何開啓征服分佈式系統的征程呢?

好在這條路上我們並不孤獨。學術大牛們在五十年前就開始探索各方面理論上的問題,全球規模的互聯網公司也有着豐富的實踐和經驗。而這些分佈式領域人類的智慧,最終都沉澱爲了一篇篇的經典論文。和普通的技術文章相比,論文的發表有着極爲嚴格的要求,隨之而來的也是極高的質量。

通過閱讀分佈式領域的經典問題,我們可以快速吸收前人的智慧,領略大型系統的風采,並收穫最爲寶貴的實戰經驗。現在,就讓我們從一篇篇經典論文開始,踏上征戰分佈式系統的征程吧!按照從理論到實踐的順序,將經典的分佈式系統論文分成了分佈式理論基礎、分佈式一致性算法、分佈式數據結構和分佈式系統實戰四類,幫助你快速找到自己需要的論文。這些論文我都給到了標題,你可以直接去 Google 學術裏搜索。

分佈式理論基礎

分佈式理論基礎部分的論文,主要從宏觀的角度介紹分佈式系統中最爲基本的問題,從理論上證明分佈式系統的不確定、不完美,以及相互間的制約條件。研讀這部分論文,你可以瞭解經典的 CAP 定理、BASE 理論、拜占庭將軍問題的由來及其底層原理。有了這些理論基礎,你就可以明白分佈式系統複雜的根源。當再碰到一些疑難雜症,其他人不得其解時,你可以從理論高度上指明方向。

以下就是分佈式理論基礎部分的論文:

Time, Clocks, and the Ordering of Events in a Distributed System

The Byzantine Generals Problem

Brewer’s Conjecture and the Feasibility of Consistent, Available, Partition-Tolerant Web Services

CAP Twelve Years Later: How the “Rules” Have Changed

BASE: An Acid Alternative

A Simple Totally Ordered Broadcast Protocol

Virtual Time and Global States of Distributed Systems

分佈式一致性算法

只要脫離了單機系統,就會存在多機之間不一致的問題。因此,分佈式一致性算法,就成了分佈式系統的基石。在分佈式一致性算法這一部分,我將與你推薦 2PC、Paxos、Raft 和 ZAB 等最知名的一致性算法。分佈式算法的複雜度比普通算法要高出幾個數量級,所以這部分論文是最爲燒腦的一部分。搞明白這部分論文,你的空間想象力和統籌規劃能力都會得到質的提升。

A Brief History of Consensus, 2PC and Transaction Commit

Paxos Made SimplePaxos Made Practical

Paxos Made Live: An Engineering Perspective

Raft: In Search of an Understandable Consensus Algorithm

ZooKeeper: Wait-Free Coordination for Internet-Scale Systems

Using Paxos to Build a Scalable, Consistent, and Highly Available Datastore

Impossibility of Distributed Consensus With One Faulty Process

Consensus in the Presence of Partial Synchrony

分佈式數據結構

分佈式數據結構部分的論文,將與你介紹管理分佈式存儲問題的知名數據結構原理。通過它們,你可以構建自己的分佈式系統應用。

這部分論文的涵蓋範圍大致包括兩部分:一是,分佈式哈希的四個著名算法 Chord、Pastry、CAN 和 Kademlia;二是,Ceph 中使用的 CRUSH、LSM-Tree 和 Tango 算法。和分佈式一致性算法類似,分佈式數據結構也極其考驗空間想象力和統籌規劃能力。不過,在經過分佈式一致性算法的鍛鍊後,相信這些對你來說已經不再是問題了。

Chord: A Scalable Peer-to-Peer Lookup Service for Internet Applications

Pastry: Scalable, Distributed Object Location, and Routing for Large-Scale Peer-to-Peer Systems

Kademlia: A Peer-to-Peer Information System Based on the XOR Metric

A Scalable Content-Addressable Network

Ceph: A Scalable, High-Performance Distributed File System

The Log-Structured-Merge-Tree

HBase: A NoSQL Database

Tango: Distributed Data Structure over a Shared Log

分佈式系統實戰

分佈式系統實戰部分的論文,將介紹大量互聯網公司在分佈式領域的實踐、系統的架構,以及經驗教訓。Google 的新老三駕馬車,Facebook、Twitter、LinkedIn、微軟、亞馬遜等大公司的知名系統都會在這一部分登場。你將會領會到這些全球最大規模的分佈式系統是如何設計、如何實現的,以及它們在工程上又碰到了哪些挑戰。

The Google File System

BigTable: A Distributed Storage System for Structured Data

The Chubby Lock Service for Loosely-Coupled Distributed Systems

Finding a Needle in Haystack: Facebook’s Photo Storage

Windows Azure Storage: A Highly Available Cloud Storage Service with Strong Consistency

Resilient Distributed Datasets: A Fault-Tolerant Abstraction for In-Memory Cluster Computing

Scaling Distributed Machine Learning with the Parameter Server

Dremel: Interactive Analysis of Web-Scale Datasets

Pregel: A System for Large-Scale Graph Processing

Spanner: Google’s Globally-Distributed Database

Dynamo: Amazon’s Highly Available Key-value Store

S4: Distributed Stream Computing Platform

Storm @TwitterLarge-scale Cluster Management at Google with Borg

F1 - The Fault-Tolerant Distributed RDBMS Supporting Google’s Ad Business

Cassandra: A Decentralized Structured Storage System

MegaStore: Providing Scalable, Highly Available Storage for Interactive Services

Dapper, a Large-Scale Distributed Systems Tracing Infrast

Dapper, a Large-Scale Distributed Systems Tracing Infrastructure

Kafka: A distributed Messaging System for Log Processing

Amazon Aurora: Design Considerations for High Throughput Cloud-Native Relational Databases

以上就是我爲你準備的分佈式系統經典論文清單了。這個清單裏的每一篇論文,都是經典中的經典。很多論文對之後的工業界及學術界產生了翻天覆地的影響,開創了一個又一個火熱的產業。希望你沒有被這個清單嚇到,當你翻開這些論文後,就會發現它們的內容並不是高高在上,包含了很多很實際、很具體的問題。認真讀下去,你甚至會有掌握了屠龍之技的快感,一發而不可收拾。爲了幫助你高效閱讀這些論文,並汲取其中的精華,我再和你說說我閱讀論文的一些心法吧。

如何高效地閱讀論文?

一般來說,單篇論文大概會有 15 到 20 頁的內容,如果你是第一次讀論文可以把重點放在前面的背景介紹、相關工作和概要設計上。好的論文通常會很仔細地介紹背景知識,幫助你從宏觀上先對整個問題有一個初步認識,瞭解當前現狀。

接下來,你可以再根據自己的興趣,選擇是否仔細閱讀論文涉及的詳細原理和設計。這一部分,通常是論文中最精華的部分,包含了最具創新的理念和做法,內容通常也會比較長,需要花費較多的時間和精力去研究。這時,你可以根據自己的情況,選擇一批論文重點突破。

論文最後通常是評測和數據展示部分。這部分內容對我們最大的參考價值在於,學習作者的評測方法、用到的測試工具和測試樣例,以便將其運用到工作中。

閱讀完一篇論文後,如果你覺得內容還不錯的話,可以通過 Google 學術去搜索相關的文章,找到所有引用這篇論文的新作品。這樣一來,你就可以通過一篇經典論文不斷深入,全面掌握一個領域。

 

論文down下來了,上不了Google學術的同學可自取

鏈接: https://pan.baidu.com/s/1LN9ZaIuSMCRKN_3LAlq4Iw 提取碼: 1hp5

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章