【PHP开源代码栏目提醒】:网学会员PHP开源代码为您提供基于开放式云平台的开源在线评测系统设计与实现 - 毕业设计参考,解决您在基于开放式云平台的开源在线评测系统设计与实现 - 毕业设计学习中工作中的难题,参考学习。
张浩斌 : 基于开放式云平台的
开源在线评测系统设计与实现基于开放式云平台的
开源在线评测系统设计与实现张浩斌ZHANG Hao-Bin浙江传媒学院 新媒体学院 浙江省 杭州市 310018Department of New Media Zhejiang University of Media and Communications Hanzhou310018 ChinaDesign and Implementation of the Open Cloud Platform Based Open SourceOnline Judge SystemAbstract: Designed and Implemented the Open Cloud Platform Based OpenSource Online Judge System from the applicable view. The system resolveda set of problems in deploying online judge system by universities or dresearch institutions which included implementing deployingmaintenance and questions acquiring. Discussed the Feasibility retheoretically and proved it by running codes and applicable system. Byreleasing all the source code provided a new way to improvement online tejudge system.Keywords: Online Judge Distribution System Open Cloud Platform Open isSource Software XML摘要: eg 从应用角度出发,设计并开发了基于开放云平台的
开源在线评测系统。
该系统从系统实现、系统搭建、平台运维及题目的获得等诸多方面解决了大学和科研机构搭建在线评测系统的困难。
从理论上论证并用实际
代码和实际系统检验了系统的可行性,开放了全部源
代码, nR为在线评测系统的改进找到了新途径。
关键词:在线评测系统 分布式系统 开放式云平台
开源软件 XML U1. 在线评测系统的现状与应用难点 ,是一 在线评测系统(Online JudgeOJ)起源于国际大学生程序设计竞赛(ACM/ICPC) 1种采用黑盒测试原理进行计算机程序正确性判断的自动化程序 。
该系统具有比赛公平性好、评测自动化程度高、节约人力成本等优点,广泛应用于各类计算机程序设计比赛和教学2 。
目前的在线评测系统虽然具有很多优点,但在使用上通常存在以下困难。
1.1. 系统程序的获得困难 在线评测系统的设计和开发涉及到操作系统进程调度、Web 界面、数据库管理、大规模并发访问等诸多方面的计算机应用技术。
该系统开发难度大、要求高,而且设计上一旦存作者简介: 张浩斌1980-男硕士学位讲师主要研究领域为计算机应用技术本文受到浙江传媒学院 《程序设计类教学辅导平台设计与开发》教改项目和 HUSTOJ 社区用户的资助张浩斌 : 基于开放式云平台的
开源在线评测系统设计与实现在漏洞将严重危害系统安全;许多学校在自行过开发后,都因为各种原因而没有得以大范围应用。
国内少数高校开发和使用的系统,虽然对系统源
代码进行了开放,但是由于文档不足、缺乏技术支持,其源码很难进行二次利用,应用范围也非常有限。
1.2. 系统平台的搭建困难 国内外在线评测系统普遍基于 Linux 平台进行开发,在给开发带来便利的同时,也给系统的使用带来巨大障碍。
虽然近几年国内的 Linux 社区发展迅速,但是由于盗版的根深蒂固和计算机教育对 Windows 系统的全面迎合,国内高校真正能够熟练使用 Linux 操作系统平台的教师和学生并不多,即使取得了系统程序的源
代码,也很难实际部署成功。
1.3. 系统运行与维护的困难 在线评测系统因为需要实时对使用者提交的源
代码进行编译、运行、监控,同时又要完成大量 Web 请求的并发访问,所以对服务器系统的性能要求极高。
普通的计算机服务器虽 d然可以进行小规模的练习,但对于在线人数成百上千的大型比赛就无力应对。
虽然可以对Web 服务器、数据库服务器、判题服务器进行分机运行,实现简单的分布式计算,但是对 re于普通大学和科研机构,购买数量繁多的服务器又是一个经济上难以承受的负担。
te1.4. 练习题目获得的困难 因为在线评测系统基于黑盒测试技术,所以测试数据对于题目而言就是必不可少的基本 is要素。
目前许多高校的在线评测系统对外提供题目查看,但是其测试数据都实行严格保密。
目前,在线评测系统使用上的便利性一定程度上是建立在题目编写的困难性之上的,即使是 eg一流大学的教授编写一道新题目也要付出非常艰辛的劳动。
这就是像北大这样的一流大学为 3什么会在互联网上重金征集新颖题目的原因 。
nR 针对以上存在的问题和困难,本文提出了建立基于开放云平台的
开源在线评测系统。
为高校和科研机构使用在线评测系统提供了新的途径。
开源在线评测系统 U2.2.1.
开源在线评测系统现状 互联网上可以访问到的在线评测系统数量很多, 开放源
代码的在线评测系统数量则相对有限。
在
开源的系统中,很多属于学校本科生以毕业设计为目的开发的实验性系统,因而缺乏实用价值。
国内知名的在线评测系统中,浙江大学在线评测系统ZOJ 4和北京交通大学在线评测系统BOJ5都进行了
开源的尝试。
但是
开源不仅仅是开放源
代码,还需要有文档、社区和有效地技术支持; 由于文档的缺失和
代码更新缓慢,上述两所知名大学开发的在线评测系统几乎没有其他学校进行使用。
而且 ZOJ 使用的是 J2EE 框架和基于 Socket 的 C/S 结构的分布式应用,其系统复杂程度和对硬件系统的要求都比较高, 很难在开放式云平台进行部署。
而其他小型的
开源评测系统,则往往缺失可扩展性,对于分布式应用或云平台的使用都存在基础性缺陷。
作者简介: 张浩斌1980-男硕士学位讲师主要研究领域为计算机应用技术本文受到浙江传媒学院 《程序设计类教学辅导平台设计与开发》教改项目和 HUSTOJ 社区用户的资助张浩斌 : 基于开放式云平台的
开源在线评测系统设计与实现2.2.
开源在线评测系统改进 HUSTOJ 是由华中科技大学毕业生王良晶等同学开发并在 2008 年底以 GPL 协议进行
开源的一个在线评测系统6,HUSTOJ 采用了 LAMP 平台进行开发, 其早期版本在华中科技大学的服务器上稳定运行至今。
早期的 HUSTOJ 在
开源方面与 ZOJ、BOJ 一样,缺少应有的文档和技术支持, 甚至没有提供数据库结构,使得在
开源后长达一年的时间中没有任何其他的学校和组织进行部署。
作者从 2009 年 9 月开始加入
开源在线评测系统 HUSTOJ 的开发,并在创始人的支持下成为 HUSTOJ 的项目管理员。
为了使 HUSTOJ 更容易被其他院校有效的使用,真正实现
开源共享,作者对 HUSTOJ 系统进行了大量改进,主要包括: 1 开发了安装脚本,实现命令方式的安装,并编写了详细的安装步骤文档。
2 增加了可视化的题目管理界面,采用 FCKEditor 实现了超文本编辑和图片上传功 能。
3 重构和改写了判题内核程序、 提高了系统
代码的可读性, 提高了多线程判题的性能,对多核心处理器有更好的支持。
4 在原有沙箱技术上进行扩充,增加了 Ruby、Bash、Python、Perl、C、
PHP 等多 种编程语言的支持。
d 5 增加了对多国语言支持的机制,吸引国外用户和开发者的关注。
re 6 创建论坛和即时通讯群,并组织创建了用户社区。
7 为用户提供免费的咨询和收费的在线安装、维护服务。
8 开发了基于 Ubuntu 的 LiveCD 系统,使用户无需安装即可试用其完整功能,并可 te以图形化方式完成系统安装,降低了使用门槛。
9 开发了集成虚拟机的 Windows 版本,使得 Windows 用户也可以免安装使用。
is 改进后的 HUSTOJ 主体架构分为判题内核 Judged 和 Web 界面两部分。
它们通过公用一个 MySQL 服务器实现任务队列和数据通信。
判题服务 Judged 是一个系统服务进程,随操 eg作系统一起启动,并随时监视数据库服务器中的任务队列;Web 界面由一组
PHP 程序构成,运行在 Apache 服务器上,也可以支持在 Nginx、lighthttpd 等目前流行的非阻塞式 Web 服务器上运行。
当用户提交新的答案后,Web 程序就将判题任务加入数据库的任务队列,随后判题服务程序 judged 则自动锁定任务并完成,可以防止同一任务被多次判断浪费系统资源。
nR其系统结构如图 1,其中 MySQL 服务器、Web 服务器、判题服务 Judged 既可以是同一台服务器承担,也可以分别由不同的服务承担,以实现分布式计算。
Web 服务器可以采用 Apache 集群,MySQL 服务器可以使用主从式结构,Judged 服务器可以用提交编号静态分配判题 U任务、 也可以通过数据库的锁机制实现动态任务分配。
这样的设计不但能够适应日常教学的小范围使用,而且可以从多个层面扩大服务器集群的规模,高效应对大规模的并发服务7。
这种可扩充的结构设计,也使得 HUSTOJ 相对于其他在线评测系统能够更容易的部署在开放式的云平台之上。
作者简介: 张浩斌1980-男硕士学位讲师主要研究领域为计算机应用技术本文受到浙江传媒学院 《程序设计类教学辅导平台设计与开发》教改项目和 HUSTOJ 社区用户的资助张浩斌 : 基于开放式云平台的
开源在线评测系统设计与实现 图 1 HUSTOJ 系统结构 在作者和社区的努力下,现在有近 50 所高校、科研机构采用了改进的 HUSTOJ 搭建自己的在线评测系统,用户涉及中国大陆、香港、台湾、韩国、美国、马其顿、巴西、伊朗等 d多个国家和地区。
HUSTOJ 项目的发展壮大,系统
代码不断升级更新,有效的解决了系统
代码获取和平台搭建这两大难题。
re te3. 开放式云平台 is3.1. 开放式云平台现状 eg 开放式云平台是近几年由各大互联网巨头提出的新型分布式计算应用平台。
首先,由资金雄厚、技术实力强的互联网公司设计和搭建一个庞大的基础结构,包含分布在世界各地的成千上万的计算节点构成的分布式服务网络。
然后,由系统构建方用一种透明的方式发布给 nR需要搭建 Web 服务的个人、公司和组织。
开放式云平台为个人、中小型机构的高性能 Web服务搭建提供了一种经济、可靠的实现方式。
这正符合高校和其他科研机构对于搭建高性能在线评测系统所提出的要求。
U3.2. 新浪开放云平台 国外最流行的云平台有亚马逊8和谷歌9各自提供的云平台,国内目前较好的开放式云平台服务当属知名上市公司新浪提供的 SAESina App Engine10。
新浪云平台提供国内 Web开发最为流行的
PHP5、MySQL5、Memcache、Crontab 等服务,相对于国外平台最大的优势在于其系统几乎完全兼容常见的 LAMP(Linux、Apache、MySQL、
PHP)平台,许多
PHP应用程序几乎不用修改或做少量修改就可以在新浪云流畅运行。
这给在线评测系统从非云平 图台向云平台进行移植带来了极大便利。
2 展示的是新浪云平台的整体架构, 可以看出新浪云平台通过 Service Router 将 Web Service Pools 中的底层服务与应用完全隔离,实现了运行中系统资源的无缝调配, 可以在不影响应用运行的情况下动态的对参与服务的节点进行增加和删除。
而成熟的反向代理机制,又极大的保证了系统服务的效率,在提高响应速度的同时也有效降低了基础服务的运行负荷。
作者简介: 张浩斌1980-男硕士学位讲师主要研究领域为计算机应用技术本文受到浙江传媒学院 《程序设计类教学辅导平台设计与开发》教改项目和 HUSTOJ 社区用户的资助张浩斌 : 基于开放式云平台的
开源在线评测系统设计与实现 11 图 2 SAE 整体架构图 Web 服务池由一些不同特性的 Web 服务池组成。
每个 Web 服务池实际是由一组 dApache Server 组成的。
每个 Web 服务进程实际处理用户的 HTTP 请求,进程运行在 HTTP服务沙盒内,同时还内嵌同样运行在 SAE 沙盒内的
PHP 解析引擎。
用户的
代码 最终通过 re接口调用各种服务。
日志和统计中心: 负责对用户所使用的所有服务的配额进行统计和资源计费,通过以云 11豆方式的配额机制,用来保证整个平台的稳定的同时还提供了计费手段。
te 此外,图中其他云型标识代表各种分布式服务,如存储服务、计算服务等,还可以不断扩充新的服务与功能。
is 新浪的云计算平台是分布式计算的一种新形式和新应用, 但是相对于普通的分布式计算而言,它具有价格低廉(对低端用户基本免费) 、可扩展性更强、性能更高的特点。
一般高 eg校如果要完全自行搭建类似的分布式服务平台, 需要巨额的初期投入和长期的维护投入才能够实现类似的效果。
nR4. 在开放云平台应用
开源评测系统的问题及对策4.1. 在开放云平台应用
开源评测系统的问题 U 虽然新浪云平台几乎可以完美兼容 LAMP 平台,但是由于其云平台的特殊性,直接将HUSTOJ 部署在 SAE 上仍然会遇到有以下几个问题: 1 SAE 只支持 Web 平台,不支持 Linux 编译运行环境,因此只适用于 HUSTOJ 的 Web 服务界面运行,无法进行编译和判题。
这就要求判题端必须与 SAE 通过网络 进行数据传输、任务转发。
但是,由于安全上的考虑和技术上的限制,HUSTOJ 所使用的 MySQL 远程访问在 SAE 上是不对外开放的。
在图 2 中也可以看到 Service Router 将后台分布式服务透明化的同时,也将 MySQL 封装在 SAE 内部,不能通 过互联网进行访问。
2 SAE 对 MySQL 的使用有着严格的限制,不允许频繁的使用耗时长、扫描行数多的 查询,并对此类查询进行了软硬限制。
一但超越限制,将导致服务被暂停。
3 SAE 不支持文件系统的访问,原有的 HUSTOJ
代码中存在很多访问文件系统的代 码,而当这些
代码运行失败时就会导致部分功能的失效。
作者简介: 张浩斌1980-男硕士学位讲师主要研究领域为计算机应用技术本文受到浙江传媒学院 《程序设计类教学辅导平台设计与开发》教改项目和 HUSTOJ 社区用户的资助张浩斌 : 基于开放式云平台的
开源在线评测系统设计与实现4.2.
开源评测系统针对开放云平台的改进4.2.1. 基于 HTTP 的远程过程调用 从通信角度考虑,无论是 ZOJ 的 Socket 通信还是 HUSTOJ 的 MySQL 连接通信,都是通过网络对任务数据进行访问。
具体使用什么样的网络,采用什么样的协议,都只是一个形式问题。
这样一来,4.1 节中问题 1就转化成了如何从新浪云平台外部的网络访问其内部MySQL 数据库的问题,而后者有一个显而易见的答案,这就是 SAE 的 Web 服务。
所以,如果能够分别编写运行在新浪云平台的
PHP 程序和运行在判题服务器的 Web 客户端程序,就可以实现经由 Web 服务访问 MySQL 数据了。
这种操作机制与 JSON12类似,可以看做是一种基于 HTTP 协议的远程过程调用(RPC) 。
因为判题系统承担着判断用户答案正确性的关键任务,所以它和 SAE 的 Web 服务的通信过程必须有身份认证机制。
作者采用 Unix 传统的简单设计组合复用的思想,直接使用了基于 Cookie 的
PHP Session 机制来实现身份认证; d在 Web 客户端实现上复用了知名的
开源命令行 Web 浏览器 W3M13。
图 3 描述了这一解决方案。
MySQL任务列表 re SAE 云平台 写入结果 te 读取认证信息和任务数据 Web 数据接口 is HTTP Post HTTP Get eg 存取记录 SessionID W3M 客户端 Cookie 文件 登陆信息和判题结果 登陆结果和任务数据 外围判题服务器 读取判题账号 nR 判题程序 配置文件 图 3 判题服务器与 SAE 云平台的带认证 HTTP 数据接口 在实际运行中,云平台上的判题任务数量比普通的在线评测系统要更多,因此可以大量 U部署判题服务器,因为判题服务仅需要 HTTP 通道即可与 SAE 完成远程调用,所以判题服务器不必具有公网 IP 地址,只需要最基础的 Web 浏览能力即可。
这样的要求在学校机房很容易满足,可以实现快速部署大量判题服务器。
为了方便这一操作,作者在 Ubuntu Desktop 的基础上制定了 HUSTOJ 专用 LiveCD,可以在任何 X86 体系结构的 PC 机上用一张光盘或虚拟机快速启动出 HUSTOJ 完整的评测系统,只需要通过网络传输少量的测试数据,即可成为新的判题节点。
在添加判题节点的过程中,完全不影响 SAE 上的 Web 服务,实现了判题节点的动态增加和删除,使得系统规模能够很容易得到扩充。
4.2.2. 基于内存缓存技术的页面加速 虽然 SAE 限制了 MySQL 服务的使用量,但是却提供了另一种性能更为优秀的存储机制作者简介: 张浩斌1980-男硕士学位讲师主要研究领域为计算机应用技术本文受到浙江传媒学院 《程序设计类教学辅导平台设计与开发》教改项目和 HUSTOJ 社区用户的资助张浩斌 : 基于开放式云平台的
开源在线评测系统设计与实现——Memcache。
Memcache 是目前互联网服务领域广泛使用的基于内存 Hash 机制的缓冲系统14,因为其数据完全存储在内存并采用 Hash 算法进行键——值Key-Value检索,所以具有磁盘存储系统无法比拟的存取速度。
但是也正由于这一点,Memcache 的使用成本更高,而且不支持 SQL 的关系化查询方式。
Memcache 系统的这些特点使得它非常适合作为高速缓冲机制。
为了充分发挥 Memcache 的缓冲作用,降低 MySQL 负荷,作者又对 HUSTOJ 做出了两个方面的改进: 1 使用 Memcache 缓存 MYSQL 查询。
因为 HUSTOJ 对于数据库的查询都是通过 SQL 语句来实现,所以可以在查询 MySQL的时候使用 SQL 语句的 MD5 散列值作为键值,将查询到的结果放入 Memcache 中。
在下一次查询的时候,先在 Memcache 中查找缓存数据,如果存在有效数据,就不再进行 MySQL查询,而直接使用 Memcache 缓存的数据。
2 使用 Memcache 直接缓存页面。
HUSTOJ 的
PHP 代码调用 MySQL 进行查询,最终目的是生成 HTML 文本,并反馈给浏览器客户端。
而生成一个页面往往需要进行多次、大量的查询使得页面打开速度变慢,用户在等待时常常使用浏览器的 F5 快捷键刷新页面,就.
上一篇:
哈尔滨工业大学华德应用技术学院专科毕业设计(论文)摘...
下一篇:
电咖汽车入选2018独角兽企业榜百强 发布“天际”品牌将推高估值