多评测机在线评测系统(Online Judge)构建与设计简述11月14日 / 2017

分类:自制软件 标签:

由于数据结构课设的缘故,我与队友们组队制作了一套多评测机在线评测系统(Online Judge)。我在其中负责了构架的工作,以及对中心系统的设计,现在我来简述一下我设计的思路,以便队友们用于实验报告(雾)

由于我们学校自己制作的OJ系统有一个令我们不满意的地方,那就是在考试等多人同时提交题目的时候,由于服务运作在一台服务器的缘故,评测速度特别慢,而我们自己的课程设计作品为了克服这个问题,采用了分布式评测机的设计,在多人同时提交代码的时候,可以实现无缝平滑添加评测机进入评测的行列之中,从而把等待的时间压制到最低。体制如下:

在我们的设计中,需要一个中心系统,这个中心系统中除了基本的用户管理、题目管理、题库管理以及各种基本的管理机制与排行榜外,仍需要维护两个队列,其中一个为评测队列,在用户每提交一道题的时候,将会往队列中添加一个题目的实例对象,而评测机在获取到队列中队头的题目(对象)之后,该元素将会被删除;而另一个为只增不减的任务列表,用户每提交一道题目之后,所提交的代码等信息将会进入到该队列中,用于接收评测机的评测结果以及作为“提交记录”被查看。
而在这个体制中,评测机需要通过轮询的方式,主动去获取工作队列中的对头并对其进行评测,待评测结束之后将评测结果(AC、WA..)、时间等返回至任务队列,此时评测结束。
因此,克服评测等待的问题,只需要在评测队列元素过多的情况下,直接添加新的评测机即可。由于采用了评测机轮询队列的方式主动获取题目,并且主动将结果往中心系统推送,因而在添加评测机的同时,无需对中心系统进行任何的修改,实现了平滑添加,并且可以根据评测队列中的元素个数进行评测机数量的调度。


本文只是一个简述,浅谈实现的思路,并且在设计中尚未达到去中心化的构建。最近心情不好,应该是一场解脱吧。谢谢47天的美好。

本文小编:烟花易冷

藏在电脑之间,摸打滚爬数载,终究练就电脑半高手,系统半专家~~~ 就在那一瞬间,蓦然回首,却发现了一个惊天秘密:忘记交电费了....

  • 跨境电商培训 发布于 2017-11-21 Reply

    非常不错!!!!

  • 小吃技术 发布于 2017-11-27 Reply

    一天不来访,浑身上下痒!

  • 雨落无声 发布于 2018-01-08 Reply

    还以为是 VPS云测评 系统 ➡

  • EQ 发布于 2018-01-14 Reply

    👿 oj啊。。混过一段时间noip。。对noi的那个oj题库简直就没法吐槽了。用户体验太差了。

  • 清空重写
  • 发表评论