劉曉剛
(浙江經貿職業技術學院,浙江 杭州 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平臺較多,如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是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