2013-09-12 01:14
编辑:蝙蝠
阅读:
12696
次
指定时间同时进入考场,一声铃响后大家起立,停止作答,统一交卷,多么经典的考试场景,也是我们多数人对考试的理解,但在网络时代的在线考试系统中,以上模式真的适用吗?
在线考试系统,有两个环节既是网络高峰,也是计算高峰:
1、开考抽卷环节。试想,几百人同时进入考试,考试页面从服务器传向每一位考生的浏览器,网络非常拥挤,再者,考生的试题需要运用随机算法从几千上万道题库中随机抽取,抽出后还要对选择题选项进行随机分配等操作,计算量之大可想而知;
2、结束考试的交卷环节。同开考时类似,此时考生的全部考试情况要向WEB服务器提交,提交后服务器首先核对考生每道题的作答情况,并计算考生的成绩,计算完成后再将考试情况一条一条地写入数据库中,即使现代我们的CPU运算效率很高,从提交试卷到计算成绩到写完数据库以0.5秒计算,那100人同时考试也要50秒时间!----这意味着我们的WEB服务器“卡”了将近1分钟,有点荒唐!
蝙蝠在线考试系统如何应对以上问题?
1、试卷池机制。我们的试卷在系统中其实都是提前准备好的,即在内存中已经加载好了几份试卷,考生抽题时直接从试卷池中将一份试卷取走,而不是运用随机算法当场从数据库组卷,试卷被取走后系统再迅速补充一份新试卷,这样有效缓解开考时的抽卷压力问题;
2、交卷队列机制。我们的系统里有一种“异步提交试卷”的机制,即考生交卷时将试卷交给一个处理队列,而当前考试流程直接退出。这就好比我们去政务窗口办事,异步提交相当于把事情提交给办事员后我们就走了,办事员啥时办完啥时算,同步提交相当于我们在窗口外等,一直等事情办完后我们再去做其它事情。不难想象,这种机制能有效缓解众多考生交卷时的拥堵与服务器“卡死”的情况。
基于以上分析,在线考试是非常不适合同一秒内同时开考抽卷和结束的那一秒内同时交卷的,只要想办法把抽卷和交卷的时间分布在几分钟内就能实现负载均衡,否则将有可能带来网络数据包丢失,服务器卡死等严重风险。即使我们的“蝙蝠在线考试系统”做了试卷池和交卷队列等优化,但仍然存在网络堵塞的问题。
最后,在线考试相比于传统考试有着不可比拟的优点,但同时也有缺点,传统考试向在线考试的转换,不仅仅是一个简单技术系统应用问题,还是一个“业务流程重组”的过程,需要从管理方面配合。最后祝大家使用系统愉快!