一种基于服务的可扩展程序竞赛评测系统的制作方法

文档序号:6362894阅读:232来源:国知局
专利名称:一种基于服务的可扩展程序竞赛评测系统的制作方法
技术领域
本发明涉及一种基于服务的程序竞赛、计算机教学实验领域的在线评测系统,具体说是一种实时评判程序运行正确与否,效率高低的可扩展分布式系统。
背景技术
随着ACM国际大学生程序设计竞赛以及类似程序设计竞赛的发展,一种能在线接收用户提交源代码、判断程序对错并实时将结果通知用户的在线评测系统开始流行起来。 此类系统对于程序设计竞赛的赛前训练以及组织竞赛都具有十分重要的作用,而且该在线评测系统也可以在程序设计教学中给学生提供一个练习平台,增加学生练习机会,从而提高程序设计水平。但是,随着竞赛和训练规模的迅速扩大,使用该系统的学生也大大增加,致使大多数以前设计的评测系统负载能力不足,无法满足高强度、大容量的比赛要求。此外,在竞赛之余,如何把这些资源向社会公众开放,向相关兄弟院校提供服务却缺少相关研究。因此有必要设计一个易于扩展的、更加开放的、更加灵活的程序评测系统以满足这一需求。目前,在线程序竞赛评测系统形成了两种模式单机模式、集群模式。(I)单机模式是指Web服务器、应用服务器和判题服务器均部署在同一台主机上。该模式设计简单,但是由于判题服务耗费资源较多,所以该模式只能用在小规模的比赛中。同时这种模式的安全效能较低,容易受到攻击从而遭受破坏。(2)集群模式将Web服务器、应用服务器和判题服务器部署在多台主机上。该模式能够实现并行处理,满足大规模竞赛对性能的要求。但是该模式形成了一个孤立的、封闭的训练竞赛环境,难以实现各个竞赛系统之间的资源共享和信息融合,竞赛之余的低使用率造成系统的浪费,因此该模式不够灵活,开放性不够, 其成本对于一些中小院校而言则太高。而且,应用服务、评测调度服务不加区分容易导致系统在竞赛情况下评测的实时性。为了从根本上解决程序竞赛在线评测系统的适应性、灵活性、可扩展性和重用性, 以组合的方式研发一个开放的,可以适应技术和需求不断发展的程序竞赛在线评测系统, 是竞赛评测系统的一个重要趋势,也是计算机程序教学中为提供学生程序设计水平的重要平台。

发明内容
本发明的目的在于克服当前程序评测系统技术上的不足,提供一种基于服务的、 可根据实际情况灵活扩展的、能够对外提供服务的分布式程序竞赛评测系统。本发明采用 Web服务(自包含、自描述、模块化的应用,可以发布、定位、通过web调用)技术,采用SOA(面向服务的架构,简称S0A)架构使其能够在分布式环境下提供一种灵活,可扩展,同时可以对外提供服务的程序评测系统。解决当前程序竞赛评测系统不易扩展,特别是为不具备布局在线评测系统的院校单位提供一个服务的平台,避免各个单位小而全的建设方式。借助 Web服务技术,将以前孤立、封闭的训练竞赛环境,向包括各大中院校在内的整个教育系统开放,实现各个学校间的资源共享和信息融合。从而推动程序设计竞赛活动的开展和普及。为实现本发明的目的采用的技术方案是本发明所述的程序竞赛评测系统,由 Web服务器、应用服务器、评测调度服务器、数据服务器、备份服务器,评测服务器六部分组成。其中Web服务器和应用服务器之间、Web服务器和评测调度服务器之间分别通过网络连接;评测调度服务器以通讯的方式分别与数据服务器、备份服务器和评测服务器连接;应用服务器以通讯的方式分别与数据服务器和备份服务器连接。所述Web服务器是指安装了 Web信息服务软件的计算机,可以提供动静态页面和 Web服务,是用户访问本发明系统的窗口。所述备份服务器是指专门用来备份各类数据的计算机。所述评测调度服务器是指专门用来协调调度程序评测的计算机,包括通信模块、 评测调度模块、数据备份模块、数据存取模块。其中以评测调度模块为中心,分别于通信模块、数据备份模块、数据存取模块以及普通评测服务器、标准评测服务器相连接,同时评测调度模块通过通信模块与系统中的Web服务器连接,通过数据备份模块与备份服务器连接,通过数据存取模块与数据服务器连接。所述评测服务器,包含有以通信方式连接的接收模块、程序评测控制模块、各类编译器和程序执行环境。其中以程序评测控制模块为中心,程序评测控制模块分别与通信接受模块、各类编译器和程序执行环境相连接,同时通信接受模块与评测调度服务器连接。根据搭建的技术方案,工作时
Web服务器作为本发明系统的对外窗口,用户可以通过网络访问Web服务器上的动态和静态网页,也可以通过系统提供的Web服务访问本发明系统对外提供的服务。在Web服务器收到程序评测请求时,Web服务器把请求转发到评测调度服务器上,并由评测调度服务器协调数据服务器、备份服务器、评测服务器共同完成程序评测,最后把结果通过Web服务器返回用户。在Web服务器接收到非程序评测请求时,则把请求转发到应用服务器,由应用服务器协调数据服务器、备份服务器完成相应任务,并把结果通过Web服务器返回用户。管理员则通过浏览器在Web页面实现系统管理、评测策略管理、查询信息等工作。所述评测调度服务器接收到Web服务器转发的程序评测请求后,评测调度模块根据该程序对应的题目,通过数据存取模块访问数据服务器,获取该题目的标准答案和相关要求。然后,评测调度模块根据评测策略选择一个评测服务器,并把程序、答案、相关要求发送到选定的评测服务器。评测服务器在收到标准答案和所要评测程序后,在服务器上根据该程序具体编译器要求对程序进行编译、执行,并且把输出结果和标准答案加以对比,最后把结果返回给评测调度服务器的评测调度模块。评测调度模块根据具体情况决定是否调用标准评测服务器进行进一步评测。当所有评测阶段完成后,评测调度模块会把该结果通过通信模块返回给Web服务器。在这一过程中,评测服务器还会调用数据备份模块对每一个中间结果加以存储。所述应用服务器起到系统管理和用户访问处理的中心控制作用,其中业务上主要支持实时数据查询业务、系统管理业务、用户管理业务、评测策略管理业务。数据服务公共接口模块主要实现该服务器中各个业务和数据服务器的交互。所述数据服务器提供整个系统所有数据的存储,其中主要包括用户数据、题库数据、竞赛实时数据、用户所提交程序、每次运行状况和评测策略。该服务器在接受到其它服务器的数据访问请求后会返回相应的数据。同时当其它服务器提交所要存储的数据时,该服务器会对这些数据加以归类存储。由于在竞赛中要求系统具有一定的抗攻击能力,即使在系统遭受破坏的情况下也不会丢失数据,所以有必要设置一个专门备份各类数据的服务器。该备份服务器能够以增量的方式存储所有数据,包括用户数据、题库、竞赛用户提交程序、运行状况。最重要的是该服务器只允许数据增加操作,不允许数据的修改和删除操作,以确保能够备份系统所需所有数据。所述评测服务器,工作时首先下载相关软件,并进行安装;完成这些操作后,运行评测服务器客户端软件,并在评测调度服务器中注册,由此成为评测服务器。在评测服务器运行期间,该服务器接收来自评测调度服务器的任务分配,并按照要求编译程序、运行程序、对比程序结果正确性,最后把结果返回给评测调度服务器。评测服务器可以分为两种, 分别是通用评测服务器和标准评测服务器。所述评测调度模块是评测调度服务器的核心模块。该模块依据评测策略,调度评测服务器,数据存取模块、数据备份模块具体完成评测工作。所述通用评测服务器是评测服务器的一种类型。通用评测服务器可以是性能差别较大的各类计算机,也可以是系统自带的一些电脑,同时这些电脑上安装了评测服务器客户端软件。评测服务器客户端软件用于和评测调度服务器中的评测调度模块进行通信,接收分配到该服务器的任务,通过客户端运行该任务,并把结果返回。所述标准评测服务器也是一种评测服务器。它们和通用评测服务器的区别在于 多个标准评测服务器具有相同的软硬件配置,用户提交程序的运行时间以各标准服务器运行结果的平均值为准,避免了不同评测服务器性能的差异导致用户提交程序评测的正确性。在标准评测服务器上也安装了评测服务器客户端软件,用于和评测调度服务器中的评测调度模块进行通信,接收分配的任务,通过客户端运行该任务,并返回相应的结果。所述评测策略是指评测调度模块调度各部分协同评测程序的方法。本发明所述的各服务器处在分布式环境中,可以通过局域网互联,也可以通过广域网互联,并遵循统一的通信协议,能够互相通信和交换信息。在程序竞赛评测系统开始时,运行Web服务器,同时启动应用服务器、评测调度服务器、数据服务器、备份服务器和各个评测服务器。当接收到用户登陆请求时,Web服务器根据具体请求返回静态页面,用户输入账号和密码登陆。用户登陆成功后,可以根据需要查看各类静态信息,也可以查看各类动态信息,还可以提交程序要求进行评测。当要求查看各类动态信息时,Web服务器把请求转发给应用服务器,由应用服务器从数据服务器中获取各类信息,处理后返回给Web服务器, 再返回用户。当Web服务器接收到评测请求时,把请求转发给评测调度服务器,由评测调度服务器再把相应任务分发到评测服务器中进行评测,当接收到评测服务器返回结果后,评测调度服务器把相关信息写入数据服务器,并把相应信息返回给Web服务器,最后返回用户。在系统运行过程中,管理员也可以通过Web服务器查询系统的运行状况,管理系统的各种操作,还可以在系统遭受到破坏时,通过利用备份服务器上的信息回复系统的运行。同时,当用户是程序时,则可以调用Web服务器对外提供的各种服务,以实现资源的共享。本发明系统具有良好的扩展性、开放性,同时又具有用户界面直观,易于操作、管理的特点。本发明系统对外的Web服务器采用基于Web服务的软件架构,使系统具有很好的开放性,能够对外提供Web服务;评测调度服务器和评测服务器则采用分布式系统,使该系统具有很好的可扩展性、容错性。Web服务器不但可以提供用户通过浏览器的方式访问该系统,提供用户和管理员操作、管理、配置系统的可视化操作界面,而且还可以提供用户通过本发明系统所提供的Web服务调用该系统服务,从而减少了中小单位重复构造整个系统的压力。系统的评测服务器采用的是分布式系统,由评测调度服务器统一调配,这使得本发明系统不但可以通过增加局域网内的评测服务器,而且可以临时增加Internet上的计算机作为评测服务器,以加强整个系统的吞吐和评测能力。本发明系统能够实现有效准确的程序竞赛评测,减少人工操作,减少评测不准确造成的异议。本发明系统采用多标准评测服务器的模式,当通过初步评测的程序需要进一步进行评测时,同时提交多个标准评测服务器进行多次评测,对评测结果进行分析和处理后再返回给用户。这种评测方式确保不同评测服务器由于异常的发生给评测带来的不确定性,增加了评测结果的可信度。本发明提出一种多次评测的方法,不但能够增加本发明系统的吞吐量,而且可以保证系统评测结果的准确性。本发明系统在对程序进行评测时,首先提交通用评测服务器进行评测,只有在通过通用评测服务器评测的情况下才可以提交到标准评测服务器进行进一步评测。由于提交的程序大都不能够一次性通过,而是需要多次反复,所以,这种方法避免了直接提交标准评测服务器评测造成标准评测服务器任务过多,影响系统的响应时间。 同时,通用服务器易于增加,扩展,这也就使系统容易通过增加扩展通用评测服务器提高吞吐量。本发明提出一种安全可靠的系统实现架构。系统采用独立备份服务器的方法,在应用服务器和评测调度服务器中的每一个操作、用户提交的程序、评测结果都提交备份服务器加以存储。同时备份服务器采用增量式备份方式,避免了本发明系统频繁变化导致完全备份量急剧增加的情况。当本发明系统发生不可恢复错误时,例如受到黑客攻击,可以借助备份服务器中存储的数据快速回复系统到最近状态,保证了系统的可靠性。本发明的特点和效果
O灵活性和很强的扩展性本发明系统可采用各类计算机作为评测服务器,只要安装了评测服务器客户端软件,并加以注册就可以成为系统的一部分,评测服务器可以通过网络成为系统的一部分,并且随时可以离开系统。当系统承担大型竞赛或者某些集中程序评测的情况,可以根据需要随时扩展该系统;
2)评测的高效性和准确性由于采用了先由通用评测服务器预评的方式,可以过滤那些无需进行详细评测的情况,减少了标准评测服务器的负担,而多个标准评测服务器同时再评的机制,使程序性能评价的准确性大大提高;
3)系统的开放性本发明系统具有很强的开放性,系统对外提供Web服务接口, Internet上的用户可以根据自身的需要调用本系统所提供的服务,从而减少构造系统的代价。4)使用及管理方便本发明系统的数据发布、数据查询、用户应用、管理员管理界面都是通过浏览器的方式访问,这使系统管理和应用不受地域限制,可以在任意可以上网的计算机上执行,同时人机交互界面友好,操作简单。5)安全性用于对外的Web服务器和系统其余部分(应用服务器、评测调度服务器和数据服务器等)独立管理,保障了整个系统的安全。同时,单独的备份服务器以及实时增量式备份也确保系统数据的安全性。


图I为系统的整体架构示意图2为评测调度服务器主要模块及评测过程交互图3为评测服务器主要模块及交互图。
具体实施例方式图I中,一般用户和管理用户可以通过网络访问Web服务器。Web服务器通过网络分别与应用服务器、评测调度服务器相连。应用服务器通过网络分别与备份服务器、数据服务器相连。评测调度服务器通过网络分别与备份服务器、数据服务器、标准评测服务器、普通评测服务器相连。图2中,评测调度服务器包括通信模块、评测调度模块、数据备份模块、数据存取模块,评测调度模块分别和通信模块、数据备份模块、数据存储模块相连,同时还通过网络与各普通评测服务器、标准评测服务器相连。通信模块和Web服务器相连;数据备份模块和备份服务器相连;数据存取模块和数据服务器相连。图3中,评测服务器客户端软件包括通信接受模块、程序评测控制模块、程序执行环境和各类编译环境。程序评测控制模块分别与通信接受模块、程序执行环境、各类编译环境相连。通信接受模块通过网络与评测调度服务器相连。下面结合附图对本发明的实施例作详细说明本实施例在本发明技术方案下进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述的实施例。本实施例系统以微机及高性能计算机为设备平台,基于一定的评测调度策略构建基于服务的可扩展程序竞赛评测系统。具体实施方法如下
(I)本发明系统的整体架构上可以分为四个层次,分别是显示层、应用逻辑层、数据层和评测支撑层,如图I所示。其中显示层包括Web服务器提供的各类静态和动态显示信息。 应用逻辑层是本发明系统的中心控制部分,该层主要包括一个应用服务器和一个评测调度服务器。应用服务器的主要功能是接受显示层的各类请求,分析具体请求,并通过数据层的数据交换、处理,返回处理结果到Web服务器。评测调度服务器主要接收Web服务器的评测请求,通过数据层和评测支撑层的支持,实现程序的评测,最后把结果返回给显示层。数据层包括数据服务器和备份服务器,其中数据服务器为整个系统的日常运行提供数据存取支持,备份服务器则通过增量备份的方式保障系统数据的安全性。评测支撑层由一系列普通评测服务器和标准评测服务器组成,负责对所提交程序提供评测服务。(2)评测调度服务器的是整个系统最核心部分,其实现评测过程时的各个模块结构及交互如图2所示。该服务器包括据通信模块、备份模块、评测调度模块、数据存取模块。 其中通信模块负责评测调度服务器和Web服务器的交互。数据备份模块主要负责备份服务器数据的写入工作。在Web服务器提交评测程序到评测调度服务器时,评测调度模块主要负责程序评测过程中各个部分的协作、调度工作。数据存储模块则主要负责评测过程中和数据服务器交互。(3)评测调度服务器中进行评测过程的数据流如图2所示。当评测调度服务器启动后,首先会通过数据存取模块从数据服务器中读取当前的评测策略和评测服务器列表并进行初始化,等待评测程序。通信模块接收到评测请求后,把评测请求交由评测调度模块; 评测调度模块解析请求,向数据存取模块提出查询请求,获取数据服务器中有关待评测程序的答案和具体要求;根据调度策略选择评测服务器,评测调度模块把程序、标准答案及具体要求提交普通评测服务器;当普通评测服务器评测通过,把结果返回给评测调度模块后, 评测调度模块根据评测策略决定是进行进一步评测还是直接返回结果给Web服务器。如果需要进一步评测,则由评测调度模块根据调度策略再把程序提交若干标准评测服务器; 当所有执行该评测任务的标准评测服务器都返回相应的结果后,评测调度模块分析结果, 并且得到最后的程序运行情况;评测调度服务器把运行情况一边提交到备份服务器进行存储,一边把该结果存入数据服务器,最后把结果返回给Web服务器。如果无需进一步评测, 则评测调度模块把相关信息提交数据服务器和备份服务器加以存储,并把相关信息返回 Web服务器,并最终在用户终端上显示。(4)应用服务器主要负责Web请求中的非评测任务。该服务器主要包含实时数据查询业务、系统管理业务、用户管理业务、评测策略管理业务。其中实时数据查询业务主要负责竞赛情况下的实时数据查询,反映竞赛的最新情况。系统业务管理包括题库、用户、系统设置等相关业务。用户管理业务主要包括单个用户个人的信息管理。评测策略管理则主要负责设置评测策略,以及设置当前所采用的评测策略。(5)评测服务器负责对提交的程序进行评测,并把评测结果返回到评测调度服务器,评测服务器可以是安装了评测服务器客户端软件的计算机,也可以是高性能计算机。评测服务器客户端软件的基本结构如图3所示。评测服务器客户端软件由通信接收模块、程序评测控制模块、程序执行环境、各类编译环境组成。其中通信接收模块负责评测服务器和评测调度服务器的通信;程序评测控制模块负责具体评测的控制;各类编译环境则提供了程序编译的各类工具;程序执行环境则为程序的执行提供支撑。
权利要求
1.一种基于服务的可扩展程序竞赛评测系统,其特征在于评测系统由Web服务器、应用服务器、评测调度服务器、数据服务器、备份服务器,评测服务器六部分组成,其中Web服务器和应用服务器之间、Web服务器和评测调度服务器之间分别通过网络连接;评测调度服务器以通讯的方式分别与数据服务器、备份服务器和评测服务器连接;应用服务器以通讯的方式分别与数据服务器和备份服务器连接。
2.根据权利要求I所述的一种基于服务的可扩展程序竞赛评测系统,其特征是所述 Web服务器是指安装了 Web信息服务软件的计算机,能够提供动静态页面和Web服务。
3.根据权利要求I所述的一种基于服务的可扩展程序竞赛评测系统,其特征是所述的备份服务器是指专门用来备份各类数据的计算机。
4.根据权利要求I所述的一种基于服务的可扩展程序竞赛评测系统,其特征是所述的评测调度服务器包括通信模块、数据存取模块、数据备份模块、评测调度模块,其中以评测调度模块为中心,分别与通信模块、数据备份模块、数据存取模块以及普通评测服务器、 标准评测服务器相连接,同时评测调度模块通过通信模块与系统中的Web服务器连接,通过数据备份模块与备份服务器连接,通过数据存取模块与数据服务器连接。
5.根据权利要求I所述的一种基于服务的可扩展程序竞赛评测系统,其特征是所述评测服务器,包含有以通信方式连接的接收模块、程序评测控制模块、各类编译器和程序执行环境,其中以程序评测控制模块为中心,分别与通信接受模块、各类编译器和程序执行环境相连接,同时通信接受模块与评测调度服务器连接。
全文摘要
本发明本发明涉及一种基于服务的可扩展程序竞赛评测系统。所述的评测系统,由Web服务器、应用服务器、评测调度服务器、数据服务器、备份服务器,评测服务器六部分组成。其中Web服务器和应用服务器之间、Web服务器和评测调度服务器之间分别通过网络连接;评测调度服务器以通讯的方式分别与数据服务器、备份服务器和评测服务器连接;应用服务器以通讯的方式分别与数据服务器和备份服务器连接。采用本系统结构易于扩展,在线评测系统吞吐量大、响应速度快、开放性强。通过备份服务器和增量备份方式,保证了数据安全性。同时,动态的评测调度策略应用范围大和灵活性强,适用于程序竞赛中的程序评测,还可以在计算机教学实验中加以应用。
文档编号G06F11/36GK102591778SQ20121000573
公开日2012年7月18日 申请日期2012年1月9日 优先权日2012年1月9日
发明者吴闻, 张仕, 赖会霞 申请人:福建师范大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1