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

  • 减少网络上的查询总数(通过广泛分发“流行”项目并将“相似”项目放在一起)
  • 避免每个节点存储过多
  • 在客户端停机、硬件故障和用户离开的情况下,确保即使是中等稀有的项目也具有良好的可用性(可能为档案管理员/历史学家检测稀有项目)
  • 避免在网络分区时查询无法找到匹配项

鉴于这些要求:

  1. 有没有标准的方法?如果没有,是否有任何受人尊敬的实验性研究?我熟悉一些分配方案,但我还没有看到任何真正解决学习鲁棒性的问题。
  2. 我是否遗漏了任何明显的标准?
  3. 有人有兴趣研究/解决这个问题吗?(如果是这样,我很乐意开源我这个周末组装的一个非常蹩脚的模拟器的一部分,并且通常提供无用的建议)。

@cdv:我现在已经观看了该视频,它非常好,虽然我不认为它完全达到了可插拔的分发策略,但它绝对是 90% 的方法。然而,这些问题强调了这种方法的有用差异,解决了我的一些进一步的担忧,并为我提供了一些后续参考。因此,我暂时接受你的回答,尽管我认为这个问题是开放的。

有帮助吗?

解决方案

如果你有时间的话值得一看 Wuala 发表的 Google 技术演讲. 。他们讨论了在构建对等文件系统时遇到的相同问题。

其他提示

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

亚马逊的发电机: 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/(这不是一个完整的系统,而是一些可用于构建系统的库)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top