我在想構建一個像算法一樣使用raid(磁盤)的程序。如果一臺電腦死了。下一步將介入。在它的地方。它需要從1 - 1000臺電腦進行擴展。如何在網絡上的多臺計算機上構建分佈式健壯鏈表?
我需要一些建議。
我需要學習哪些算法的名稱?
有一次,我認爲有可能在git之上構建它。
我在想構建一個像算法一樣使用raid(磁盤)的程序。如果一臺電腦死了。下一步將介入。在它的地方。它需要從1 - 1000臺電腦進行擴展。如何在網絡上的多臺計算機上構建分佈式健壯鏈表?
我需要一些建議。
我需要學習哪些算法的名稱?
有一次,我認爲有可能在git之上構建它。
BitTorrent? :)
您可能想要在Google文件系統上閱讀此paper。摘要:
我們設計並實現了Google文件系統,這是一種適用於大型分佈式數據密集型應用程序的可擴展分佈式文件系統。它在廉價商品硬件上運行時提供容錯能力,併爲大量客戶端提供高集合性能。
您可以構建類似memcached的東西。每個散列條目可以是文件塊(例如,塊到內容的SHA散列)。
Distributed hash tables彈入我的腦海裏......
嘗試Hazelcast。它分發了Set,List等的實現。 Hazelcast是一個開源的事務性,分佈式/分區的隊列,主題,地圖,集合,列表,鎖定和執行器服務的實現。與之合作非常容易;只需將hazelcast.jar添加到您的類路徑中並開始編碼即可。幾乎不需要配置。
Hazelcast在Apache許可證下發布,企業級支持也可用。代碼託管在Google Code。
我見過Hadoop和谷歌文件系統提到,但沒有人具體提到HDFS - Hadoop附帶的分佈式文件系統。您可以設置所需的冗餘級別,並在不丟失數據的情況下丟失偶然的節點。
需要注意的是:您需要確保擁有「namenode」(HDFS集羣中的主機和單點故障)的一臺機器是穩定的 - RAID鏡像,備份和工作。你失去了名字節點,你失去了集羣。
您可能想查看Appistry EAF。它是一個分佈式執行平臺。它處理所有任務的故障轉移,因此您不必將其構建到代碼中。如果一個節點發生故障,另一個節點將自動接管。與Grid不同,沒有集中控制器,可以消除這些類型解決方案的單點故障/瓶頸。
最多可以免費下載5臺機器。
1)可以使用分佈式鎖/互斥如:
甲SQRT(N)算法在分散系統互斥,由前川:http://portal.acm.org/citation.cfm?id=214445
在分佈式基於鎖的同步的性能由Lubowich和陶本菲德:http://portal.acm.org/citation.cfm?id=1946155
2),也可以使用無鎖鏈表中:
無鎖的鏈表和Fomitchev跳躍表 和魯珀特:http://www.cse.yorku.ca/~ruppert/papers/lfll.pdf
無鎖使用比較並交換,由瓦盧瓦鏈表:http://portal.acm.org/citation.cfm?id=224988
嘿嘿。它是如此明顯? – Flinkman 2009-03-03 17:45:17
刪除笑臉看起來有點超過... – 2009-03-03 17:52:20