謝邀!五一快樂!
分佈式系統在互聯網時代,尤爲是大數據時代到來以後,成爲了每一個程序員的必備技能之一。分佈式系統從上個世紀80年代就開始有了很多出色的研究和論文,我在這裏只列舉最近15年範圍之內我以爲有重大影響意義的15篇論文(15 within 15)。
1. The Google File System: 這是分佈式文件系統領域劃時代意義的論文,文中的多副本機制、控制流與數據流隔離和追加寫模式等概念幾乎成爲了分佈式文件系統領域的標準,其影響之深遠經過其5000+的引用就可見一斑了,Apache Hadoop鼎鼎大名的HDFS就是GFS的模仿之做;
2. MapReduce: Simplified Data Processing on Large Clusters:這篇也是Google的大做,經過Map和Reduce兩個操做,大大簡化了分佈式計算的複雜度,使得任何須要的程序員均可以編寫分佈式計算程序,其中使用到的技術值得咱們好好學習:簡約而不簡單!Hadoop也根據這篇論文作了一個開源的MapReduce;
3. Bigtable: A Distributed Storage System for Structured Data:Google在NoSQL領域的分佈式表格系統,LSM樹的最好使用範例,普遍使用到了網頁索引存儲、YouTube數據管理等業務,Hadoop對應的開源系統叫HBase(我在前公司任職時也開發過一個相應的系統叫BladeCube,性能較HBase有數倍提高);
4. The Chubby lock service for loosely-coupled distributed systems:Google的分佈式鎖服務,基於Paxos協議,這篇文章相比於前三篇可能知道的人就少了,可是其對應的開源系統zookeeper幾乎是每一個後端同窗都接觸過,其影響力其實不亞於前三篇;
5. Finding a Needle in Haystack: Facebook's Photo Storage:facebook的在線圖片存儲系統,目前來看是對小文件存儲的最好解決方案之一,facebook目前經過該系統存儲了超過300PB的數據,一個師兄就在這個團隊工做,聽過不少有意思的事情(我在前公司的時候開發過一個相似的系統pallas,不只支持副本,還支持Reed Solomon-LRC,性能也有較多優化);
6. Windows Azure Storage: a highly available cloud storage service with strong consistency:windows azure的整體介紹文章,是一篇很好的描述雲存儲架構的論文,其中經過分層來同時保證可用性和一致性的思路在現實工做中也給了我不少啓發;
7. GraphLab: A New Framework for Parallel Machine Learning:CMU基於圖計算的分佈式機器學習框架,目前已經成立了專門的商業公司,在分佈式機器學習上頗有兩把刷子,其單機版的GraphChi在百萬維度的矩陣分解都只須要2~3分鐘;
8. Resilient Distributed Datasets: A Fault-Tolerant Abstraction for In-Memory Cluster Computing:其實就是 Spark,目前這兩年最流行的內存計算模式,經過RDD和lineage大大簡化了分佈式計算框架,一般幾行scala代碼就能夠搞定原來上千行MapReduce代碼才能搞定的問題,大有取代MapReduce的趨勢;
9. Scaling Distributed Machine Learning with the Parameter Server:百度少帥李沐大做,目前大規模分佈式學習各家公司主要都是使用ps,ps具有良好的可擴展性,使得大數據時代的大規模分佈式學習成爲可能,包括Google的深度學習模型也是經過ps訓練實現,是目前最流行的分佈式學習框架,豆瓣的開源系統paracell也是ps的一個實現;
10. Dremel: Interactive Analysis of Web-Scale Datasets:Google的大規模(近)實時數據分析系統,號稱能夠在3秒相應1PB數據的分析請求,內部使用到了查詢樹來優化分析速度,其開源實現爲Drill,在工業界對實時數據分析也是比價有影響力;
11. Pregel: a system for large-scale graph processing: Google的大規模圖計算系統,至關長一段時間是Google PageRank的主要計算系統,對開源的影響也很大(包括GraphLab和GraphChi);
12. Spanner: Google's Globally-Distributed Database:這是第一個全球意義上的分佈式數據庫,Google的出品。其中介紹了不少一致性方面的設計考慮,簡單起見,還採用了GPS和原子鐘確保時間最大偏差在20ns之內,保證了事務的時間序,一樣在分佈式系統方面具備很強的借鑑意義;
13. Dynamo: Amazon’s Highly Available Key-value Store:Amazon的分佈式NoSQL數據庫,意義至關於BigTable對於Google,於BigTable不一樣的是,Dynamo保證CAP中的AP,C經過vector clock作弱保證,對應的開源系統爲Cassandra;
14. S4: Distributed Stream Computing Platform:Yahoo出品的流式計算系統,目前最流行的兩大流式計算系統之一(另外一個是storm),Yahoo的主要廣告計算平臺;
15. Storm @Twitter:這個系統很少說,開啓了流式計算的新紀元,幾乎是全部公司流式計算的首選,絕對值得關注;
最近一兩年時間主要精力放到了機器學習上,分佈式系統的研究不太多了,現階段就列這15篇文章吧,覆蓋了分佈式系統的主要領域。若是想起來有遺漏再來補充。Good luck!html
Time Clocks and the Ordering of Events in a Distributed Systemreact
Virtual Time and Global States of Distributed Systems ios
Distributed Snapshots: Determining Global States of a Distributed Systemgit
The ganglia distributed monitoring system:design, implementation, and 程序員
experiencegithub
Chukwa: A large-scale monitoring systemweb
You can join the Googlegroups on Cloud Computing算法
P2P Systemsspring
P2P Systems (contd.)
Others: MongoDB
Starfish: a self-tuning system for big data analytics, H. Herodotou, H. Lim, G. Luo, N. Borisov, L. Dong, F. B. Cetin, S. Babu, CIDR 2011.
Directed diffusion: A scalable and robust communication paradigm for sensor networks, C. Intanagonwiwat et al, Mobicom 2000
A review of current routing protocols for ad hoc mobile wireless networks, E.M. Royer et al, IEEE Personal Communications 1999
Storage management and caching in PAST, a large-scale, persistent peer-to-peer storage utility, A. Rowstron et al, SOSP 2001
Ivy: A Read/Write Peer-to-Peer File System, Athicha Muthitacharoen, Robert Morris, Thomer M. Gil, and Benjie Chen, OSDI 2002
TAG: A Tiny Aggregation service for ad-hoc sensor networks, S. Madden, et al, OSDI 2002
Synopsis diffusion for robust aggregation in sensor networks, S. Nath et al, ACM TOSN, 2008.
Measurement, modeling, and analysis of a peer-to-peer file-sharing workload
Krishna P. Gummadi et al, SOSP 2003
Understanding availability, R. Bhagwan et al, IPTPS 2003
Measurement and Modeling of a Large-scale Overlay for Multimedia Streaming, L. Vu, I. Gupta, J. Liang, K. Nahrstedt, QShine 2007
An Evaluation of Amazon's Grid Computing Services: EC2, S3 and SQS, Simson Garfinkel, Harvard TechRep., 2007
What do Real-Life Hadoop Workloads Look Like, Cloudera Blog
A gossip-based failure detection service, R. van Renesse et al, Middleware 1998
SWIM: Scalable Weakly-consistent Infection-style process group Membership protocol, A. Das et al, DSN 2002
Spreading the Rumor
Bimodal multicast, K Birman et al, ACM TOCS 1999
Epidemic algorithms for replicated database maintenance, A. Demers et al, PODC 1987.
Scaling properties of the Internet graph, A. Akella et al, PODC 2003
Mapping the Gnutella network, M. Ripeanu et al, IEEE Computing Journal 2002
經典的意思是通過時間驗證的。
排名第一的
讀經典是爲了掌握這個領域最基本的思想,知其然,更要知其因此然。好比chubby,讀實現以前,難道不更應該看看paxos算法自己是什麼?
其實美國比較好的大學的研究生分佈式系統課應該都會有reading list,這些差很少就是經典了。
好比cmu的:15-712 Syllabus。若是你要選30篇,70年代至今分佈式最經典的文章,大概就是這些了。你會看到上面好多文章是很老的。爲何還要看?由於想法被繼承了,這些文章能夠幫你瞭解因此然。固然上面有些文章其餘同窗也提到了(好比leslie lamport的paxos等)。