搜索伴侣:一个P2P的IM系统

类别:软件工程 点击:0 评论:0 推荐:

搜索伴侣:一个P2P的IM系统

 欢迎讨论:MSN: [email protected]

 

系统功能... 1

定义... 1

系统构成:... 2

l         用户注册... 2

l         登录P2P系统... 2

l         获取永久BuddyList的在线信息... 2

l         发布上线信息... 2

l         搜索关键词发布和存储... 3

l         搜索兴趣相近用户... 3

l         搜索某用户的搜索关键词历史... 3

l         发送Message. 3

l         文件交换... 3

 

 

系统功能

本系统是一个IM系统,其特点是,借助于Google搜索,使相同兴趣的人可以互相联系。

 

基本工作流程:

1.  用户输入关键词搜索(从IM面板上或者从IE里的Google页面上)。

2.  搜索的过程中把关键词发送到P2P网络中,并保存到某些相邻用户那里。同时向P2P网络发送请求,获得最近一段时间搜索过相同关键词的用户

3.  把搜索到的上述用户加入到对应于该关键词的临时BuddyList中。

4.  用户可以点击Buddy条目聊天,或者查看他的搜索关键词的历史记录。

5.  用户可以把此用户加入到永久BuddyList中

 

该系统是一个可扩充的P2P网络系统,除了用于BootStrap的服务器外,整个查询/存储都在P2P网络中。所以只要设立一台BootStrap服务器,可以制成百万量级的用户。

定义

 

l         用户:

用户是使用客户端的普通用户,使用该系统时必须注册。

注册的内容至少需要:用户名(或ID号),别名

在整个系统中,用户名(或ID号)是唯一的。

由用户名(或ID号)可以获得唯一的本系统使用的128bit的ID(使用MD4)

l         相邻用户:

用户之间距离(由ID比较)比较近的用户

距离较近的用户与地理位置无关

 

系统构成: 用户注册

用户到注册服务器注册一个唯一的ID。

该ID不显示给对方,取散列值(MD4),可以发布或搜索信息。在IM面板上的显示信息也是该ID。此方法避免泄露用户信息。

登录P2P系统

用户登录到P2P系统的方式有两个:

l         通过中心服务器提供的BootHost列表boot

l         通过上次登录留下的本地文件boot

 

用户登录后,登录服务器断开连接。(从服务器获得BuddyList可选)

 

获取永久BuddyList的在线信息

用户登录后,获取永久BuddyList上的用户在线信息。类似于普通的IM系统。

获取的方式是发送Node查询信息:

l         Buddy的ID

发送信息到P2P网络中。

 

P2P网络返回ID的信息(如果用户在线的话),然后客户端根据用户信息确认用户是否真正在线。

 

发布上线信息

登录后把自己的在线信息发布到P2P网络中。发送信息:

l         我的ID

 

相邻用户存储我的ID信息,存储结构是多个ID的列表,每一个ID的信息:

l         上线时间

l         在线状态(在线类型)

存储用户可以丢弃上线时间过长的用户。所以任何一个在线用户必须周期性发布上线信息。

 

搜索关键词发布和存储

用户搜索的关键词,做成MD4 Hash,发布到与该关键词相近的用户ID那里。

发送内容:

l         关键词的MD4 Hash

l         发布时间

l         生存周期

l         用户信息

 

P2P用户接收到其它用户发布的关键词,如果是相邻用户则存储。

存储内容:关键词作为索引,每一个关键词包含用户列表:

l         用户ID

l         用户信息(IP/Port等)

搜索兴趣相近用户

用户搜索时,同时从P2P网络搜索对应于该关键词的用户。发送信息:

l         关键词的MD4

l         用户ID和其它信息

存储用户返回对应于该关键词的其它用户信息:

l         用户ID

l         用户IP/Port等

 

搜索某用户的搜索关键词历史

在搜索到兴趣相同的用户后,可以根据该用户信息,从应用层获得该用户的搜索历史列表。

发送Message

同普通IM,在应用层发送Message.

文件交换

同普通IM,在应用层传输文件。

本文地址:http://com.8s8s.com/it/it32753.htm