岑冠軍 蔡賢資
摘 要 闡述數(shù)學(xué)實(shí)驗(yàn)云平臺的設(shè)計(jì)和實(shí)現(xiàn)過程及開發(fā)過程中使用的關(guān)鍵技術(shù)。數(shù)學(xué)實(shí)驗(yàn)云平臺是支持分布式計(jì)算并放置于互聯(lián)網(wǎng)上的集成數(shù)學(xué)實(shí)驗(yàn)環(huán)境,具有開放性、即時(shí)性和易接觸性,能為學(xué)生和教師提供在線數(shù)學(xué)實(shí)驗(yàn)和科學(xué)計(jì)算服務(wù),并具備完成大型科學(xué)計(jì)算任務(wù)的能力。該平臺的建立實(shí)現(xiàn)了數(shù)學(xué)實(shí)驗(yàn)室優(yōu)質(zhì)計(jì)算資源的校內(nèi)和校際共享,為探索數(shù)學(xué)實(shí)驗(yàn)室的未來發(fā)展做有益的嘗試。
關(guān)鍵詞 數(shù)學(xué)實(shí)驗(yàn);云平臺;分布式計(jì)算;MATLAB
中圖分類號:G642.423 文獻(xiàn)標(biāo)識碼:B
文章編號:1671-489X(2017)04-0012-03
Abstract This article elaborates design and implementation of the cloud platform of mathematical experiments, and the key technologies used in the process of platform development. The cloud platform is an integrated environment of mathematical experiments on the internet with openness, real-time and accessibility and capable of executing distributed computations. It is able to provide the online service of mathematical experiments and scientific computations for teachers and students, moreover solve complex computation problems. The cloud platform is a way to share the computational resources of high quality in mathematical laboratory within and between campuses, and explore the development road of mathematical laboratory in future.
Key words mathematical experiments; cloud platform; distributed computing; MATLAB
1 前言
目前國內(nèi)眾多高校的數(shù)學(xué)實(shí)驗(yàn)室是基于局域網(wǎng)的以微機(jī)為主體的機(jī)房,難以將其計(jì)算資源共享給廣大師生或者科研人員使用,不具備開展大型實(shí)驗(yàn)項(xiàng)目和執(zhí)行大型計(jì)算任務(wù)的能力,如大數(shù)據(jù)的分析處理。如何整合數(shù)學(xué)實(shí)驗(yàn)室的計(jì)算資源,使之能夠提供高性能的計(jì)算服務(wù),并將計(jì)算服務(wù)方便快捷地提供給廣大師生使用,是數(shù)學(xué)實(shí)驗(yàn)室建設(shè)中亟待解決的問題[1]。
因此,一些學(xué)者提出基于網(wǎng)絡(luò)的虛擬數(shù)學(xué)實(shí)驗(yàn)室,具有網(wǎng)絡(luò)執(zhí)行MATLAB程序的功能,能進(jìn)行簡單的數(shù)學(xué)實(shí)驗(yàn),具有一定的實(shí)驗(yàn)教學(xué)管理功能;還有一些研究提出基于Web和MATLAB的虛擬實(shí)驗(yàn)系統(tǒng),這些系統(tǒng)針對特定的數(shù)學(xué)實(shí)驗(yàn)項(xiàng)目編制,允許學(xué)生通過網(wǎng)絡(luò)修改模型參數(shù)進(jìn)行演示[2-3]。目前這種基于網(wǎng)絡(luò)的數(shù)學(xué)實(shí)驗(yàn)室或者虛擬實(shí)驗(yàn)系統(tǒng),不能進(jìn)行分布式計(jì)算,難以開展大型的數(shù)學(xué)實(shí)驗(yàn)項(xiàng)目和完成復(fù)雜的科學(xué)計(jì)算任務(wù),難以處理大規(guī)模的并發(fā)訪問,離實(shí)際應(yīng)用還有一段距離。
本文應(yīng)用云計(jì)算的技術(shù)理念,提出構(gòu)建基于J2EE(Java 2 Platform, Enterprise Edition)和MATLAB分布式計(jì)算技術(shù)的數(shù)學(xué)實(shí)驗(yàn)云平臺,實(shí)現(xiàn)數(shù)學(xué)實(shí)驗(yàn)室的多核、多處理器、多臺微機(jī)和大型數(shù)值計(jì)算軟件等優(yōu)質(zhì)計(jì)算資源的校內(nèi)和校際共享,滿足廣大師生日益增長的科學(xué)計(jì)算需求,特別是在分布式計(jì)算和大數(shù)據(jù)處理方面的計(jì)算需求。
2 數(shù)學(xué)實(shí)驗(yàn)云平臺的設(shè)計(jì)
系統(tǒng)概述 云計(jì)算既指在互聯(lián)網(wǎng)上以服務(wù)方式提供的應(yīng)用系統(tǒng)程序,又指在數(shù)據(jù)中心用來提供這些服務(wù)的硬件和系統(tǒng)軟件。云計(jì)算可理解為并行計(jì)算、分布式計(jì)算和網(wǎng)格計(jì)算的發(fā)展,或者說是這些計(jì)算機(jī)科學(xué)概念的商業(yè)實(shí)現(xiàn)[4]。
實(shí)驗(yàn)云是遠(yuǎn)程實(shí)驗(yàn)技術(shù)與云計(jì)算技術(shù)的融合,將改變傳統(tǒng)的教育模式。數(shù)學(xué)實(shí)驗(yàn)云平臺應(yīng)用云計(jì)算的技術(shù)理念,將數(shù)學(xué)實(shí)驗(yàn)和科學(xué)計(jì)算理解為可以提供給用戶的服務(wù),數(shù)學(xué)實(shí)驗(yàn)室的軟硬件資源為生產(chǎn)該服務(wù)的基礎(chǔ)設(shè)施。因此,數(shù)學(xué)實(shí)驗(yàn)云平臺定義為云計(jì)算技術(shù)下的集成數(shù)學(xué)實(shí)驗(yàn)環(huán)境,為學(xué)生、教師和其他用戶提供即時(shí)的云端數(shù)學(xué)實(shí)驗(yàn)和科學(xué)計(jì)算服務(wù),如并行計(jì)算、分布式計(jì)算和大數(shù)據(jù)處理等計(jì)算服務(wù),讓傳統(tǒng)數(shù)學(xué)實(shí)驗(yàn)室的計(jì)算和服務(wù)能力有質(zhì)的飛躍。
功能模塊設(shè)計(jì) 數(shù)學(xué)實(shí)驗(yàn)云平臺是一個(gè)集成的數(shù)學(xué)實(shí)驗(yàn)環(huán)境,在此環(huán)境中主要的操作對象有教師、學(xué)生、執(zhí)行特定計(jì)算的科研人員和平臺管理人員,該平臺主要功能集中在數(shù)學(xué)實(shí)驗(yàn)、課程管理、科學(xué)計(jì)算、協(xié)作交流和資源共享等,具體的功能模塊有:
1)數(shù)學(xué)實(shí)驗(yàn),用戶通過該模塊接收數(shù)學(xué)實(shí)驗(yàn)任務(wù)、在線進(jìn)行數(shù)學(xué)實(shí)驗(yàn)、查看實(shí)驗(yàn)結(jié)果及實(shí)驗(yàn)成績、撰寫并提交實(shí)驗(yàn)報(bào)告和儲存及查看歷次實(shí)驗(yàn)記錄;
2)科學(xué)計(jì)算,用戶通過該模塊提交計(jì)算任務(wù)、編寫計(jì)算程序、上傳相關(guān)數(shù)據(jù)和獲取計(jì)算結(jié)果,進(jìn)行項(xiàng)目管理;
3)課程管理,該模塊使用者主要為數(shù)學(xué)實(shí)驗(yàn)教師,主要功能有發(fā)布實(shí)驗(yàn)任務(wù)、收集并查看實(shí)驗(yàn)報(bào)告、評定實(shí)驗(yàn)成績等;
4)協(xié)作圈子,該模塊幫助用戶完成需要團(tuán)隊(duì)合作的實(shí)驗(yàn)或者科研項(xiàng)目,在一個(gè)圈子里,圈子成員共享實(shí)驗(yàn)空間、代碼空間,在線討論交流等;
5)文件管理與共享,該模塊提供講義、輔助材料、課程錄音、錄像等課程資源的存儲和共享;
6)人員管理,該模塊用于管理教師、學(xué)生和其他人員的個(gè)人信息,包括所上課程、所屬班級實(shí)驗(yàn)小組或者科研機(jī)構(gòu)、參與項(xiàng)目、項(xiàng)目角色等信息。
3 數(shù)學(xué)實(shí)驗(yàn)云平臺的技術(shù)實(shí)現(xiàn)
系統(tǒng)架構(gòu) 數(shù)學(xué)實(shí)驗(yàn)平云臺基于J2EE和MATLAB集群技術(shù)開發(fā),采用B/S(Browser/Server,瀏覽器/服務(wù)器)架構(gòu),如圖1所示。Web服務(wù)器負(fù)責(zé)業(yè)務(wù)邏輯控制,MATLAB集群負(fù)責(zé)數(shù)學(xué)實(shí)驗(yàn)和科學(xué)計(jì)算,數(shù)據(jù)庫負(fù)責(zé)存儲用戶信息、實(shí)驗(yàn)和計(jì)算代碼、計(jì)算結(jié)果、分析報(bào)告等。用戶從網(wǎng)頁上發(fā)出計(jì)算請求,用戶的請求給Web服務(wù)器處理之后,將發(fā)往MATLAB集群管理器,集群管理器給各計(jì)算機(jī)分配作業(yè),完成計(jì)算任務(wù)后將收集計(jì)算結(jié)果并通過Web服務(wù)器返回給用戶,其他需要存儲的信息發(fā)往數(shù)據(jù)庫。服務(wù)器端軟件包括J2EE Server(Apache Tomcat 7.0.52)、MATLAB 2012a和SQL Sever2005。
MATLAB分布式計(jì)算集群的搭建 MATLAB分布式計(jì)算環(huán)境由其并行計(jì)算工具箱(Parallel Computing Toolbox)、分布式計(jì)算服務(wù)器軟件(MATLAB Distributed Computing Server)和計(jì)算機(jī)集群構(gòu)成(Math Works. 2012. MATLAB Reference guide. Natick, MA, USA)。在MATLAB集群架構(gòu)中有3種角色:客戶端(Client)、作業(yè)管理器(Job Manager)、Worker??蛻舳耸前l(fā)起計(jì)算任務(wù)的MATLAB線程,客戶端發(fā)起的計(jì)算任務(wù)稱為作業(yè)(job),作業(yè)是運(yùn)行在MATLAB上的大型運(yùn)算,客戶端在并行計(jì)算工具箱的支持下定義作業(yè)并將其分割成若干個(gè)可以同時(shí)進(jìn)行的小的運(yùn)算,這些小的運(yùn)算稱為任務(wù)(task);客戶端將作業(yè)發(fā)送給作業(yè)管理器,作業(yè)管理器是服務(wù)端應(yīng)用程序的一部分,用來協(xié)調(diào)管理作業(yè)及其任務(wù)的執(zhí)行;作業(yè)管理器將任務(wù)分配給服務(wù)端獨(dú)立的MATLAB線程進(jìn)行計(jì)算,這些MATLAB線程稱為Worker;Worker運(yùn)行結(jié)束返回結(jié)果給作業(yè)管理器,再由分布式計(jì)算工具箱對其結(jié)果進(jìn)行合并,得出最終結(jié)果發(fā)送給客戶。
在一臺計(jì)算機(jī)上,MATLAB并行工具箱只允許最多12個(gè)Worker同時(shí)運(yùn)行,要使用更多的Worker,需要通過MATLAB的分布式計(jì)算服務(wù)器軟件組建MATLAB集群。MATLAB集群的搭建分為四大步驟:MATLAB軟件的安裝、搭建集群局域網(wǎng)、分布式引擎的安裝(MATLAB Distributed Computing Engine,
MDCE)、作業(yè)管理器和Worker的啟動(dòng)配置。MDCE是MATLAB的分布式計(jì)算服務(wù)器軟件的一部分,用以維護(hù)Worker之間、Worker與作業(yè)管理器之間的通信,打開集群內(nèi)各計(jì)算機(jī)的終端界面,進(jìn)入MATLAB的安裝路徑“/toolbox/distcomp/bin”下,輸入命令“mdce install”安裝MDCE。安裝完畢后,輸入“mdce-version”,出現(xiàn)MDCE版本信息則說明安裝成功,此時(shí),輸入“mdce start”,開啟分布式計(jì)算服務(wù)。啟動(dòng)
MDCE服務(wù)后,輸入“startjobmanager-name”命令創(chuàng)建作業(yè)管理器。
學(xué)生的數(shù)學(xué)實(shí)驗(yàn)程序較簡單,計(jì)算量小,但是面臨大量學(xué)生并發(fā)訪問的問題;科學(xué)計(jì)算則針對大型計(jì)算或者大數(shù)據(jù)處理,用戶數(shù)較少,但每次計(jì)算需要占用大量計(jì)算資源。為利用MATLAB集群高效完成這兩項(xiàng)功能,在MATLAB集群中建立兩類作業(yè)管理器:一類是數(shù)學(xué)實(shí)驗(yàn)作業(yè)管理器,名為EJobManager,擁有80個(gè)Worker;一類是科學(xué)計(jì)算作業(yè)管理器,名為SJobManager,擁有120個(gè)Worker,分別接受數(shù)學(xué)實(shí)驗(yàn)和科學(xué)計(jì)算任務(wù)。
MATLAB分布式計(jì)算集群的Web調(diào)用 Matlabcontrol是讓Java程序與MATLAB交互的API,可以實(shí)現(xiàn)從Java程序向MATLAB發(fā)送命令,讓MATLAB執(zhí)行某個(gè)M文件等,其jar包可以在goole code中下載。Matlabcontrol調(diào)用MATLAB分為四大步驟:設(shè)置獲取MATLAB代理時(shí)的相關(guān)參數(shù),通過MatlabProxy的工廠方法獲取代理,運(yùn)行代碼獲取結(jié)果,關(guān)閉代理。在實(shí)際應(yīng)用中獲取和關(guān)閉MATLAB代理要消耗大量的系統(tǒng)資源,運(yùn)行起來也非常慢。為此,筆者建立一個(gè)MATLAB代理池。代理池在服務(wù)器開啟之時(shí)初始化,創(chuàng)建一定默認(rèn)數(shù)量的MATLAB代理,并且設(shè)置一定的限制規(guī)則:設(shè)置代理池內(nèi)最大代理數(shù),達(dá)到這個(gè)數(shù)目后,新增用戶需要等待其他用戶釋放代理。在這個(gè)機(jī)制下,用戶可以直接在池中獲得空閑的代理,而不是每次連接時(shí)新建一個(gè)代理;使用完了代理之后也不是直接關(guān)閉它,而是將代理放入代理池中。同時(shí)在Servlet中還設(shè)置了一個(gè)監(jiān)聽器來監(jiān)聽每個(gè)代理所使用的連接數(shù),可以標(biāo)記一個(gè)代理MATLAB進(jìn)程同時(shí)被多少個(gè)用戶所使用。本文系統(tǒng)以每個(gè)代理同時(shí)最多由20個(gè)客戶使用作為限制。
用戶向Web服務(wù)器發(fā)送請求,Web服務(wù)器通過Matlab-control建立與服務(wù)端的MATLAB鏈接,用戶通過此鏈接向MATLAB集群上的作業(yè)管理器注入作業(yè),從而實(shí)現(xiàn)調(diào)用集群計(jì)算機(jī)完成計(jì)算任務(wù)。開啟Tomcat服務(wù)器之后,自動(dòng)加載InitServlet,InServlet中的Init()方法自動(dòng)初始化MATLAB代理池,并且默認(rèn)開啟1個(gè)MATLAB進(jìn)程,把MATLAB的代理池對象放入Application中。
數(shù)學(xué)實(shí)驗(yàn)與科學(xué)計(jì)算模塊的實(shí)現(xiàn) 每個(gè)用戶所編寫的MATLAB程序執(zhí)行時(shí)間不一樣,用戶通過MATLAB代理提交作業(yè)并等待作業(yè)管理器返回計(jì)算結(jié)果,需要占用MATLAB代理較長時(shí)間,在大量用戶并發(fā)訪問時(shí)會導(dǎo)致MATLAB代理資源不足。其解決方案是將作業(yè)提交和獲取計(jì)算結(jié)果異步執(zhí)行,這樣不僅可以克服因某個(gè)用戶程序執(zhí)行較慢而阻塞MATLAB代理進(jìn)程的問題,而且由于用戶提交作業(yè)后即釋放對MATLAB代理的占用,可以讓一個(gè)MATLAB代理響應(yīng)更多的用戶請求,減少系統(tǒng)開銷。
該解決方案的具體做法是將用戶MATLAB程序封裝成指定名字的作業(yè),通過MATLAB代理提交給相應(yīng)的作業(yè)管理器,由作業(yè)管理器調(diào)度MATLAB集群處理。同時(shí)采用MATLAB定時(shí)器技術(shù)在集群端間隔一定時(shí)間掃描作業(yè)管理器中的作業(yè)狀態(tài),對狀態(tài)為完成的作業(yè),取回其結(jié)果并以文本形式保存到指定目錄下,客戶通過文件監(jiān)聽和Ajax技術(shù)獲取該文本文件中的結(jié)果。這樣使得作業(yè)提交、作業(yè)計(jì)算和輸出結(jié)果分別在不同的計(jì)算機(jī)上完成。
通過MATLAB定時(shí)器輸出已完成作業(yè)的計(jì)算結(jié)果的MATLAB函數(shù)如下:
function getResult(savepath,jobmanager)
[p q r jobM]=findJob(jobmanager);
for i=1:length(jobM)
directory=get(jobM(i),UserName);
filename=[directory,datestr(now,30)];
result=getAllOutputArguments(jobM(i));
xlswrite([savepath ‘\ directory ‘\ filename],result)
destroy(jobM(i))
end
前端頁面的實(shí)現(xiàn) 數(shù)學(xué)實(shí)驗(yàn)云平臺采用J2EE中的Jsp+
Servlet+Bean的MVC(Model View Controller)設(shè)計(jì)模式,前端頁面采用Bootstrap框架開發(fā),會根據(jù)顯示器大小自動(dòng)調(diào)整頁面顯示,用戶可以在電腦、移動(dòng)設(shè)備上登錄該平臺。用戶成功登錄系統(tǒng)后,進(jìn)入數(shù)學(xué)實(shí)驗(yàn)或者科學(xué)計(jì)算模塊之后,可以新建實(shí)驗(yàn)(科研)項(xiàng)目,或者進(jìn)入已有的實(shí)驗(yàn)(科研)項(xiàng)目,編寫計(jì)算程序提交作業(yè),保存計(jì)算程序到數(shù)據(jù)庫,方便下次調(diào)用查看,科學(xué)計(jì)算模塊允許用戶上傳計(jì)算需要的數(shù)據(jù)和其他M文件。
4 結(jié)語
本研究基于云計(jì)算的技術(shù)理念,在J2EE環(huán)境下開發(fā)基于MATLAB分布式計(jì)算技術(shù)的數(shù)學(xué)實(shí)驗(yàn)云平臺,具有開放性、即時(shí)性、易接觸性,能夠方便快捷地為廣大師生提供數(shù)學(xué)實(shí)驗(yàn)和科學(xué)計(jì)算服務(wù)。該平臺將數(shù)學(xué)實(shí)驗(yàn)室軟硬件計(jì)算資源組建成集群,可以進(jìn)行大型科學(xué)計(jì)算,充分發(fā)揮實(shí)驗(yàn)室資源的潛在效能。用戶通過瀏覽器即可向該平臺提交計(jì)算任務(wù)獲取計(jì)算結(jié)果,實(shí)現(xiàn)實(shí)驗(yàn)室資源的校內(nèi)校際共享,有利于提高實(shí)驗(yàn)教學(xué)水平。因此,本研究為高校利用現(xiàn)有實(shí)驗(yàn)室構(gòu)建云計(jì)算實(shí)驗(yàn)室及實(shí)現(xiàn)其資源共享做了有益嘗試,并為數(shù)學(xué)實(shí)驗(yàn)室的未來發(fā)展拓展了道路,符合教育技術(shù)信息化的未來發(fā)展方向。
參考文獻(xiàn)
[1]孫蘇菁,白占兵.關(guān)于數(shù)學(xué)實(shí)驗(yàn)室建設(shè)的若干思考[J].科技視界,2013(11):41.
[2]宋紹云,師紅.基于Matlab Web Server的數(shù)學(xué)實(shí)驗(yàn)室體系結(jié)構(gòu)的建立[J].玉溪師范學(xué)院學(xué)報(bào),2007(12):38-42.
[3]謝治州,羅曉賓,嚴(yán)忠權(quán).基于MATLAB網(wǎng)絡(luò)數(shù)學(xué)實(shí)驗(yàn)室的構(gòu)建[J].黔南民族師范學(xué)院學(xué)報(bào),2010(6):9-15.
[4]Sosinsky B. Cloud Computing Bible[M].北京:電子工業(yè)出版社,2013.