负载判题系统

综述

该项目使用了 BS架构实现了可以在线的对用户的题目进行 负载均衡式的评判,同时可以对用户进行增删改查,以及用户的注册登陆功能

示例

img

编译服务器

  • 在线服务器将用户需要进行判断的代码交给后端的判题服务器
  • 判题服务器将获得的代码交给 compiler_runner类,来执行代码的编译和运行的功能
  • compile_runner 分别将代码先交给 compile类,进行代码的编译,生成一个可执行文件
  • compile_runner再将生成的可执行文件交给 runner类,来进行代码的运行,并将结果通过 重定向生成 临时文件的方式层层递进,同时服务器也会生成相应的 日志,反馈给用户

使用层状结构,实现代码之间的 解耦低耦合,高类聚

判题服务器一经上线,就会发出 http请求申请加入到在线服务器的 后端判题服务器集合中,供在线服务器进行选择,实现 负载均衡

在线服务器

  1. 获得首页的首页
  2. 获得网页的题目列表
  3. 用户的登陆,注册,题库的增删改查
  4. 题目的编译运行

在线服务器使用了 MVC架构

请求服务的编译运行功能就需要用到 负载均衡模块

当要进行路由判断功能时,加载负载均衡模块,使用相应的负载均衡算法(使用哈希的方法来选择机器),对相应的判题服务器发起请求,获得反馈

数据库图表

提前加载进可供选择的后端编译机器

ip port

题目信息

题号 标题 难度 题目表述 显示给用户的函数 测试样例 cpu的时间限制 内存限制

用户

用户名 密码

负载判题系统
http://example.com/2023/02/20/负载判题系统/
作者
Zevin
发布于
2023年2月20日
许可协议