云计算判题核的设计与实现+文献综述(7)_毕业论文

毕业论文移动版

毕业论文 > 计算机论文 >

云计算判题核的设计与实现+文献综述(7)


    ACM/ICPC,又称国际大学生程序设计竞赛,是由ACM(Association for Computing Machinery,美国计算机协会)组织的年度性竞赛,始于1970年。近年来,ACM/ICPC举办的国际大学生程序设计竞赛已经成为世界上规模最大、历史最长、影响最深远的全球性计算机专业竞赛。它旨在为大学生提供一个展示问题求解和程序设计能力的机会,同时促进不同地区大学生的文化交流。ACM/ICPC采用赛区选拔的方式产生参加世界决赛学校的资格,每个学校可以有多支参赛队伍,每个队伍包括3名队员。地区赛每个赛区获得第一名的队伍,可以参加年度总决赛。中国大陆高校从1996年开始参加ACM/ICPC亚洲预赛,清华大学是中国较早参加国际大学生程序设计竞赛的大学之一,上海交通大学曾经获得过国际大学生程序设计竞赛总决赛的冠军。在2002年,南京理工大学代表队首次参加 ACM/ICPC Asia Regional Contest,并且获得了一枚铜牌的好成绩。
目前国内外的俄罗斯Ural州立大学、西班牙Valladolid大学、浙江大学、北京大学、杭州电子科技大学等大学,都建立了自己的在线评测系统,这些在线评测系统在题目数据库大小,页面布局和风格上各有不同。但基本功能都比较一致。
但是很多评测系统都存在瓶颈,在短时间内有用户密集的提交的时候,会常常由于服务器的资源有限,导致判题任务会堆积,使得用户体验不佳。严重的会造成服务器宕机,服务停止。
04年西安交大现场赛由于提交过于密集,导致系统崩溃,导致比赛无法正常进行。造成了不良影响。
06年清华网络赛,出现一个小时的系统崩溃,导致大量参赛学校抗议,不得不举办一场现场复活赛作为补救。
在09和10年的中国区regional中,都由于用户交题过于密集,服务器来不及判题,然后很多的判题请求堆积。最后导致服务器瘫痪,比赛选手无法正常的访问,交题。
南京理工大学OnlineJudge判题节点用的是几台pc,当有密集的提交的时候,会导致判题慢,并且当判题节点崩溃之后,只能通过手工重启才能继续判题。这样不仅用户体验比较差,而且会影响比赛的公平性(会导致用户交很多错误相同的代码,增加罚时)。
于是,我们急需的是一个强大的判题节点,能及时处理密集的提交,给出判题的结果,并且不会由于某些原因导致瘫痪,或者停止服务。
我们可以选择花大量的资金去购买强大的服务器,但是随着比赛用户越来越多,我们需要的服务器也就越来越多。但是,我们可以换个角度来看这个问题,随着比赛用户的越来越多,那么用户手上的pc机同样具备判题功能,我们可以把这部分的计算资源利用起来。可以把这部分机器组成一个能判题的云,那么我们只需要一个调度的机器就可以利用起这部分资源了。
3    设计架构
3.1    软件设计思路与具体应用环境分析
整个思路借鉴当前热门的云计算,把云计算的概念结合需求实现了一个云计算的具体应用。
云计算服务目前的主流模型有三种。基础架构即资产(IaaS),平台即服务 (PaaS),软件即服务 (SaaS)。
本设计使用的模型是软件即服务,向OnlineJudge提供判题服务。是云计算的一个具体的实例应用。OnlineJudge把判题请求直接交给云平台的判题服务器,然后接收判题得到的结果。而云平台所需要的机器并不是像其他云服务提供商的大型的机房组成的云计算所需的计算资源,而是很多一般用户的电脑。

图 1 pku OnlineJudge一天内的提交次数统计
图1是北大OnlineJudge一天内的提交统计,我们可以发现提交的高峰一天内就2-3个小时,所以我们没有必要投资很多的服务器组来处理,并且当用户提交数增加的话,可以判断出用户连接数也必然很多,我们可以完全调度这部分资源来给OnlineJudge提供判题服务。 (责任编辑:qin)