如何在网上的几台计算机上构建分布式健壮的链表?

时间:2009-03-03 17:40:37

标签: algorithm linked-list distributed robustness

我正在考虑构建一个使用raid(磁盘)算法的程序。如果一台电脑死了。接下来将介入。在它的位置。它需要从1到1000台计算机扩展。

我需要一些建议。

我需要学习什么算法的名称?

有一次我认为可以在git之上构建它。

9 个答案:

答案 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)

另请查看MapReduce算法。这是获得高可伸缩性的一种相对简单的方法,它不会强制算法设计者考虑锁定,通信等。有几种可用的实现,例如Apache基础的开源Hadoop。 / p>

答案 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台机器。