1

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

我需要一些建议。

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

在某一时刻,我认为可以在 git 之上构建它。

4

9 回答 9

5

您可能想阅读有关 Google 文件系统的这篇论文。从摘要:

我们设计并实现了 Google 文件系统,这是一个可扩展的分布式文件系统,适用于大型分布式数据密集型应用程序。它在廉价商品硬件上运行时提供容错能力,并为大量客户端提供高聚合性能。

于 2009-03-03T17:48:22.020 回答
3

试试Hazelcast。它具有 Set、List 等的分布式实现。Hazelcast 是队列、主题、映射、集合、列表、锁定和执行器服务的开源事务性、分布式/分区实现。使用起来超级容易;只需将 hazelcast.jar 添加到您的类路径中并开始编码。几乎不需要任何配置。

Hazelcast 是在 Apache 许可下发布的,并且还提供企业级支持。代码托管在Google Code上。

于 2009-03-05T10:41:02.873 回答
1

我已经看到提到过 Hadoop 和 Google 文件系统,但没有人特别提到HDFS - Hadoop 附带的分布式文件系统。您可以设置所需的冗余级别,并在不丢失数据的情况下丢失偶尔的节点。

一个警告:您需要确保拥有“namenode”(HDFS 集群中的主机和单点故障)的一台机器是可靠的——RAID 镜像、备份、工作。你失去了namenode,你失去了集群。

于 2009-03-05T16:23:18.480 回答
1

分布式哈希表突然出现在我的脑海中......

于 2009-03-03T17:52:45.423 回答
0

另请查看MapReduce算法。这是一种获得高可扩展性的相对简单的方法,不会强迫算法设计者考虑锁定、通信等。有几种可用的实现,例如 Apache 基金会的开源Hadoop

于 2009-03-03T18:01:21.067 回答
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 和 Rupert 的无锁链接列表和跳过列表:http ://www.cse.yorku.ca/~ruppert/papers/lfll.pdf

Valois 使用比较和交换的无锁链表: http://portal.acm.org/citation.cfm?id= 224988

于 2011-05-28T05:33:15.347 回答
-1

您可能想查看Appistry EAF。它是一个分布式执行平台。它为您处理所有任务的故障转移,因此您不必将其构建到您的代码中。如果一个节点发生故障,另一个节点会自动接管。与 Grid 不同,没有集中式控制器,您可以消除这些类型的解决方案的单点故障/瓶颈。

最多可免费下载 5 台机器。

于 2009-03-06T19:42:47.990 回答
-1

比特流?:)

于 2009-03-03T17:42:47.163 回答
-1

您可以构建类似memcached的东西。每个散列条目可以是一个文件块(例如块到内容的 SHA 散列)。

于 2009-03-03T17:51:50.340 回答