搜索伴侣:一个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