项目地址:https://github.com/QingdaoU/OnlineJudge
前端:基于Vue.js
WebServer:基于Django
负责与前端进行交互;接收前端的题目提交后,将提交放入队列中
队列:基于redis
评测模块Judger:从队列中取出提交,利用sandbox进行测试,将测试结果存入mysql数据库
Sandbox:基于Linux的Seccomp
Seccomp (Secure Computing Mode) 是一种Linux内核提供的安全特性,它可以实现应用程序的沙盒机制,以白名单或黑名单的方式限制进程进行系统调用。
数据库:基于MySQL
一共使用两类数据库:一类存储用户信息、题目信息,另一类存储测试结果。数据库都和WebServer进行交互。
参考资料:
网友评论