随着计算机科技的发展和互联网+应用的日益普及,网络教学和在线考试系统已逐步成为传统教学、考试模式的有效补充。该文基于J2EE平台讨论构建在线考试系统,并论述利用缓存预取一体化技术优化系统性能。
《中国电子科学研究院学报》(双月刊)创刊于1990年,由中国电子科学研究院主办。主要发表电子信息系统研发和综合集成领域内的技术和学术研究论文。聘请行业内工程院院士等资深专家以及近年来在此领域内卓有成就的中年专家组成编委会。办刊宗旨:注重研究成果,提高理论水平。
随着互联网科技日新月异的发展,网络教育培训由于其不受时间和空间的限制,规模不断发展壮大,已成为教育培训中不可或缺的重要组成部分。利用网络培训平台学员可自主制定培训计划,即可以顺利完成培训任务又不会影响其正常的工作和生活。在线考试系统作为检验培训效果的重要工具,开发技术已经非常成熟。但基于大规模用户并发访问的考试系统,在实际应用过程中还是会存在一些问题。想要提升优化考试系统性能,当应对大规模用户并发访问时,就要求系统有较高地稳定性和较快的响应速度。
本文基于J2EE平台讨论构建在线考试系统,并通过对比分析,讨论缓存和预取技术对优化考试系统f生能所起到的积极作用。
1应用技术
开发在线考试系统的主要目的是借助互联网搭建考试平台,使得用户可以通过直接访问互联网参加考试,从而打破传统考试模式对时间和空间的限制。系统开发使用J2EE平台,采用MVC设计模式、B/S结构,使用技术包括:JAVA、Ajax,数据库选用SQLserver2008。
1.1MVC模式概述
MVC(Model-View-Controller模型-视图-控制器)是一种设计模式,可以实现模型和视图的代码分离。在MVC中输入、处理、输出互相分离,整个系统分为:模型、视图、控制器三个模块。
1.2Ajax技术简介
Ajax(Asynchmnous JavaScript And XML异步JavaScript和XML),它通过Ajax引擎工作,使得客户端只和服务器进行少量的数据交换,例如页面显示等信息不必重复加载,而是对部分重要的数据进行更新,从而实现网页异步更新。
在传统的交互方式中,用户向服务器发送一个HTTP请求,例如点击链接或按钮,服务器响应请求完成处理任务后返回一个HTML页面给用户,在服务器进行响应操作时,用户只能空闲等待。在Ajax的异步存取模式中,用户在等待服务器处理数据、响应操作的过程中仍然可以进行其他操作,节省了时间、提升了效率。服务器完成了响应操作之后,Ajax引擎通过函数将处理结果显示给用户。
2系统需求分析及设计
2.1系統需求分析
需求分析是整个系统开发的关键一环,也是最先进行的环节。在线考试系统的开发目的是利用互联网科技,建立考试平台。命题者可以通过平台设置、发布考试试题;参考者通过平台在线学习及报名参加考试,而不必在统一地点集中考试,该种学习、考试形式更适用于网络培训;阅卷者可以通过平台进行阅卷,平台也具备客观题自主阅卷的功能;通过平台也可以发布考试信息、考试结果、考试分析等信息。
系统基本功能模块:1)在线学习模块、2)命题组卷模块、3)在线考试模块、4)阅卷模块。
2.2系统总体结构设计
系统采用B/S(浏览器/服务器)结构,不需要专门安装客户端软件,降低系统使用门槛,有助于系统的普及应用及更新升级。系统总体结构分:表示层、功能层、数据层三层。数据库选用SQLServer2008。
(图1)为系统三层体系结构:
3缓存预取技术在系统中的应用
作为在线考试系统,能否稳定地支持大规模用户并发访问是衡量系统性能的一项重要标准。传统的考试系统中,服务器承担了大量的工作,而客户端只负责简单的人机交互。试题及用户答案的保存、试题的解析和答案的匹配等工作都由服务器完成,这样的布局使得服务器负担过重,当用户访问量急剧增加时,服务器压力过大易出现问题而影响系统的正常工作。与此同时客户端则处于闲置等待的状态,造成资源利用率低下。为了改善系统性能可以考虑升级服务器或采用服务器集群,但这样势必会增加系统成本。本文考虑充分挖掘客户端资源,利用缓存与预取相结合的技术,将部分适宜由客户端完成的工作交由客户端处理,减轻服务器负担,提升系统效率。
3.1系统缓存
缓存技术的提出目的是解决系统运算和系统存储过程的时间差异。在考试系统实际运行过程中,缓存主要是由客户端先从服务器端获取所必需的数据信息,之后暂停与服务器之间的通信,直到下一次信息的获取。缓存主要分为三类:服务器端缓存数据、代理端缓存服务器端数据、客户端缓存数据。为了尽可能缓解服务器压力,开发客户端的运算能力,转换服务器的角色,当大规模用户并发访问时段,服务器仅仅充当一个分发及收集用户数据的角色,关于数据的运算分析交由客户端执行。用户登陆系统以后将用户试题下载到客户端,暂停和服务器之间的通信,所有试题的解析及用户答案的匹配都在客户端进行,用户完成部分答题后将答案转换为系统格式传输到服务器,并由服务器存储到用户数据库中。在执行过程中,尽可能提升了客户端的利用效率,减轻了服务器的压力,当大规模用户并发访问时,服务器的负载也只是适当增加,不会造成系统运算量和存储量过快增加。
下面以用户翻页操作为例,分析缓存技术对服务器和网络带宽的影响。(图2)
通过对比分析,采取缓存技术可以节省分析答案并匹配的时间,另外,部分答案内容也不需传输至服务器。因此,适度开发客户端的运算能力即节约了时间、减轻了服务器的负担,也提升了整个系统的工作效率。
3.2系统预取
单纯依靠缓存技术,在试题内容不是很多的时候可以缓存全部试题和答案。当试题量很大的时候只能对部分内容进行缓存,为了加快系统的响应时间,可以通过预取技术对系统下一步需要的数据进行预测,提前进行缓存。通过预取和缓存技术相结合减少了服务器的负担,提升了客户端资源的利用率。
(图3)有无预取技术工作流程对比
通过分析对比,采用预取技术可以大大节省系统的响应时间,改善用户体验。
3.3缓存预取一体化
用户在实际使用考试系统的过程中,往往是按照一定规律进行答题和检查。我们可以通过预测用户的答题顺序,根据缓存实际容量的大小将用户正在使用和即将会使用到内容先预取到缓存中。当缓存内容过满时,将使用几率较低的页面从缓存中移除。通过缓存和预取一体化技术尽可能地提升系统资源的利用率,保障系统的稳定性,便于应对大规模用户并发访问。
4结束语
构建在线考试平台,能够突破传统教学考试模式对时间和空间的限制,节省了大量的社会资源。但由于系统硬件、软件及网络带宽等多方面因素的影响,系统在实际使用过程中还是会受到种种制约。为了进一步提升系统性能,改善用户体验,本文讨论主动预取与被动缓存相结合的设计思路。尽可能地开发客户端的运算能力,将能够由客户端完成的工作交由客户端负责完成,使得当大规模用户并发访问的时候,系统不会由于服务器本身负担过重而导致响应缓慢甚至系统瘫痪。适度开发客户端的运算能力对客户端本身的配置要求并不是太高,在不大量增加系统投入的情况下,通过策略调整提升系统稳定性及增强系统工作效率。