论文部分内容阅读
随着存储空间的增大和存储价格的下降,即使是一个较小的P2P用户群也会共享大量的数据。大量的共享资源使得P2P系统吸引了大量的用户,但困难的是如何在大量的共享资源中寻找用户想要的资源。本文在分布式散列表(DHT)思想的基础上,设计并初步实现了一个基于元数据的对等信息系统MPIS(Metadata-based Peer-to-Peer Information System)。由于网络资源具有多样性和复杂性,为了准确表述用户对资源的要求,也为了使系统返回给用户的结果能更好的满足用户需求,需要用多个属性从不同角度描述资源,从而构成这个资源的元数据。利用DHT可以将单个键映射到网络中节点的特点,在发布资源时,MPIS将资源的各个属性对应的倒排索引发柿到特定的节点;在搜索资源时,用户根据实际需要指定一个或多个资源属性值作为搜索条件,MPIS根据用户指定的各个属性搜索条件将搜索请求路由到存放各个属性倒排索引的节点,并将多个属性值对应的倒排索引求交集以使得结果满足用户的所有条件。我们利用Tapestry的DHT模块,采用Java语言,实现了一类比较典型的带有元数据的资源(MP3音乐文件)的发布和搜索。对于搜索时经常一起使用的属性,我们使用组合属性的方法进行发布和搜索,从而减少了倒排索引传递时的网络传输和求交集时的CPU周期。考虑到属性的同义性和近义性,我们在系统中建立常用的近义词库来扩展搜索的范围。另外我们使用虚节点的方法模拟大盘节点来检验我们的系统,并且这种方法在一定程度也可以起到负载平衡的作用。论文首先介绍了P2P的基本概念,然后从结构角度出发分别介绍了四类搜索技术并对其各自的优缺点进行了介绍;接着研究了如何基于Tapestry构建P2P资源搜索系统;随后详细叙述了MPIS的设计方案和实现的关键方法;最后实验性地使用MPIS发布和搜索一些资源,分析MPIS的效率以及其他一些相关问题,展现了MPIS的实用性。