公开/公告号CN114065190A
专利类型发明专利
公开/公告日2022-02-18
原文格式PDF
申请/专利权人 南京方糖智行网络科技有限公司;
申请/专利号CN202010763042.6
申请日2020-07-31
分类号G06F21/53(2013.01);G06F8/41(2018.01);
代理机构北京同辉知识产权代理事务所(普通合伙) 11357;
代理人江舟
地址 210000 江苏省南京市经济技术开发区兴智科技园A栋14层公共区10号
入库时间 2023-06-19 15:49:21
法律状态公告日
法律状态信息
法律状态
2022-03-08
实质审查的生效 IPC(主分类):G06F21/53 专利申请号:2020107630426 申请日:20200731
实质审查的生效
技术领域
本发明涉及计算机科学实验领域领域,特别涉及一种高可用性与高安全性的算法自动化在线测试系统。
背景技术
算法自动化测试系统可以用于学生在学习算法知识与程序设计的过程中进行训练,并且大多数的程序设计竞赛都是用算法自动化在线测评系统上组织运行,并且通过这样的系统来自动化的得出参与者的成绩避免主观上的不公正。因此算法自动化测评系统在计算机科学教育领域发挥着巨大的作用。
然而随着计算机科学教育、程序设计竞赛规模的扩大,参与的人员增加,传统的在线测评系统已经无法适应不断扩大的用户规模,常常会出现一些因此我们针对传统在线测评系统的缺陷设计了一个高可用、高安全的算法自动化在线测评系统。尽可能地降低服务器配置成本与运维成本。
常见的一种在线测评系统使用的是C/S架构,即客户端/服务端架构,服务器部分同时负责接收上传代码、编译代码、测试代码的工作。这样的架构相对简单且相对容易实现,但是在规模较大的时候可能会出现占用过量的局域网资源以及同时提交量过大时可能出现宕机的现象。除此以外,这样的在线测评系统往往存在着部署困难的问题,往往在竞赛部署该类评测系统时运维人员不止需要考虑服务端还需要考虑作为客户端的机器,有些时候甚至需要竞赛参与人员自主安装客户端程序。
还有的一种常见的在线测评系统使用相对比较方便的B/S架构,即浏览端/服务端,主服务与调度服务器相连接,调度服务器与多个评测机相连,每次调整评测服务器需要手动调整调动服务器的配置。但是相对上述C/S架构的在线测评系统来说部署起来更加方便,并且不需要在客户端安装额外的程序,在主服务器部署好了程序之后其他的机器只需要有一个最基础的浏览器即可。相比前一种方式降低了运维的成本。但是这样的架构存在着一些问题:当任务较多并且运行的时间长短不定会导致有的配置的评测机在运行时间较长的任务时进入堵塞状态。进而影响在线测评系统的并发量,即最多能同时处理的任务的数量。在一些正式的比赛中表现为后进行的提交反而先出结果或者干脆导致某一些提交的评测过程或评测的结果出现偏差甚至错误,进而影响比赛的公平性。
在一些比赛中,由于经费、环境等多方面的原因往往没有足够配置的服务器,而传统的在线测评系统往往需要占用比较多的系统资源,这就导致在一些比赛中测评系统的可选范围大大缩小,并且不能规避可能存在的宕机风险。而在一些在线的测评系统中则会存在着系统在低使用的情况下保持着高额的资源占用的情况进而产生大量的费用。
除此以外作为一类计算机软件,在线测评系统的安全性也十分重要,有一些恶意用户会通过构造恶意的代码以达到让评测机中止运行甚至窃取评测机数据等目的。传统的在线测评系统一般通过关键词过滤、危险系统函数调用检测等方式来实现这方面的防护。但是这些措施的实现往往比较麻烦并且难以彻底的规避一些漏网之鱼。
发明内容
本发明要解决的技术问题是克服现有技术的缺陷,提供一种高可用性与高安全性的算法自动化在线测试系统。
为了解决上述技术问题,本发明提供了如下的技术方案:
本发明一种高可用性与高安全性的算法自动化在线测试系统,包括主服务器、测试服务器和负载均衡器,所述负载均衡器作为主服务器和测试服务器中间桥梁;
所述主服务器包括:
主服务,发送测试数据、生成测试任务和接收返回测试结果;
同步服务,接收测试数据、发出同步测试数据;
测试队列,接收测试任务、返回测试结果和发送测试任务;
所述测试服务器包括:
同步服务,接收由主服务器的同步服务所发出的同步测试数据、发出更新数据和缓存验证;
安全沙箱,进行信息确认;
测试机中间层服务,确认测试机健康的情况下向测试队列发出测试结果。
作为本发明的一种优选技术方案,所述安全沙箱包括:
评测核心,接收算法和测试数据后向基本验证器输入测试数据,所返回的测试结果输出至测试机中间层服务,同时对数据信号输出至二进制文件进行编译;
基本验证器,接收二进制文件得到的返回执行信息。
作为本发明的一种优选技术方案,所述测试服务器的同步服务与基本验证器均与二进制验证器缓存相连接。
作为本发明的一种优选技术方案,所述负载均衡器所连接的测试服务器可为多个。
与现有技术相比,本发明的有益效果如下:
1、高安全性:本发明的测试服务器使用安全沙箱来进行对提交的评测代码的测试,所有由用户提交的不可信任代码都将在一个与外界完全隔离的环境中运行,该环境没有任何机会接触到外界的敏感数据,当其占用的系统资源超过阈值或者其尝试调用危险的系统函数将会被立刻停止,同时销毁沙箱。对测试服务器不会产生任何不良影响,同时也不会影响到主服务器确保整个评测系统的安全与稳定。
2、高可用性:主服务器与测试服务器隔离运行,测试服务器在处理任务的过程中主服务器依然可以正常接受用户的访问与评测请求并将请求压入队列,对用户来说该系统是全程可用的,测试队列里的评测请求由负载均衡器根据测试服务器集群的健康状态来进行分发来最大限度保证一个任务评测时间,大幅度减少评测任务平均处理时间进而提高系统整体的可用性。
3、经济性:负载均衡器会根据当前任务数量、测试服务器集群的健康状况弹性收缩测试服务器集群的规模,在任务量较多的时候将规模扩大启用休眠的测试服务器提高评测速度,在任务量相对较少的时候释放部分测试服务器减少系统资源的占用,进而减少系统维护的费用。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:
图1是本发明的系统框架图。
具体实施方式
以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。
实施例1
如图1所示,本发明提供一种高可用性与高安全性的算法自动化在线测试系统,包括主服务器、测试服务器和负载均衡器,负载均衡器作为主服务器和测试服务器中间桥梁;
主服务器包括:
主服务,发送测试数据、生成测试任务和接收返回测试结果;
同步服务,接收测试数据、发出同步测试数据;
测试队列,接收测试任务、返回测试结果和发送测试任务;
测试服务器包括:
同步服务,接收由主服务器的同步服务所发出的同步测试数据、发出更新数据和缓存验证;
安全沙箱,进行信息确认;
测试机中间层服务,确认测试机健康的情况下向测试队列发出测试结果。
进一步的,安全沙箱包括:
评测核心,接收算法和测试数据后向基本验证器输入测试数据,所返回的测试结果输出至测试机中间层服务,同时对数据信号输出至二进制文件进行编译;
基本验证器,接收二进制文件得到的返回执行信息。
服务器的同步服务与基本验证器均与二进制验证器缓存相连接。
负载均衡器所连接的测试服务器可为多个。
具体的,算法自动化在线评测系统操作步骤如下:
1、网站管理员通过后台上传、修改题目的测试数据,然后各个测试服务器的同步服务会将测试数据同步到二进制验证缓器缓存与测试机中间层服务以供与提交的代码运行结果进行比对。2、用户向主服务器提交了一个评测请求之后,主服务在检验评测请求的合法性后将评测请求附带该请求对应的题号以及用户提交的代码推入测试队列,测试队列再进一步将该请求发送给负载均衡器,然后测试队列开始周期性的询问测试的结果。3、负载均衡器可连接多个测试服务器,并且会根据测试服务器的健康情况弹性伸缩测试服务器的规模,以达到在系统使用人数较少的情况下动态减少整个系统的资源占用,在接收到评测请求的时候负载均衡器会根据各个测试服务器的状态分发测试任务至测试机的中间层服务。4、测试机中间层服务接收到一个测试请求后创建一个安全沙箱,在安全沙箱内展开一个评测核心,在核心内编译接收到的代码得到二进制文件后通过一个个基本验证器对题目各个测试点进行测试,然后基本验证器将每个测试点的内存占用、运行时间等精确测试结果返回给评测核心,评测核心将总的测试结果返回给测试服务器的中间层服务等待主服务器测试队列获取。5、测试队列得到了测试机中间层服务返回的测试结果之后将结果存入主服务器的数据库后从测试队列中移除该任务,到这里一个评测任务结束,用户可以通过主服务来查询本次评测任务的结果。
本发明可以满足短时间内的大量提交的同时保证系统资源占用不会过于庞大,而在使用量较小的情况下将系统的资源占用量压缩至最少。除此以外在确保测试结果精确的前提下,保证主服务、评测服务的安全性,不会因为恶意的提交产生服务中断、数据泄露等后果。
最后应说明的是:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
机译: 一种高粘结性自粘卷材 HIGH-COHESIVENESS SELF-ADHESIVE COILED MATERIAL