我正在考虑构建一个使用raid(磁盘)算法的程序。如果一台电脑死了。接下来将介入。在它的位置。它需要从1到1000台计算机扩展。
我需要一些建议。
我需要学习什么算法的名称?
有一次我认为可以在git之上构建它。
答案 0 :(得分:5)
您可能需要在Google文件系统上阅读此paper。从摘要:
我们设计并实施了Google文件系统,这是一个可扩展的分布式文件系统,适用于大型分布式数据密集型应用程序。它在廉价的商用硬件上运行时提供容错功能,并为大量客户端提供高聚合性能。
答案 1 :(得分:3)
试试Hazelcast。它已经分布了Set,List等的实现。 Hazelcast是队列,主题,映射,集合,列表,锁定和执行程序服务的开源事务,分布式/分区实现。它非常容易使用;只需将hazelcast.jar添加到您的类路径中并开始编码。几乎不需要配置。
Hazelcast是在Apache许可下发布的,并且还提供企业级支持。代码托管在Google Code。
答案 2 :(得分:1)
Distributed hash tables进入我的脑海......
答案 3 :(得分:1)
我已经看过Hadoop和谷歌文件系统,但没有人特别提到HDFS - Hadoop附带的分布式文件系统。您可以设置所需的冗余级别,并在不丢失数据的情况下丢失偶尔的节点。
一个警告:您需要确保拥有“namenode”的一台计算机(HDFS集群中的主计算机和单点故障)是可靠的 - RAID镜像,备份和工作。你丢失了namenode,你就失去了群集。
答案 4 :(得分:0)
答案 5 :(得分:0)
1)您可以使用分布式锁/互斥锁,如下所示:
分散系统中相互排斥的sqrt(N)算法,作者:Maekawa:http://portal.acm.org/citation.cfm?id=214445
关于分布式锁定同步的性能,由Lubowich和Taubenfeld撰写:http://portal.acm.org/citation.cfm?id=1946155
2)或者您可以使用无锁链接列表,如下所示:
Fomitchev的无锁链接列表和跳过列表 和鲁珀特:http://www.cse.yorku.ca/~ruppert/papers/lfll.pdf
使用比较和交换的无锁链接列表,由Valois:http://portal.acm.org/citation.cfm?id=224988
答案 6 :(得分:-1)
BitTorrent的? :)
答案 7 :(得分:-1)
您可以构建类似memcached的内容。每个散列条目可以是文件块(例如,块到内容的SHA散列)。
答案 8 :(得分:-1)
您可能想查看Appistry EAF。它是一个分布式执行平台。它为您处理任务的所有故障转移,因此您无需在代码中构建它。如果一个节点发生故障,另一个节点将自动接管。与Grid不同,没有集中控制器,可以消除这些类型解决方案的单点故障/瓶颈。
最多可免费下载5台机器。