论文导读:本文的虚拟校园的系统管理主要是对系统中所有的资源的管理,如查找用户或活动组、加入或创建活动组等功能。专题讨论主要是利用专题讨论活动组(P2PVCC中基本活动组的一个子活动组)把大家组织起来就某一个专题轮流发言、深入讨论,它不同于当前流行的聊天室聊天。由于使用了JXTA的缓存机制,通告被缓存在各个对等点上,直到缓存到期而消失。
关键词:P2P,JXTA,虚拟校园
1 引言
随着近年互联网技术的发展,一种新的 P2P 网络技术逐渐引起人们的注意[1]。所有接入 P2P 网络的设备都作为对等点组成了一个对等网,各对等点之间地位平等,可任意通讯而不需通过服务器的中转,回归了人类社会中人们互相交往的本源,和现实校园社区中的学生与学生、学生与教师、教师与教师之间平等的、并发的、多边的交流完全一致与吻合。因此,如何将上述两点结合起来,研究与实现一个基于 P2P 的虚拟校园社区(P2P-based Virtual CampusCommunity,以下简称 P2PVCC),就具有重要的现实意义。
本文的虚拟校园的系统管理主要是对系统中所有的资源的管理,如查找用户或活动组、加入或创建活动组等功能;即时短讯主要是面向虚拟校园社区中全体成员或个别用户发送简短的通知等消息,它不能保证准确传送;专题讨论主要是利用专题讨论活动组(P2PVCC中基本活动组的一个子活动组)把大家组织起来就某一个专题轮流发言、深入讨论,它不同于当前流行的聊天室聊天;作业管理主要是利用作业管理活动组(也是基本活动组的一个子活动组)来实现作业题目的发放、答案的回收等,合理安排缓存机制保证了收发双方即使不同时在线也不影响作业的收发,采用了加密、签名等技术保证了作业的安全性。
2 基于P2P的虚拟校园
2.1P2PVCC 的体系结构
P2PVCC 的设计中将整个系统分为三大快,即 GUI 部分、P2P 部分和消息管理部分。
GUI 部分主要完成系统与用户的人机交互。系统提供的所有功能都通过 GUI 体现,用户的所有操作都通过 GUI 传递给系统。
P2P 部分是系统的主要部分,它实现了系统的具体功能。整个P2PVCC 是一个对等组,叫基本管理对等组。任何加入 P2PVCC 社区的用户都是且必须是该对等组的成员,作为一个对等点[2]。专题讨论、作业管理等功能由该对等组创建子对等组(专题讨论对等组、作业管理对等组等)来实现。具体的系统结构如图 2.1
消息管理部分实现了各种消息格式的定义和存储。它保存了 P2P 部分的处理结果。P2PVCC 体系结构的划分较好地体现了分层设计的设计思想,这有效降低了系统的复杂性,降低了设计难度,也有利于系统的扩充和升级。

GUI部分 登录部分基本活动组界面专题讨论界面作业管理界面
P2P部分 基本活动组专题讨论组作业管理组
消息部分即时短讯发言记录 作业通告
图 2.1 P2PVCC 体系结构
2.2P2PVCC 的功能设计
P2PVCC 的主要功能如图 3.2 所示

图 2.2 P2PVCC 功能结构
2.3消息报文的设计及适用的通信机制
在 P2PVCC 系统中,主要有以下几种消息:
1、即时短讯消息,通过解析器服务传送。
格式:IMTalk:Source:Text
其中,IMTalk 指明为即时短讯消息,Source为消息发送者名称,Text 为消息内容。
2、专题讨论消息,通过管道传送。
格式:Flag:Source:Target:Text
其中,Flag 为专题讨论消息类型(有Speak 发言、Apply 申请、Send移交、Find 查找四种),Source 为发送者名称,Target 为目标名称,Text为消息内容。对每种具体消息类型,有些字段为空。
3、作业消息,封装进通告后通过发现服务发布到对等组中,由使用者通过发现服务搜索。论文参考。
3 系统中关键部分的实现技术
3.1P2PVCC 的登录处理
任何对等点想要加入 P2P 网络,首先必须配置必要的端口信息[4]。考虑到 P2PVCC 的各个子活动组有相应的安全认证措施,不使用 P2PVCC基本活动组所提供的成员认证服务,而是使用哈希算法进行口令校验。即对用户输入的口令进行 MD5 哈希计算,所得到的值与存储的哈希值进行比较,如相同即为有效口令。由于哈希算法的不可逆性,恶意侵入者无法从哈希值倒推出原始口令,保证了系统的安全。考虑到为普通的应用,使用 128 位的 MD5 算法已绰绰有余。
3.2P2PVCC 初始化
P2PVCC 基于该对等组创建基本活动对等组 BasicGroup。首先,它使用NetPeerGroup对等组的发现服务来寻找BasicGroup对等组通告(先在本地缓存中寻找,如找不到再使用发现协议远程寻找)。论文参考。如果没有找到 BasicGroup 通告,就必须创建一个新的 BasicGroup 通告,并使用该通告创建新的 BasicGroup 对等组,同时把 BasicGroup 通告自动发布出去,以供其他对等点可以查找。如果找到了 BasicGroup 通告,就使用该通告加入 BasicGroup 对等组。
3.3加入各个子活动组
1、在 BasicGroup 活动组中加入子活动组的过程和在 NetPeerGroup对等组中创建 BasicGroup 活动组的过程相似。先使用发现服务来寻找各个活动组的通告[3](先在本地缓存中寻找,如找不到再使用发现协议远程寻找)。如果没有找到活动组通告,就必须创建一个新的活动组通告,并使用该通告创建新的活动组,同时把活动组通告自动发布出去,其他对等点可以查找到。如果找到了活动组通告,就使用该通告加入活动组。
2、由于作业管理的重要性,加入作业管理活动组 WorkGroup 的成员要接受成员资格验证。每个希望加入该活动组的成员都必须创建一个初始的验证证书文档,并使用该验证证书文档调用对等组的成员服务,以获得应用于该文档的验证器,再向该验证器提供适当的信息。经验证器验证合格之后才允许加入活动组。
3、P2PVCC 设计时充分利用了 Java 中的线程类技术。利用多线程技术,使各个对等组可互不干扰,同时运行。这样用户可以同时进行专题讨论、收发作业,还可查找在线用户等。除基本活动组外,任一子活动组可以随意加入/退出。基于 P2P 的虚拟校园社区的研究与实现
3.4专题讨论活动组 DiscussGroup的几个重要过程
1、加入 DiscussGroup 活动组的每个用户必须作以下的初始化工作:创建自己的输入管道,并把输入管道通告发布出去。监听该输入管道上的输入。收到消息后进行处理,如果是发言信息,则更新相应的显示;是查询发言权的消息,则根据自己是否具有发言权分别给出回答;如果是送给自己发言权,则开始发言。定时查找当前在活动组中的对等点和其输入管道通告,并分别建立队列。论文参考。查找并保存当前具有发言权的对等点。
2、申请发言
1)先查找具有发言权的对等点,如找不到自己创建发言权。
2)向具有发言权的对等点申请发言,由后者按优先权大小排队。
3)如超过一段时间收不到发言,则重新产生发言权。
4)如轮到自己发言,则开始发言。
3、发言过程
1)建立连接各对等点的输入管道的输出管道。
2)把自己的发言输出、申请发言队列,编成管道消息,通过输出管道向各对等点的输入管道发送。
3)如收到发言申请,按其优先权派入申请队列。交出发言权时,申请队列一并交出。
4)发言时间到或自己主动结束发言时,把发言权交给申请队列的头一位。
5)如收到其他对等点的发言,出现发言冲突时,按冲突避免规则处理,直至只剩一个发言权。
6)为保证各对等点关于发言者的发言时间统一,由发言者提供自己的发言剩余时间。接收者用该剩余时间初始化自己的发言计时器。
3.5作业的发布和搜索
各种作业都封装进模块规范通告(ModuleSpecAdvertisement),再发布出去。
由于使用了 JXTA 的缓存机制,通告被缓存在各个对等点上,直到缓存到期而消失。这样,在缓存期内,即使作业的收发双方不能同时在线,也不影响作业的收发。
根据对作业生存期的不同要求,可相应调节通告的缓存时间。
其他用户可以通过对通告的搜索来查找自己需要的信息。从通告中解析出信息的过程是生成过程的逆过程。
4 结论
对 P2PVCC 进行了系统分析,并与相应的通信机制相结合,设计了消息报文的格式。提出了 GUI 部分、P2P 部分和消息管理部分三层体系模型,进行了总体功能设计。分为基本活动组模块、专题讨论活动组子模块、作业管理活动组子模块三大部分,具体设计实现了 P2PVCC 原型系统。论文对重要和关键的模块进行了详细的阐述。
参考文献
1.Daniel brookshier 等, 常晓波等译. JAVA P2P 程序设计,中国电力出版社:北京,2003.1
2. 许斌. JAVA 网络编程技术,电子工业出版社:北京 2003.6,
3.Scot tOaks 等, 技桥译. JXTA 技术手册,清华大学出版社:北京,2004.4
4. 窦文, 王怀民,贾焰,邹鹏,构造基于推荐的Peer-to-Peer环境下的 Trust基于 P2P 的虚拟校园社区的研究与实现模型,软件学报,2004.4
5. 吴齐殷著. 虚拟社区的“生活经验”对真实生活的影响,机械工业出版社:北京,2004.2
6. 孙婷.关于青少年使用熟人虚拟社区的调查分析,当代青年研究,2003.1
|