基于开源云计算的远程教育系统的设计与实现
2011-10-18刘晓刚
刘晓刚
(浙江经贸职业技术学院,浙江 杭州 310018)
基于开源云计算的远程教育系统的设计与实现
刘晓刚
(浙江经贸职业技术学院,浙江 杭州 310018)
文章指出中国当前远程教育系统普遍存在的对软硬件要求高、资源重复建设、系统扩充能力弱、可配置性差等问题,提出了引入云计算技术解决问题的思路。对云计算PaaS的主流平台进行了分析比较,确认选择Google App Engine作为解决方案,并通过分析AppScale的技术原理,研究了基于AppScale技术的远程教育系统的设计方法。
云计算;远程教育系统;PaaS;AppScale
一、概述
我国在用的远程教育系统大多采用传统模式设计,存在着对软硬件要求高、资源重复建设、系统扩充能力弱、可配置性差等难题。基于云计算(Cloud Computing)的远程教育系统能够充分发挥云计算的特点,统筹使用软硬件资源,提供强大的信息服务和资源管理能力;系统使用统一的资源列表提供最合理的服务,不再受地域、时间的限制;云计算平台可以按需进行动态地部署、配置、重新配置以及撤销服务,系统可以做功能上的定制而非代码级定制,不需要独立部署,提供灵活的自定义功能,从而很好地满足不同学校和不同时期的服务需求;可以通过按需扩展资源来轻松处理网络流量的增加,以支持学校的变化与发展,达到按需使用和随处可用;在学生用户数大量增加的情况下,无须更改应用架构,仅需增加硬件设备的数量,就可以支撑应用规模的增长;可以使用云服务的强大功能来处理大型数据集并充分利用大规模并行处理,通过部署多台计算机组成“云”,共同承担信息服务,不再强求高性能的服务器,节约了硬件投资,非常适合中国教育。而基于开源云计算的远程教育系统与开源的操作系统完美结合,更加节约资金投入。
本研究拟研制一个采用开源云计算技术并较为普遍适用的远程教育系统,可提供性能强大的信息服务综合环境,进一步促进我国远程教育事业的发展。
二、系统的整体设计
按照云计算提供服务的类型可以将其划分为三层。最底层称为“基础设施即服务”(Infrastructure as a Service,IaaS),IaaS将内存、I/O设备、存储和计算能力整合成一个虚拟的资源池为用户群提供所需要的存储资源和虚拟化服务器等服务;IaaS层的上面,是为特定需求定制的面向服务的主机环境平台,称为“平台即服务”(Platform as a Service,PaaS),PaaS 提供开发环境、服务器平台、硬件资源等服务给用户,用户可以在它的基础架构基础上开发程序并通过互联网和其服务器传给其他用户;最上面的层为用户提供其准备使用的应用,称为“软件即服务”(Software as a Service,SaaS)。 云计算体系结构中的层次是可以分割的,即某一层次可以单独完成一项用户的请求而不需要其他层次的服务和支持。其中,PaaS提供开发环境、服务器平台、硬件资源等服务给用户,用户可以在服务提供商的基础架构基础上开发程序并通过互联网和其服务器传给其他用户。本研究尝试对云计算技术进行分析研究,选择合适的PaaS平台和技术设计新型的远程教育系统,从而将云计算技术的优势应用到教育领域。
如图1所示,本研究内容分为两个部分:首先,对多种开源的云计算PaaS软件进行分析选择,从空间稳定性、是否免费、带宽、伸缩性、管理界面和可迁移性等多方面进行比较,找到合适的PaaS软件,使它实现与其他软件无缝集成和稳定运行,搭建成一个新型开源的云计算平台。
其次,在开源云计算平台之上,对信息数据进行建模,利用Web服务技术,设计实现一个基于Web的远程教育软件。该软件提供开放的服务扩展接口,在不改变系统架构的情况下可以灵活地扩充业务功能。
最后,在搭建好的开源云计算平台上部署这套远程教育软件,并以标准Web方式向学生用户提供教学服务,完成整个远程教育系统。
三、PaaS平台分析选择
当前正在使用的PaaS平台较多,如GoogleAppEngine、亚马逊的弹性计算云(Amazon Elastic Compute Cloud,EC2)微软的Windows Azure、中国联通的云联云、中国移动的大云(Big Cloud)、中国电信的E云、GoGrid和 AppNexus等等。但是技术达到成熟、市场应用最多的主流云计算平台只是前三个。
1.主流PaaS的分析比较
(1)Google App Engine
Google App Engine是由Google开发的云计算平台,它提供一整套开发组件来让用户轻松地在本地构建和调试网络应用,之后能让用户在Google强大的基础设施上部署和运行网络应用程序,并自动根据应用所承受的负载来对应用进行扩展,并免去用户对应用和服务器等的维护工作。同时提供大量的免费额度和灵活的资费标准。在开发语言方面,支持Python和Java两种语言,并为这两种语言提供基本相同的功能和API。
Google App Engine主要有六个方面的功能:动态网络服务,并提供对常用网络技术的支持,比如SSL等;持久存储空间,且支持简单的查询和本地事务;能对应用进行自动扩展和负载平衡;提供一套功能完整的本地开发环境,可以让用户在本机上对App Engine进行开发和调试;支持包括E-mail和用户认证等多种服务;提供能在指定时间和定期触发事件的计划任务和能实现后台处理的任务队列。
Google App Engine的主要组成可分为五部分:应用服务器,主要是用于接收来自于外部的Web请求;Datastore,主要用于对信息进行持久化,基于Google的BigTable技术;服务,除了必备的应用服务器和Datastore之外,Google App Engine还自带许多服务来帮助开发者,比如Memcache、邮件、网页抓取、任务队列、XMPP等;管理界面,主要用于管理应用并监控应用的运行状态,比如消耗了多少资源,发送了多少邮件和应用运行的日志等;本地开发环境,主要是帮助用户在本地开发和调试基于Google App Engine的应用,包括用于安全调试的沙盒(sandbox),SDK和 IDE插件等工具。
(2)Amazon EC2
Amazon EC2是Amazon Elastic Compute Cloud的简称。EC2实际上是一个Web服务,通过它可以请求和使用云中大量的资源。Amazon的解决方案特色在于灵活性和可配置性。你可以请求想要的服务,根据需要配置它们,设置静态IP,并显式地设置自己的安全性和网络。此外,Amazon拥有很好的声望和优秀的按使用量收费(Pay only for what you use)的模型。
从技术上讲,Google App Engine是Amazon EC2的竞争对手,但是它们之间又有很大的不同之处。Amazon提供灵活性和可控制性,而Google则提供易用性和高度自动化的配置。如果使用Google App Engine,用户只需编写代码,上传应用程序,剩下的大部分事情可以让Google来完成。Amazon EC2和Google一样都有很大的知名度和较大的缓存,但Google App Engine开始是免费的,只有当传输量较大,并使用较多计算资源时才收费。另一个不同点是,Google是以 Python为中心的架构和设计,这是一个有帮助的、简化问题的约束。
(3)Windows Azure
Microsoft以一种完全不同的方式实现云计算,Microsoft Azure直接瞄准Microsoft开发人员,它使用Visual Studio、可视化工具和可视化环境,使得一大批程序员可以不用改变开发习惯直接使用这个平台。Windows Azure与Google App Engine、Amazon EC2都不相同,它针对使用Windows的人,它涉及到 C#、SQL Server、.NET 以及Visual Studio。
2.PaaS平台解决方案的选择
Google App Engine、Amazon EC2 和 Windows Azure是目前云计算平台的“三巨头”,其他的云计算平台都不是主流产品,而且技术不够成熟,用户一般会选择这三个解决方案中的一个。选择云计算平台,主要从开发技能、偏好、经济条件和应用程序需求的基本问题方面来考虑,我们确定选择Google App Engine作为项目平台,主要基于以下几个理由:
(1)空间稳定:Google App Engine提供的空间不仅稳定,而且对所发生问题的响应速度非常迅速,改进方案也快速可靠。
(2)免费:只要你的页面访问量每月不超过500万人次,Google就免费向你提供空间。如果访问量超过了这一限额,你也可以随时通过升级为付费用户取消这一限制。而且现在提供的免费资源足以让一般的网站承受约500万次请求/月,完全可以满足远程教育系统的需要,对于经费普遍紧张的学校,这是一个明显的优势。
(3)带宽:Google遍布世界的服务器,Google App Engine的分布式设计,能保证在世界任何一个角落访问都能得到快速的响应。而且通过部署后面讲到的AppScale,使得服务器本地化,还可以更好地保证访问带宽。
(4)伸缩性强:Google App Engine本身就具有很强的伸缩性,不需再做许多额外的工作。
(5)强大的管理界面:Google App Engine提供了功能强大的管理功能,用户可以通过管理界面查看错误日志,浏览所保存的数据,分析程序的性能(例如请求响应时间等),还可以实时监控部署的应用。
(6)迁移方便:如果有需求,可以通过App Engine SDK把App Engine上的应用迁移到另外的服务器上。
四、基于开源云计算AppScale技术的远程教育系统设计
AppScale是Google App Engine的API集合的一种开源实现,它是一种云计算平台,使得在IaaS层上执行Google App Engine的应用更加容易。AppScale带来App Engine的动力,让用户能够使用自己的计算机集群来运行App Engine应用,并且能够在IaaS平台之上透明地运行。AppScale的目标是提供一个平台即服务的云计算基础架构,使最终用户不仅能部署、测试、调试、测量和监视他们先前部署的私有Google App Engine应用,而且也便于调查和扩展PaaS的实现。
1.AppScale的结构
AppScale实现了Google App Engine扩展的SDK以及SDK开放的各种API环境,当系统执行App Engine应用时,AppScale中的多个组件能够自动部署、管理、缩放和容错,你可以不需要受任何限制地在AppScale中部署和运行Google App Engine应用。如图2所示,AppScale具有四个组件,分别是 AppServer、AppLoadBalancer、Database Master、Database Slaves。
AppServer:这是执行Google App Engine应用程序的主要组件,是Google App Engine软件开发工具执行本地App Engine应用的扩展。每个AppServer只能同时执行一个应用,但可以添加多个AppServer满足主机执行多个应用的需要。
AppLoadBalancer:这个组件负责处理用户的首次请求。在用户成功登录以后,这个组件为用户的请求分配路由并找到合适的AppServer,实质上由AppServer为应用控制处理该请求。然后,这个用户的其他请求将直接路由到这个选定的AppServer,不再需要AppLoadBalancer重新分配。这种情况不同于传统的装载平衡器,在Rails应用程序中装载平衡器是Ruby,装载平衡器的功能由名为nginx的开源Web代理来提供。
Database Master:是数据存储的主要接口,它为一些AppScale可用的数据存储实现提供访问能力,如MySQL,Cassandra,Voldemort,MongoDB,HBase,HyperTable,等等。
Database Slaves:一个或多个Database Slave提供了分布的、可升级的并且容错的数据管理能力。
各个组件使用AppController互相联系通信,AppController在部署环境内控制安装、初始化和拆卸所有的AppScale实例,还负责Google App Engine应用的部署和认证。Google App Engine应用接口的用户使用SSL与AppServer联系,到AppScale环境的首次登录请求总是要由装载平衡器处理,在成功登录之后再将其路由到合适的应用。
开发者使用AppScale工具集创建可被用户访问的应用,这些工具集提供的功能可以创建AppScale实例并且部署App Engine应用到AppScale中。
2.基于AppScale的教学平台具体设计
远程教育系统应包含三个子系统:教学支持子系统、系统管理子系统和教学资源库子系统。其中教学支持子系统包括智能导教模块、智能导学模块、信息发布模块、在线学习模块、作业管理模块、辅导答疑模块、在线测试模块、电子图书模块、交流讨论模块等;系统管理子系统包括用户管理、资源审查、系统评价、统计分析、性能管理、安全管理、计费管理等模块;教学资源库子系统包括教学资源库、资源库管理等模块以及各种学科资源的制作工具软件。各模块的功能分别由一个App Engine应用实现,每个App Engine被一个AppServer执行,可以被部署到不同的主机上。图3清楚地显示了基于AppScale的远程教育系统的总体框架以及各子系统之间、子系统中各功能模块之间的关系。篇幅有限,下面仅阐述其中三个重要模块的功能设计。
(1)用户管理模块
教师管理:通过创建“教师基本信息库”存放教师信息。它设置各个教师的基本情况,注册教师个人信息。确认后该教师的信息将被保存到教师基本信息库,具有录入、修改、查询等基本界面。教师信息只有系统管理员审核通过后才能注册科目,注册后,经过审查程序,检验合格后,方能成为具有某一学科教学权限的教师,才可对试题库进行相关操作。学生管理:设置学生基本情况。该模块可进行各种维护,如对学生用户信息进行修改、查询、删除等。学生信息要具有真实性,每个学生在通过了审查程序后,方能成为正式学生用户。资格审查:资格审查分为两部分,对教师的资格审查和对学生的资格审查。教师资格审查中除了普通教师用户的资格审查外,由于在线测试的出题比较重要,所以要求出题人必须具备一定的资格,系统管理员审核通过后赋予相应权限。学生资格审查面向全体学生,要求以学号和实际姓名注册,通过与数据库中的学生信息进行比对认证,避免垃圾数据。(2)在线测试模块考场设置:考场设置包括考场参数设置,如考试时间、
考场规则、提交时间、考试级别等。试卷生成:根据老师设置考场信息、学生的信息、学生的选择及试卷信息形成考试界面。试卷分发:考试界面完成后,系统将页面传至考生所在客户端的过程为试卷分发,与传统的分发试卷不同,它是通过远端服务器来进行的。在线考试:当点击开始按钮时,某考生本次所有考题将会以列表的形式显示在页面,当考生选择某道题后,答题过程就开始了。试卷提交:考生在规定时间内答完试卷后,进行试卷提交。(3)统计分析模块学生情况统计分析:根据学生的考试情况和平时的自主训练情况的记录,统计学生学习成绩、分析学生的学习情况。
试题情况统计分析:根据单个试题的回答情况,分析试题各个属性是否贴切,动态修改各试题的属性,如难度、区分度等。
试卷情况统计分析:根据试卷的回答情况,分析整份试卷各个属性是否贴切,动态修改各试卷的属性,如难度、区分度等。
五、结语
文章研究了云计算的层次特点,对当今PaaS的主流平台进行了分析比较,确认选择Google App Engine作为解决方案。然后阐述了开源软件AppScale的技术原理,并设计基于AppScale技术的远程教育系统。这种新型的远程教育系统与传统的平台相比具有多个优点:能提供强大的教育服务能力、有效避免资源重复建设、实现高效资源共享和就近访问、成本低廉、可配置和伸缩性。由于以上优点的存在,基于开源云计算AppScale技术的远程教育系统比传统的系统更加适合现代教育的需要,具有推广使用的价值。
[1]Lamia Youseff,Maria Butrico,Dilma Da Silva,Toward a Unified Ontology of Cloud Computing,in ieee xplore,pp.2-10,2009.
[2]Bo Dong,Qinghua Zheng,Jie Yang,Haifei Li,Mu Qiao,AnE-learningEcosystemBasedonCloudComputingInfrastructure,2009 Ninth IEEE International Conference on Advanced Learning Technologies,pp.125-127,2009.
[3]Thomas Kwok,Thao Nguyen,Linh Lam,A Software as a Service with Multi-tenancy Support for an Electronic Contract Management Application,2008 IEEE International Conference on Services Computing,pp.179-186,2008.
[4]Borje Ohlman,Anders Eriksson,René Rembarz,What Networking of Information Can Do for Cloud Computing,200918th IEEE International Workshops on Enabling Technologies:Infrastructures for Collaborative Enterprises,pp.78-83,2009.
[5]Gianni Fenu,Simone Surcis,A Cloud Computing based Real Time Financial System, 2009 Eighth International Conference on Networks,pp.374-379,2009.
[6]Liang-Jie Zhang,Qun Zhou,CCOA:Cloud Computing Open Architecture,2009 IEEE International Conference on Web Services,pp.607-616,2009.
[7]Stefan Tai,Cloud Service En
(编辑:金冉)
TP302
B
1673-8454(2011)09-0040-04