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

Joh*_*fle 5 language-agnostic distributed p2p fault-tolerance machine-learning

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

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

鉴于这些要求:

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

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

Jus*_*ehy 2

有多个系统可以满足您所寻求的各个方面,并且每个系统都会做出不同的妥协,包括但不限于:

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

凯: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/ (这不是一个完整的系统,但有一些有用的库)在一号楼)