衡码云判项目是什么呢?简单来说就是这是一个类似于牛客、力扣等在线OJ系统,用户在网页编写代码,点击提交后传递给后端云服务器,云服务器将用户的代码和测试用例进行合并编译,返回结果到网页。
项目最大的两个亮点,一个是在线OJ还有一个就是负载均衡。
先来演示一下项目效果,由于大多数同学只有一台机器,咱们就在一台机器上测试。
我们代码有三个核心模块:
这三个模块功能后面会进行介绍。现在我们先看效果。
用Xshell开启四个窗口,底下大的窗口用来执行oj_server模块功能, 上面三个小的窗口执行的是compile_server功能模块
编译运行程序后就可以开始测试
网页请求过来了oj_server处理,有编译请求就会在后端也就是上面三个窗口进行智能选择
正式开始了,我们先访问我们的云服务器
点击开始编程。
随便点击一道题目,这里我们点击第一题,并且写好代码(正确的)点击提交代码可以看到左下角。
编译运行成功,说明我们的代码是正确的。
这时候我们加个死循环看一下又是什么情况呢?
我们用很大的空间进行提交我们看一下运行结果是什么样的?
再测试一个错误加个野指针是什么情况?
如果我们乱写提交又是什么样子呢?
通过以上测试我们可以知道我们可以检测出编译结果,也能检测出编译时报错,还能拿到各种测试用例的结果。这就是我们OJ项目的功能。
还有一点要说一下刚才我们演示的是一个OJ该有的功能,现在我们再来演示后台负载均衡的能力。
现在我们疯狂点提交代码会是什么样子呢?
现在我们再挂掉一台主机看看是什么情况(这里挂掉中间这台机器端口号8082)
我们再再挂掉一台主机看看啥情况?
我们再再再挂掉一台主机会怎么样呢?
我们在线 OJ没有什么问题,但是编译和链接模块出现了问题。
我们的基本情况就是这样,更多细节会在代码里体现出来。
总结一下我们重点完成的项目目标是在线列表还有就是题目OJ能处理各种报错,后端采用文件或数据库实现基本的负载均衡。
上面就是咱们这个负载均衡式在线OJ的项目演示了, 具体怎么实现我会再写一篇博客娓娓道来项目的各种细节。