何 亚 曾志文
[摘 要]针对网上选课系统因短期高负载而导致性能降低甚至崩溃的问题,提出采用P2P技术将选课的负载分布在客户端,提高选课系统的性能。对基于P2P和JXTA的选课系统做了总体设计,包括服务器端、客户端以及数据库的设计。
[关键词]P2P JXTA 选课系统
[中图分类号]TP319[文献标识码]A[文章编号]1007-9416(2009)11-0004-02
1 前言
目前大部分高校的选课系统是基于B/S架构的,所有的学生都要从服务器获取学期开课信息以及自己已经修过的课程等信息;同时服务器要对每个学生选择的课程进行判断,使得服务器的负担很重,造成系统响应时间增长,甚至导致系统崩溃。这种短期的高负载特性,使得选课系统无法进行选课,影响选课的正常进行。
基于此,本文设计了一种分布式选课系统,从当前热门的分布式技术P2P出发,利用P2P网络中,节点之间可以直接交换资源而不必通过服务器。在客户端实现相同专业的学生可以从其他的客户端共享学期开课信息。而对学生个人的已修课程、所得学分学时等信息,这些信息是每个同学都不一样的,则从服务器下载。将对学生所选课程的检测转移到客户端处理,减轻服务器的负担。
1.1 P2P技术介绍
P2P技术,也称对等网络或点对点(peer to peer)技术,是一种网络结构的思想,是目前国际计算机网络技术领域研究的一个热点。它打破了传统的客户端/服务器(C/S)模式,在对等网络中,每个节点的地位相同,具备客户端和服务器双重特性,可以同时作为服务使用者和服务提供者,整个网络结构中不存在中心节点(或中心服务器)。目前P2P模型可以分为以下几个种类:
(1)纯P2P模型:采用随机图的组织方式形成一个松散的网络,不依赖任何中心服务器,网络配置简单。一旦P2P应用程序下载到计算机内存中,网络中的端就动态地发现其他连接的端,相连端之间的通信完全不需要来自服务器的任何帮助。纯P2P模型存在的问题就是网络上的端发现问题,因为没有一个中心管理者注册登录到网络上的端,所以用户必须自己定位其他的端。另外,这种网络直径不可控,可扩展性差。
(2)带有一个简单发现服务器的P2P :在这种网络中,服务器仅提供相连端的清单来辅助端,建立连接和通信仍然是端之间的事情。为了查询某个文件,计算机必须逐个询问所有的端,直到找到所需的资源或者返回错误信息,可见这种网络的效率很低。
(3)带有发现和查找服务器的P2P:这种模型中,服务器用来提供相连端的清单和它们的可用资源。这种模型减轻了端的负担,因为不再需要通过访问每个端来查找必要的信息。这种模型中的服务器初始化两个端间的通信,然后这两个端建立通信、保持连接并执行各种活动。
3 JXTA简介
JXTA技术是美国Sun公司针对原有P2P系统的缺陷而设计的一种解决现代P2P分布计算的网络编程和计算平台。该技术致力于创建一个通用的平台,提供P2P程序所需的底层服务。JXTA技术的核心在于一套独立于编程语言、系统平台和网络平台的协议集。JXTA由6个协议组成,这套协议集描述和实现了P2P应用最基本的需求,其中的每一个协议都可以很容易地实现和集成到P2P的服务和应用中。使用这些协议,对等点可以互相合作建立自我组织、自我管理的对等组,不必关心他们在刚络中的位置,并且不需要集中式的管理机构。
JXTA的体系结构由三层组成:最底层是JXTA核心层,这一层封装了最根本的东西,包括对等点、对等组、Peer发现、Peer通信、Peer监视和相关的安全原语;服务层扩展了核心层的功能,它包括对于P2P网络不是必需的、但很通用的功能,如查找、共享、索引、代码缓存和内容缓存的机制;应用层包括了应用JXTA服务构建出的P2P应用程序。
4 基于P2P和JXTA的选课系统的设计
结合P2P模型的特点,系统中采用带有发现和查找服务器的P2P模型。系统总体结构如图1所示。其中,虚线代表登录消息,它是在客户端和服务器端之间进行;实线代表选课信息数据的请求和传输路径,在客户端之间或客户端和服务器端之间进行。如果没有该专业在线的客户端时,服务器就发送学期开课信息和学生本人的己修课程信息到客户端;有的话,服务器就发送在线节点的信息和学生本人的已修课程信息,请求的客户端根据在线节点的信息,从中选择一个邻近的节点,建立连接去共享学期开课信息。每一个客户端既能成为数据传输服务器,也能成为数据接收客户端。客户机从服务器获取己登录的客户端列表,与邻近客户机建立连接,完成数据传输,传输过程不经过目录服务器,因此可以大大减少服务器的工作量。
4.1 服务器设计
服务器端主要的功能包括消息管理,路由表维护,文件管理,教务管理员和教师模块。
4.1.1 消息管理模块
负责与客户端的通信,向客户端发送或者接收来自客户端的消息。服务器接收到的消息有以下几种:
(1)登录消息:消息管理器接收到登录消息后,调用路由表管理模块,更新路由表,并在路由表中查找相同专业的在线节点的信息,然后把检索结果发送回客户端。对应消息的命令是:ListOnlineUserInfo。
(2)获取选课信息的请求:当客户端不能在其他在线节点获得学期开课信息时,向服务器请求获取学期开课信息,消息管理器调用文件管理模块,根据学生所在的专业,根据客户端的输入管道与客户端建立通信,发送该专业的学期开课信息。对应消息的命令是:GetCourseData。
(3)接收选课结果信息:当客户端完成选课后,向服务器提交选课结果,消息管理模块调用文件管理模块响应请求,并把数据保存到数据库中。对应消息的命令是:PostCourseData。
(4)注销:当学生退出选课时,给服务器发送注销的消息,消息管理模块调用路由表管理函数更新路由表,在路由表中删除该客户端的信息。
4.1.2 路由表管理
为了记录所有在线节点的信息,服务器维护一张在线客户端的信息表,当有学生登录时,记录客户端的信息并且查询相同专业的在线节点信息返回给客户端。当学生退出选课系统时,从路由表中删除学生信息。路由表中记录的节点信息主要包括学生学号、年级、专业、客户端的IP地址和输入通道ID。
4.1.3 文件管理
服务器端需要传输的信息包括将学期开课信息和学生个人的已修课程信息发送给客户端,接收客户端提交的选课结果。
4.1.4 教务员模块
教务管理员的功能主要是对学生、班级和课程信息进行管理及查询,开课审批,批量选课,选课结果审核,数据库备份和发布公告。
4.1.5 教师模块
教师模块的功能主要是开课申请,查看选课学生,打印选课学生和考试成绩管理。
4.2 客户端设计
为了减轻服务器的负担,系统将对每个学生所选课程的检测转移到客户端处理,采用Java的Applet方式实现。客户端的功能主要包括文件管理,消息管理和学生选课三个模块。
4.2.1 文件管理
和服务器端类似,文件管理模块需要实现XML文件的生成与解析。主要包括将服务器或者其他节点传输来的学期开课信息和学生个人的已修课程信息进行XML文件的解析,将选课结果生成XML文件提交给服务器。
4.2.2 消息管理
负责与其他客户端和服务器进行通信,向其他端发送或者接收来自其他端的消息。当客户端启动后,建立一个输入管道通告,并监听管道,当接收到消息的时候,就根据消息中的命令调用相应的应答函数,处理完后向其他端发送响应消息。客户端接收到的消息有以下几种:
(1)接收用户列表消息:消息管理器接收到服务器发送来的在线节点信息,从中选择一个邻近的节点,建立连接,进行通信。
(2)发送获取选课信息的请求:向同专业的在线节点发送获取选课信息的请求。
(3)接收获取选课信息的请求:当收到其他的客户端需要获取学期开课信息的请求时,根据对方的输入管道ID建立通信,发送选课信息。
(4)提交选课结果:选课完成后,将选课结果提交给服务器保存。
4.2.3 学生选课模块
为了减轻服务器的负担,将学生选课的业务处理程序以Applet的方式嵌入在客户端页面中。学生选课模块的功能主要包括:查看开课信息、查看已修课、选课、查看己选课以及退选课。
4.3 数据库设计
选课系统中的数据库主要存储各专业的学期开课信息和选课结果信息,数据库中主要的表包括:在线节点信息表(学号、IP地址、年级、专业)、管理员表(用户ID、用户名、密码、系部)、教师信息表(教师ID、教师姓名、系别、密码、教师简介)、开课信息表(课程编号、课程名称、开课学期、开课年级、开课专业、主讲教师、教师介绍、课程介绍、上课时间、上课地点、先修课、学时、学分)、选课结果表(学号、课程编号、课程名称、选课学期、学时、学分、上课时间),还要使用教务系统中其他子系统中的数据,如学籍系统中的学生基本信息表等。
5 结语
P2P 技术为互联网的发展带来了深远的影响,也为IT产业带来了无限的商机,最近几年,P2P技术更是发展迅速。目前,在文件共享、分布式计算等应用领域P2P显示出很强的技术优势。相信随着对P2P 技术研究的不断深入,P2P所带来的技术创新和应用创新还将继续,它将为社会的发展做出巨大的贡献。
[参考文献]
[1] 陈贵海.对等网络:结构、应用与设计 [M].北京:清华大学出版社,2007.
[2] 孔祥祯. 浅谈P2P网络结构[J].科技广场,2009,(1):232-234.
[3] Ralf Steinmetz . P2P 系统及其应用 [M].北京:机械工业出版社,2008,9-15.
[4] 陈锋.基于JXTA的P2P文件共享系统的实现研究[J].计算机科学,2007,34(12):126-128.
[5] 苗坤.基于JXTA的P2 P文件共享系统[J].计算机系统应用,2009,(2):9-13.