SYZOJ 实现分布式评测

这篇博客的起因是学校的OJ因为高考被切断了, 但是我的公网OJ是个实现很不清真的UOJ而且上面只有1core和1GB内存. 费了一些周折部署好syzoj之后大家喜闻乐见地被卡常/卡内存了...于是需要分布式评测来将评测任务分流给新租的性能优秀一些的服务器.

然而由于现在开发组被鸽子占据所以分布式评测的wiki咕咕咕了...

自己xjb搞了搞现在实现了分布式评测(网站端和评测姬不在同一台服务器)

于是在这里记录一下方便自己以后复现, 以及希望能在一定程度上帮到想部署syzoj的大家.

SYZOJ 的 GitHub仓库 以及 Wiki

SYZOJ的消息机制

这部分是问了Menci才知道的...

目前SYZOJ的结构是长这样的: web端分配评测任务给评测姬的judge-daemon, judge-daemon再把运行任务分配到各个judge-runner.

整个系统的通信是: web端内部使用本机的Redis通讯, web端到judge-daemon使用SocketIO通过HTTP(?)实现, judge-daemon和judge-runner之间的通讯是用Redis+RabbitMQ实现的.

但是web端到judge-daemon之间的通讯并不会传递测试数据. 也就是说测试数据必须在web端server和judge-daemon所在的server上同时存在且同步.

实际实现

通讯部分

根据上面的机制描述, 我们可以发现实际上只要解决web端到judge-daemon之间的通讯就可以实现分布式评测. 也就是更改 config/daemon.json 中的 ServerUrl 项为web端的URL即可. 如果有nginx反向代理的话可能需要填写域名而非IP.

所以按照Wiki安装好judger基本就完事了.

以为redis也需要和web server共享的我折腾了一段时间的外部访问redis...最后在amqp的时候自闭询问了一下Menci发现消息机制并不需要共享

测试数据的同步

因为SocketIO并不管测试数据, 我们需要自行同步 data/testdata 下的所有文件. 个人使用的策略是使用 inotify+rsync 做到实时差量同步. (用NFS没准也可以?)

inotify 是一个内核接口, 内核会在指定文件被进行指定操作后对程序发出信号.

然后剩下的工作网上有同步教程(

大致流程是在judger那头开个 rsync --daemon, 然后在web这头写个脚本同步.

注意各种各样的token问题就好了

[技术]SYZOJ 实现网站与评测端分离的更多相关文章

  1. 基于JAVA WEB技术旅游服务网站系统设计与实现网上程序代写

    基于JAVA WEB技术旅游服务网站系统设计与实现网上程序代写 专业程序代写服务(QQ:928900200) 随着社会的进步.服务行业的服务水平不断发展与提高,宾馆.酒店.旅游等服务行业的信息量和工作 ...

  2. springboot+spring security +oauth2.0 demo搭建(password模式)(认证授权端与资源服务端分离的形式)

    项目security_simple(认证授权项目) 1.新建springboot项目 这儿选择springboot版本我选择的是2.0.6 点击finish后完成项目的创建 2.引入maven依赖  ...

  3. 10天学会phpWeChat——第七天:创建一个自适应PC网站+H5移动端的模块

    本教程基于phpWeChat核心框架1.1.0+版本.下载地址:http://s.phpwechat.com/app_38026ed22fc1a91d92b5d2ef93540f20 通过前面六讲的系 ...

  4. 通过JS语句判断WEB网站的访问端是电脑还是手机

    通过JS语句判断WEB网站的访问端是电脑还是手机,以显示不同的页面! 目录腾讯网的适配代码如何判断访问网站的机器类型-如何判断ipadJS 判断浏览器客户端类型(ipad,iphone,android ...

  5. 让PC版网站在移动端原样式显示

    一般PC网站在移动端显示效果往往和PC版原样式不同,为了在移动端下还原原PC站样式,可以采用以下方式解决: 1) 去掉页头的: <meta name="viewport" c ...

  6. 融云技术分享:融云安卓端IM产品的网络链路保活技术实践

    本文来自融云技术团队原创分享,原文发布于“ 融云全球互联网通信云”公众号,原题<IM 即时通讯之链路保活>,即时通讯网收录时有部分改动. 1.引言 众所周知,IM 即时通讯是一项对即时性要 ...

  7. (转)我如何利用前端技术得到 XXOO 网站的 VIP

    网页如图,这里只是说明整个网站的一些技术点,所以不该看的地方我都打上马赛克了,让我们揭开这些网站的整个前端工作原理首先刚进去的时候显示一堆乱七八糟的东西,点进去其中一个页面,下面各种虚假评论,然后每隔 ...

  8. Java SSM三端分离开发在线教育平台实战视频教程

    目录: 1-01——在线网校实战课程介绍1-02——Eclipse.Maven.JDK介绍1-03——Maven构建Project1-04——新浪SAE介绍2-01——平台业务结构概览2-02——平台 ...

  9. Android中直播视频技术探究之---视频直播服务端环境搭建(Nginx+RTMP)

    一.前言 前面介绍了Android中视频直播中的一个重要类ByteBuffer,不了解的同学可以 点击查看 到这里开始,我们开始动手开发了,因为我们后续肯定是需要直播视频功能,然后把视频推流到服务端, ...

随机推荐

  1. 监控ckeditor内容变化,删除编辑器内图片,ueditor同样适用

    let body = document.querySelector("iframe").contentDocument.body; let observer = new Mutat ...

  2. Http协议(自己的一些小小的总结,方便日后学习揣摩)

    从2019年6月中旬开始学习JAVA已经差不多6个月了,也算是差不多半只脚踏进了JAVA的大门,没有老师带,遇到问题就要自己查百度,搜博客,去给各个大佬私信留言,也不知道看不看的见. 看了很多大佬的视 ...

  3. H265之格式解析

    头定义如下: 上一段码流: 前面 4个字节位00 00 00 01 为nul头,这个和H264是一样的. 下面两个字节为40 01  ====>二进制 0100 0000 0000 0001 F ...

  4. jsp表单数据添加到数据库

    先由表单提交数据到某验证页面:checkregister.jsp<form method="POST"name="form1" action=" ...

  5. 1041. Robot Bounded In Circle

    本题题意: 一开始一个机器人站在了(0,0)上,面朝的方向是北,收到三个序列G,L,R. G:直走 L:向左转 R:向右转 按序执行,永远重复. 返回TRUE,如果处在一个圈. 第一个卡住的点: 1. ...

  6. SQL server 2012 各个版本比较

    有关不同版本的 SQL Server 2012 所支持的功能的详细信息. 功能名称 Enterprise 商业智能 Standard Web Express with Advanced Service ...

  7. SQL常用增删改查语句--来源于网络

    1.1[插入单行]insert [into] <表名> (列名) values (列值)例:insert into Strdents (姓名,性别,出生日期) values ('开心朋朋' ...

  8. 渗透测试学习 二十、 其他漏洞汇总之PHP相关漏洞

    大纲: PHP相关漏洞 JSP相关漏洞 其他漏洞汇总 PHP相关漏洞 文件包含漏洞 php://input等伪协议利用 代码执行漏洞 变量覆盖漏洞 文件包含漏洞 程序开发人员一般会把重复使用的函数写到 ...

  9. 浅谈P/NP问题

    克雷数学研究所(Clay Mathematics Institute,CMI)是在1998年由商人兰顿·克雷(Landon T. Clay)和哈佛大学数学家亚瑟·杰夫(Arthur Jaffe)创立, ...

  10. TensorFlow Federated:基于分散式数据的机器学习

    https://www.tensorflow.org/federated/ TensorFlow Federated (TFF) 是一个开源框架,用于对分散式数据进行机器学习和其他计算.我们开发 TF ...