如何入門分散式計算?
01-14
想學一點這方面的知識。小弟在此先謝過了。^.^
先看看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解決了哪些並行資料庫沒解決的問題?