基于开放式云平台的开源在线评测系统设计与实现

基于开放式云平台的开源在线评测系统设计与实现

张浩斌

ZHANG Hao-Bin

浙江传媒学院 新媒体学院 浙江省 杭州市 310018

Department of New Media, Zhejiang University of Mediaand Communications, Hanzhou 310018, China

Design and Implementation of the Open Cloud Platform Based Open SourceOnline Judge System

Abstract: Designed andImplemented the Open Cloud Platform Based Open Source Online Judge System fromthe applicable view. The systemresolved a set of problems in deploying online judge system by universities orresearch institutions, which included implementing, deploying, maintenance and questions acquiring.Discussed the Feasibility theoretically and proved it by running codes andapplicable system. By releasing all the source code, provided a new way toimprovement online judge system.

Keywords: Online Judge; Distribution System; Open Cloud Platform; OpenSource Software; XML

摘要:

从应用角度出发,设计并开发了基于开放云平台的开源在线评测系统。该系统从系统实现、系统搭建、平台运维及题目的获得等诸多方面解决了大学和科研机构搭建在线评测系统的困难。从理论上论证并用实际代码和实际系统检验了系统的可行性,开放了全部源代码,为在线评测系统的改进找到了新途径。

关键词:在线评测系统; 分布式系统; 开放式云平台; 开源软件; XML

1.在线评测系统的现状与应用难点

在线评测系统(Online Judge,OJ)起源于国际大学生程序设计竞赛(ACM/ICPC),是一种采用黑盒测试原理进行计算机程序正确性判断的自动化程序[1]。该系统具有比赛公平性好、评测自动化程度高、节约人力成本等优点,广泛应用于各类计算机程序设计比赛和教学[2]。

目前的在线评测系统虽然具有很多优点,但在使用上通常存在以下困难。

1.1.系统程序的获得困难

在线评测系统的设计和开发涉及到操作系统进程调度、Web界面、数据库管理、大规模并发访问等诸多方面的计算机应用技术。该系统开发难度大、要求高,而且设计上一旦存在漏洞将严重危害系统安全;许多学校在自行过开发后,都因为各种原因而没有得以大范围应用。国内少数高校开发和使用的系统,虽然对系统源代码进行了开放,但是由于文档不足、缺乏技术支持,其源码很难进行二次利用,应用范围也非常有限。

1.2.系统平台的搭建困难

国内外在线评测系统普遍基于Linux平台进行开发,在给开发带来便利的同时,也给系统的使用带来巨大障碍。虽然近几年国内的Linux社区发展迅速,但是由于盗版的根深蒂固和计算机教育对Windows系统的全面迎合,国内高校真正能够熟练使用Linux操作系统平台的教师和学生并不多,即使取得了系统程序的源代码,也很难实际部署成功。

1.3.系统运行与维护的困难

在线评测系统因为需要实时对使用者提交的源代码进行编译、运行、监控,同时又要完成大量Web请求的并发访问,所以对服务器系统的性能要求极高。普通的计算机服务器虽然可以进行小规模的练习,但对于在线人数成百上千的大型比赛就无力应对。虽然可以对Web服务器、数据库服务器、判题服务器进行分机运行,实现简单的分布式计算,但是对于普通大学和科研机构,购买数量繁多的服务器又是一个经济上难以承受的负担。

1.4.练习题目获得的困难

因为在线评测系统基于黑盒测试技术,所以测试数据对于题目而言就是必不可少的基本要素。目前许多高校的在线评测系统对外提供题目查看,但是其测试数据都实行严格保密。目前,在线评测系统使用上的便利性一定程度上是建立在题目编写的困难性之上的,即使是一流大学的教授编写一道新题目也要付出非常艰辛的劳动。这就是像北大这样的一流大学为什么会在互联网上重金征集新颖题目的原因[3]。

针对以上存在的问题和困难,本文提出了建立基于开放云平台的开源在线评测系统。为高校和科研机构使用在线评测系统提供了新的途径。

2.开源在线评测系统2.1.开源在线评测系统现状

互联网上可以访问到的在线评测系统数量很多,开放源代码的在线评测系统数量则相对有限。在开源的系统中,很多属于学校本科生以毕业设计为目的开发的实验性系统,因而缺乏实用价值。国内知名的在线评测系统中,浙江大学在线评测系统(ZOJ) [4]和北京交通大学在线评测系统(BOJ)[5]都进行了开源的尝试。但是开源不仅仅是开放源代码,还需要有文档、社区和有效地技术支持;由于文档的缺失和代码更新缓慢,上述两所知名大学开发的在线评测系统几乎没有其他学校进行使用。而且ZOJ使用的是J2EE框架和基于Socket的C/S结构的分布式应用,其系统复杂程度和对硬件系统的要求都比较高,很难在开放式云平台进行部署。而其他小型的开源评测系统,则往往缺失可扩展性,对于分布式应用或云平台的使用都存在基础性缺陷。

2.2.开源在线评测系统改进

HUSTOJ是由华中科技大学毕业生王良晶等同学开发并在2008年底以GPL协议进行开源的一个在线评测系统[6],HUSTOJ采用了LAMP平台进行开发,其早期版本在华中科技大学的服务器上稳定运行至今。早期的HUSTOJ在开源方面与ZOJ、BOJ一样,缺少应有的文档和技术支持,甚至没有提供数据库结构,使得在开源后长达一年的时间中没有任何其他的学校和组织进行部署。作者从2009年9月开始加入开源在线评测系统HUSTOJ的开发,并在创始人的支持下成为HUSTOJ的项目管理员。为了使HUSTOJ更容易被其他院校有效的使用,真正实现开源共享,作者对HUSTOJ系统进行了大量改进,主要包括:

1)开发了安装脚本,实现命令方式的安装,并编写了详细的安装步骤文档。

2)增加了可视化的题目管理界面,采用FCKEditor实现了超文本编辑和图片上传功能。

3)重构和改写了判题内核程序、提高了系统代码的可读性,提高了多线程判题的性能,对多核心处理器有更好的支持。

4)在原有沙箱技术上进行扩充,增加了Ruby、Bash、Python、Perl、C#、PHP等多种编程语言的支持。

5)增加了对多国语言支持的机制,吸引国外用户和开发者的关注。

6)创建论坛和即时通讯群,并组织创建了用户社区。

7)为用户提供免费的咨询和收费的在线安装、维护服务。

8)开发了基于Ubuntu的LiveCD系统,使用户无需安装即可试用其完整功能,并可以图形化方式完成系统安装,降低了使用门槛。

9)开发了集成虚拟机的Windows版本,使得Windows用户也可以免安装使用。

你不怕困难,困难就怕你。

基于开放式云平台的开源在线评测系统设计与实现

相关文章:

你感兴趣的文章:

标签云: