2012年11月3日星期六

基于OpenStack的Online Judge实现构想

应该说吧,这个构想在po主接下老师项目的时候就有点思路了。当时刚好接触openstack不久,对云计算有点概念。感觉openstack和OJ是可以结合起来的,当然具体的想法是经过了解openstack以后渐渐的明朗起来。

先交代下目前的状况。某理工作为国内排得上号的211,985传统理工学校,还没有一个像样的OJ系统。所谓的不像样,就是该OJ即使是面对两个班(大概一百多号人)同时上机实验都会随时崩溃...对于校赛这种就更不用说了,我们学校的ACM集训队从来不敢用我们自己的OJ,都是到杭电上面去搞contest...

Online Judge某种程度上也算是SaaS,为用户提供在线判题服务。用户把代码提交上去,服务器经过计算将结果返还给用户,典型的B/S架构。这样说的话,其实是单节点服务器就足以应付的小型应用(对于我们大SCUT来说还真是= =!)。但是单纯从web架构方面考虑,这里面还有很多需要改进的地方。最简单直接而且立竿见影的方案是,将LAMP架构换成LNMP架构,也就是apache + mod_php 改用 nginx + fastCGI 以提高系统并发量,加快PHP解释速度。。。至于动态网页静态化,数据缓存之类的优化方案也是可以有的,而且肯定会实现。

po主的想法是,如果由openstack在其中作为IaaS层向上提供服务,可以在物理服务器有限的前提下方便的搭建分布式判题系统,对外由nginx作为web前端节点,并为后面的判题节点集群作负载均衡。由于云计算“按需分配”的特性,可以较好的实现系统资源弹性分配,避免单服务器节点在高负载下成为系统瓶颈,同时也增强了可扩展性。虽然我们的初始需求仅仅是满足教学日常用途,但是在一开始就设立架构上的大方向,考虑到以后的可扩展性的话,目光放远点还是很有必要的。

同时po主准备基于hustOJ的系统进行二次开发,添加一些个性化的模块,比如mediawiki用作管理OJ的技术记录与使用说明。看了该项目的源代码一段时间,觉得原作者真是牛逼闪闪啊。框架暂时没发现什么问题,后期管理员的优化也很不错,这不得不说是开源的一大好处。貌似我越来越喜欢open source了~(才不是什么拿来主义呢

1 条评论: