基于分层架构的在线代码测评系统的设计与实现
作者单位:华中科技大学
学位级别:硕士
导师姓名:方少红
授予年度:2020年
学科分类:08[工学] 0835[工学-软件工程] 081202[工学-计算机软件与理论] 0812[工学-计算机科学与技术(可授工学、理学学位)]
摘 要:随着信息化的发展,各大高校纷纷推出自己的在线测评系统,鼓励学生进行线上编程练习,培养学生的逻辑思辨能力。在线测评系统(Online Judge),简称OJ,是一种使用计算机进行自动判题的技术。现在很多在线测评系统架构老化,评测效率不高。因此,设计一套内核优化和架构改进的全新在线测评系统就显得尤为重要。主要针对在线测评系统的设计方案进行研究,整体使用三层架构,分为网站部分、消息队列部分、评测内核部分。网站部分主要分为主站点和管理站点,主站点提供用户登录、题目查看、代码提交、提交查看功能,普通用户的所有可视化操作全部在网站主站点上进行。管理站点提供用户管理、题目添加、权限赋予等功能,主要操作者为管理员。消息队列在网站部分注册生产者,在评测后台注册消费者,连接网站部分和评测后台,主要负责把用户的初始化提交数据从网站端传送至评测端,解耦整个在线测评系统。评测主体部分重点在接受和处理用户提交,检查危险代码,编译用户代码和返回结果,是整个评测流程的实现部分。评测核心从评测主体中分离,采用执行效率更高的C语言实现,负责对程序进行资源限制、执行用户程序并获取对应的资源消耗。整体架构使用Kafka消息队列解耦网站和评测后台,单独分离评测核心,优化执行效率,分层合理,设计清晰。基于分层架构的在线测评系统提供了大量的编程练习题,用户可以使用C/C++语言、Java语言、Python语言在网页上提交代码,由评测后台执行程序并输出时间内存等结果展示给用户。