如何在对等系统中可靠但最少地分发项目

时间:2020-03-05 18:45:46  来源:igfitidea点击:

如果有一个可以查询的点对点系统,则希望

  • 减少整个网络上的查询总数(通过将"热门"项目和"类似"项目一起分布)
  • 避免在每个节点上过多的存储
  • 确保在面对客户端停机,硬件故障以及用户离开时(即使是中等程度的稀有商品)也具有良好的可用性(可能为档案管理员/历史学家检测稀有商品)
  • 避免在网络分区的情况下查询未能找到匹配项

鉴于这些要求:

  • 有没有标准的方法?如果没有,是否有任何受人尊敬的实验性研究?我对分配方案很熟悉,但是我还没有看到任何真正可以解决学习问题的方法。
  • 我是否缺少任何明显的标准?
  • 是否有人有兴趣解决/解决这个问题? (如果是这样,我很乐意将本周末聚集在一起的非常la脚的模拟器的一部分开源,并且通常会提供无用的建议)。

@cdv:我现在已经看过视频了,它非常棒,尽管我觉得它并没有完全适用于可插拔的发行策略,但肯定是90%的实现方式。但是,这些问题突出了这种方法的有用差异,这些差异解决了我的一些进一步担忧,并为我提供了一些后续的参考。因此,尽管我认为这个问题尚待解决,但我暂时接受回答。

解决方案

回答

如果我们有时间,值得看看Wuala进行的Google技术讲座。他们讨论了在构建对等文件系统时面临的同样问题。

回答

有多种系统,我们在寻找的各个方面都有所不同,每个方面都有不同的折衷方案,包括但不限于:

亚马逊的Dynamo:http://s3.amazonaws.com/AllThingsDistributed/sosp/amazon-dynamo-sosp2007.pdf

Kai:http://www.slideshare.net/takemaru/kai-an-open-source-implementation-of-amazons-dynamo-472179

Hadoop:http://hadoop.apache.org/core/docs/current/hdfs_design.html

和弦:http://pdos.csail.mit.edu/chord/

蜂巢:http://www.cs.cornell.edu/People/egs/beehive/

和许多其他。在按照这些原则构建了自定义系统之后,我也以开放源代码形式发布了一些构建模块:http://code.google.com/p/distributerl/
(这不是一个完整的系统,但是一些库对于构建一个库很有用)