【发布时间】:2010-10-11 01:54:16
【问题描述】:
我正在考虑构建一个使用类似 raid(disk) 算法的程序。如果一台电脑死机。下一个将介入。在它的地方。它需要从 1 到 1000 台计算机扩展。
我需要一些建议。
我需要学习的算法叫什么名字?
在某一时刻,我认为可以在 git 之上构建它。
【问题讨论】:
标签: algorithm linked-list distributed robustness
我正在考虑构建一个使用类似 raid(disk) 算法的程序。如果一台电脑死机。下一个将介入。在它的地方。它需要从 1 到 1000 台计算机扩展。
我需要一些建议。
我需要学习的算法叫什么名字?
在某一时刻,我认为可以在 git 之上构建它。
【问题讨论】:
标签: algorithm linked-list distributed robustness
您可能想在 Google 文件系统上阅读此 paper。摘自:
我们设计并实施了 Google 文件系统,这是一个可扩展的分布式文件系统,适用于大型分布式数据密集型应用程序。它在廉价商品硬件上运行时提供容错能力,并为大量客户端提供高聚合性能。
【讨论】:
试试Hazelcast。它具有 Set、List 等的分布式实现。 Hazelcast 是队列、主题、映射、集合、列表、锁定和执行器服务的开源事务、分布式/分区实现。使用起来超级容易;只需将 hazelcast.jar 添加到您的类路径中并开始编码。几乎不需要任何配置。
Hazelcast 在 Apache 许可下发布,并且还提供企业级支持。代码托管在Google Code。
【讨论】:
Distributed hash tables突然出现在我的脑海中......
【讨论】:
我见过提到 Hadoop 和 Google 文件系统,但没有人特别提到 HDFS - Hadoop 附带的分布式文件系统。您可以设置所需的冗余级别,并在不丢失数据的情况下丢失偶尔的节点。
一个警告:您需要确保拥有“namenode”的一台机器(HDFS 集群中的主机和单点故障)是可靠的 - RAID 镜像、备份和工作。你失去了namenode,你就失去了集群。
【讨论】:
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
【讨论】:
您可以构建类似memcached 的东西。每个散列条目可以是一个文件块(例如,块到内容的 SHA 散列)。
【讨论】:
比特流? :)
【讨论】:
您可能想查看Appistry EAF。它是一个分布式执行平台。它为您处理所有任务的故障转移,因此您不必将其构建到您的代码中。如果一个节点发生故障,另一个节点会自动接管。与 Grid 不同,没有集中式控制器,您可以消除这些类型解决方案的单点故障/瓶颈。
最多可免费下载 5 台机器。
【讨论】: