论文部分内容阅读
在线测评系统降低了编程作业的检阅难度,使得作业检查更加公平准确。由于在线测评系统中有编译运行程序环节,占用了大量的系统资源和CPU时间,当大量用户集中访问系统提交作业时,出现了用户等待时间长,系统稳定性差,更甚有系统崩溃等现象。因此如何在并发访问用户量大的情况下,为教学提供一个性能稳定响应时间短的在线测评系统成为一大难题。本文针对这样的问题提出了基于Hadoop的在线测评系统。本文首先分析了在线测评系统的发展现状并对其不足进行了分析与总结,指出了在线测评系统系统设计粗陋和反馈数据不科学等缺点。因此,论文基于Java web技术提出了一个新的系统,该系统主要分为三层:web服务层、数据库服务层以及判题服务层,在限制用户程序运行时间方面,使用Linux操作系统下的proc接口、管道和ptrace进程来跟踪并返回子进程的状态,使用户时间限制的最小单位达到1毫秒。根据分布式的在线测评系统的研究现状,提出将在线测评系统分布在云平台上。针对在线测评系统的分布式需求,研究了Hadoop的框架结构以及HDFS的存储原理和读写文件过程,然后提出将在线测评系统部署在Hadoop集群中,并将相关文件存储在HDFS文件系统中以此提高系统的判题能力。为了使得集群的整体性能达到最优,充分利用每台服务器的资源,本文分析了当前的负载均衡发展现状,发现已有的负载均衡算法在分配任务时没有考虑到每台服务器的状态变化,导致集群的整体性能不是很好。在此基础上,提出了一个基于神经网络的动态反馈算法,通过Linux下的proc文件系统接口动态收集每个服务器的负载信息,并将这些负载信息输入神经网络计算模块,根据神经网络计算模块的输出和加权轮询算法来为当前的任务选择最合适的服务器。该算法提高了集群中的在线测评系统的整体性能。最后分别对单机模式下的在线测评系统和基于Hadoop集群的在线测评系统进行功能测试和性能测试。在同样的集群环境下,通过设置不同大小的并发用户量和不同的负载均衡算法,比较在线测评系统的响应时间,并对结果作分析可得出结论:基于神经网络的动态反馈算法,确实提高了系统并发访问的性能,减少了用户等待时间,为用户提供了一个性能良好的在线测评系统平台。