大规模程序评判系统的设计与实现

作者:黄洪波; 宋鸿陟; 彭红星; 司国东
来源:计算机工程与设计, 2016, 37(03): 825-831.
DOI:10.16208/j.issn1000-7024.2016.03.051

摘要

为满足大规模程序设计竞赛及计算机编程考试需求,对ACM-ICPC(association for computing machinery-international collegiate programming contest)在线评判系统进行研究,设计并实现基于ActiveMQ消息中间件和多级安全沙箱的大规模程序评判系统。基于生产者-消费者模型解决大规模考试的热伸缩和灾备需求,根据系统负载在线调整节点个数,容许若干个评判器节点意外离线。通过setUID、LXC(Linux container)、全虚拟化和操作系统用户权限机制实现多级安全沙箱,确保评判环境的安全性,兼顾运行效率,简化部署。优化磁盘IO(input/output)效率和编译器启停时间,提升评判器吞吐量。实验结果表明,评判器可随时联机和离线,具有很好的容错性,通过简单地增加评判器个数就可实现大规模的程序评判。

全文