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

示例






编译服务器

- 在线服务器将用户需要进行判断的代码交给后端的判题服务器
- 判题服务器将获得的代码交给
compiler_runner类,来执行代码的编译和运行的功能 compile_runner分别将代码先交给compile类,进行代码的编译,生成一个可执行文件compile_runner再将生成的可执行文件交给runner类,来进行代码的运行,并将结果通过重定向生成临时文件的方式层层递进,同时服务器也会生成相应的日志,反馈给用户
使用层状结构,实现代码之间的 解耦,低耦合,高类聚
判题服务器一经上线,就会发出
http请求申请加入到在线服务器的后端判题服务器集合中,供在线服务器进行选择,实现负载均衡
在线服务器
- 获得首页的首页
- 获得网页的题目列表
- 用户的登陆,注册,题库的增删改查
- 题目的编译运行
在线服务器使用了 MVC架构

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

当要进行路由判断功能时,加载负载均衡模块,使用相应的负载均衡算法(使用哈希的方法来选择机器),对相应的判题服务器发起请求,获得反馈
数据库图表
提前加载进可供选择的后端编译机器
| ip | port |
|---|
题目信息
| 题号 | 标题 | 难度 | 题目表述 | 显示给用户的函数 | 测试样例 | cpu的时间限制 | 内存限制 |
|---|
用户
| 用户名 | 密码 |
|---|
负载判题系统
http://example.com/2023/02/20/负载判题系统/