如何入門分散式計算?

想學一點這方面的知識。小弟在此先謝過了。^.^


先看看google的mapreduce,bigtable那幾篇經典的論文。不要太多,要選擇經典。因為絕多數都不怎麼樣。

然後選擇簡單和成熟的分散式系統玩玩,寫幾個簡單的程序。並對他們敢興趣的地方看看源代碼。

然後就是想想已有系統有什麼不好的地方進行一下修改。所有的系統都是tradeoff的產物,所以你總是可以找到性能提升的地方。

中途會遇到很多bug,多問問論壇。也會遇到理論上的不足,這個時候有針對性的看論文或者書籍。大致如此吧!


不推薦看理論性很強的書(不意味著不需要掌握)。找個你感興趣的開源工具,然後看看他的document和論文,讀讀源碼,用一用。不只要知道很多分散式的工具可以做什麼,最重要的還是自己要深入一個。有廣度有深度,領會某個優秀工具設計上的理念。


理論基礎:http://book.douban.com/subject/3108801/

按圖索驥:http://wenku.baidu.com/view/895a2a3467ec102de2bd8902.html

再看看google的三篇經典論文,hadoop,hbase等等成熟的系統設計。大概知道這類系統難在哪,一般的解決方案是什麼。

再就是找個機會,實際參與個項目,編點碼吧。如果能參與從無到有的設計更好,不過機會很難遇。

一家之言,僅供參考。


簡單的說:

理論+實踐

分散式計算太籠統

---

比如說hdfs系統,從谷歌的那篇GFS論文發表的2004年到現在的2014年年底,已經整整的10年過去了。

學習一個系統,最好的方法是縱軸和橫軸來看。

縱軸就是觀察系統的演變過程,還是拿hdfs來說,十年的時間變化很多,hdfs的架構變化是為了解決可靠性,可用性。

從最初的hdfs 1.0的 single NameNode + SecondaryNameNode + DataNode 架構,到hdfs 2.0 的NameNode HA + NameNode Federation,這個架構的演變,就值得細細把玩。

橫軸看,就是將同類型的系統拿來做比較,有了比較,就有了更直觀的認識。還是拿hdfs來說,同類型的系統,有 MapR FS 和谷歌的GFS 2.0(誰有資料,麻煩發一下),MapR FS 的資料還是有一些的。通過比較這些個系統的不同,會加深對分散式文件系統的理解,不僅僅是hdfs這一個,因為很多理論和實踐是相通的。

最後補充一句話,對於一家公司來說,照搬開源不一定是好事,有一句話說的好:

學之者生,用之者死

這句話是說ACE的,(勿噴)


先搞懂「事務」。


推薦閱讀:

雙十一時,阿里的技術人員在後台做了些什麼?
當spark讀取一個非常大的本地文件時,讀入內存後分區會自動分布到多個節點上嗎?
伺服器集群負載均衡原理?
為什麼 Erlang 流行不起來?
Hadoop和Spark解決了哪些並行資料庫沒解決的問題?

TAG:雲計算 | 分散式計算 | 雲平台 | 雲服務 |