给出几篇介绍原理的文章 CHORD: A Scalable Peer-to-peer Lookup Protocol for Internet application,文章很长,但是看完前面5,6页就知道原理和复杂度等。 CAN:A Scalable Content-Addressable Network Gnutella相关的文章很多,它也是无结构化P2P系统的始祖,大家随便搜一下就可以了。 GIA:Making Gnutellalike P2P Systems Scalable 小世界相关语义路由:Associative Search in Peer to Peer Networks: Harnessing Latent Semantics Efficient Content Location Based On Interest-Cluster in Peer-to-Peer System(推荐) Clustering in Peer-to-Peer File Sharing Workloads Small-World File-Sharing Communities RDF相关语义路由:这个最好对RDF和语义Web有一定的了解,EDUTELLA:A P2P Networking Infrastructure Based on RDF SuperPeerBased Routing and Clustering Strategies for RDFBased PeerToPeer Networks 这些文章一般都集中于理论上的讨论,不牵涉到具体编程。而且,目前来看资源的查询是研究的重点,一般不会过多讨论下载的负载平衡问题,这个好像可以参考BT。还有,源代码的话sourceforge上有很多的,不过这个我不懂的(菜)。
分布Hash Table:这个比较专业,可以参考CHORD和CAN。但是利用哈希函数的系统一般都属于结构化的P2P系统,如果你想彻底了解P2P系统的话,最好看看非结构化的P2P系统,比较出名的模型有Gnutella,Gia等。目前来看,这一类系统还是应用的比较广泛的,原因的话涉及到系统的鲁棒性,可扩展性,半匹配语义查询可操作性等等。
资源检索:不同的P2P系统的检索机制不一样,CHORD和CAN比较容易,利用哈希函数直接定位,当然为了提高效率会利用诸如finger表的技术。Gnutella等最原始是利用泛洪法进行资源发现的,改进以后出现了很多技术:资源复制,superpeer,利用小世界现象优化查询,语义路由等。
资源共享:P2P系统的资源不都是共享的吗?如果指的是共享策略的话就比较复杂了。
错误信息排除:不同的系统也不一样,CHORD和CAN等都是错误敏感的系统,为了维护环的结构需要做很多处理,所以这类系统不能应用于高动态性的环境中。Gnutella等就比较好一点,本身就是一个松散的结构,错误处理相对简单。具体的细节还是请参考rfc或则是相关论文。
存入其他机器上,
如何选取的要存储共享信息的机器,
如果这些东西不共享,成为垃圾信息,何时清除
当用户要搜索东西时能否介绍一下流程
CHORD: A Scalable Peer-to-peer Lookup Protocol for Internet application,文章很长,但是看完前面5,6页就知道原理和复杂度等。
CAN:A Scalable Content-Addressable Network
Gnutella相关的文章很多,它也是无结构化P2P系统的始祖,大家随便搜一下就可以了。
GIA:Making Gnutellalike P2P Systems Scalable
小世界相关语义路由:Associative Search in Peer to Peer Networks:
Harnessing Latent Semantics
Efficient Content Location Based On Interest-Cluster in Peer-to-Peer System(推荐)
Clustering in Peer-to-Peer File Sharing Workloads
Small-World File-Sharing Communities
RDF相关语义路由:这个最好对RDF和语义Web有一定的了解,EDUTELLA:A P2P Networking Infrastructure Based on RDF
SuperPeerBased Routing and Clustering Strategies for RDFBased PeerToPeer Networks
这些文章一般都集中于理论上的讨论,不牵涉到具体编程。而且,目前来看资源的查询是研究的重点,一般不会过多讨论下载的负载平衡问题,这个好像可以参考BT。还有,源代码的话sourceforge上有很多的,不过这个我不懂的(菜)。
不明白如何将自己机器的共享信息生成hash值后,
存入其他机器上,
如何选取的要存储共享信息的机器,
如果这些东西不共享,成为垃圾信息,何时清除
有关小世界模型倒看过几篇文章,可具体实现还是不明白有很过高过p2p软件的高手进来讲讲
http://citeseer.ist.psu.edu/554447.html
其它的文章应该也不难找,至少在citeseer绝大部分都有,还有估计看过文章后会对那几个问题比较清楚一点。