数学实验云平台设计与实现

2017-04-14 11:50岑冠军蔡贤资
中国教育技术装备 2017年4期
关键词:分布式计算数学实验云平台

岑冠军 蔡贤资

摘 要 阐述数学实验云平台的设计和实现过程及开发过程中使用的关键技术。数学实验云平台是支持分布式计算并放置于互联网上的集成数学实验环境,具有开放性、即时性和易接触性,能为学生和教师提供在线数学实验和科学计算服务,并具备完成大型科学计算任务的能力。该平台的建立实现了数学实验室优质计算资源的校内和校际共享,为探索数学实验室的未来发展做有益的尝试。

关键词 数学实验;云平台;分布式计算;MATLAB

中图分类号:G642.423 文献标识码: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 前言

目前国内众多高校的数学实验室是基于局域网的以微机为主体的机房,难以将其计算资源共享给广大师生或者科研人员使用,不具备开展大型实验项目和执行大型计算任务的能力,如大数据的分析处理。如何整合数学实验室的计算资源,使之能够提供高性能的计算服务,并将计算服务方便快捷地提供给广大师生使用,是数学实验室建设中亟待解决的问题[1]。

因此,一些学者提出基于网络的虚拟数学实验室,具有网络执行MATLAB程序的功能,能进行简单的数学实验,具有一定的实验教学管理功能;还有一些研究提出基于Web和MATLAB的虚拟实验系统,这些系统针对特定的数学实验项目编制,允许学生通过网络修改模型参数进行演示[2-3]。目前这种基于网络的数学实验室或者虚拟实验系统,不能进行分布式计算,难以开展大型的数学实验项目和完成复杂的科学计算任务,难以处理大规模的并发访问,离实际应用还有一段距离。

本文应用云计算的技术理念,提出构建基于J2EE(Java 2 Platform, Enterprise Edition)和MATLAB分布式计算技术的数学实验云平台,实现数学实验室的多核、多处理器、多台微机和大型数值计算软件等优质计算资源的校内和校际共享,满足广大师生日益增长的科学计算需求,特别是在分布式计算和大数据处理方面的计算需求。

2 数学实验云平台的设计

系统概述 云计算既指在互联网上以服务方式提供的应用系统程序,又指在数据中心用来提供这些服务的硬件和系统软件。云计算可理解为并行计算、分布式计算和网格计算的发展,或者说是这些计算机科学概念的商业实现[4]。

实验云是远程实验技术与云计算技术的融合,将改变传统的教育模式。数学实验云平台应用云计算的技术理念,将数学实验和科学计算理解为可以提供给用户的服务,数学实验室的软硬件资源为生产该服务的基础设施。因此,数学实验云平台定义为云计算技术下的集成数学实验环境,为学生、教师和其他用户提供即时的云端数学实验和科学计算服务,如并行计算、分布式计算和大数据处理等计算服务,让传统数学实验室的计算和服务能力有质的飞跃。

功能模块设计 数学实验云平台是一个集成的数学实验环境,在此环境中主要的操作对象有教师、学生、执行特定计算的科研人员和平台管理人员,该平台主要功能集中在数学实验、课程管理、科学计算、协作交流和资源共享等,具体的功能模块有:

1)数学实验,用户通过该模块接收数学实验任务、在线进行数学实验、查看实验结果及实验成绩、撰写并提交实验报告和储存及查看历次实验记录;

2)科学计算,用户通过该模块提交计算任务、编写计算程序、上传相关数据和获取计算结果,进行项目管理;

3)课程管理,该模块使用者主要为数学实验教师,主要功能有发布实验任务、收集并查看实验报告、评定实验成绩等;

4)协作圈子,该模块帮助用户完成需要团队合作的实验或者科研项目,在一个圈子里,圈子成员共享实验空间、代码空间,在线讨论交流等;

5)文件管理与共享,该模块提供讲义、辅助材料、课程录音、录像等课程资源的存储和共享;

6)人员管理,该模块用于管理教师、学生和其他人员的个人信息,包括所上课程、所屬班级实验小组或者科研机构、参与项目、项目角色等信息。

3 数学实验云平台的技术实现

系统架构 数学实验平云台基于J2EE和MATLAB集群技术开发,采用B/S(Browser/Server,浏览器/服务器)架构,如图1所示。Web服务器负责业务逻辑控制,MATLAB集群负责数学实验和科学计算,数据库负责存储用户信息、实验和计算代码、计算结果、分析报告等。用户从网页上发出计算请求,用户的请求给Web服务器处理之后,将发往MATLAB集群管理器,集群管理器给各计算机分配作业,完成计算任务后将收集计算结果并通过Web服务器返回给用户,其他需要存储的信息发往数据库。服务器端软件包括J2EE Server(Apache Tomcat 7.0.52)、MATLAB 2012a和SQL Sever2005。

MATLAB分布式计算集群的搭建 MATLAB分布式计算环境由其并行计算工具箱(Parallel Computing Toolbox)、分布式计算服务器软件(MATLAB Distributed Computing Server)和计算机集群构成(Math Works. 2012. MATLAB Reference guide. Natick, MA, USA)。在MATLAB集群架构中有3种角色:客户端(Client)、作业管理器(Job Manager)、Worker。客户端是发起计算任务的MATLAB线程,客户端发起的计算任务称为作业(job),作业是运行在MATLAB上的大型运算,客户端在并行计算工具箱的支持下定义作业并将其分割成若干个可以同时进行的小的运算,这些小的运算称为任务(task);客户端将作业发送给作业管理器,作业管理器是服务端应用程序的一部分,用来协调管理作业及其任务的执行;作业管理器将任务分配给服务端独立的MATLAB线程进行计算,这些MATLAB线程称为Worker;Worker运行结束返回结果给作业管理器,再由分布式计算工具箱对其结果进行合并,得出最终结果发送给客户。

在一台计算机上,MATLAB并行工具箱只允许最多12个Worker同时运行,要使用更多的Worker,需要通过MATLAB的分布式计算服务器软件组建MATLAB集群。MATLAB集群的搭建分为四大步骤:MATLAB软件的安装、搭建集群局域网、分布式引擎的安装(MATLAB Distributed Computing Engine,

MDCE)、作业管理器和Worker的启动配置。MDCE是MATLAB的分布式计算服务器软件的一部分,用以维护Worker之间、Worker与作业管理器之间的通信,打开集群内各计算机的终端界面,进入MATLAB的安装路径“/toolbox/distcomp/bin”下,输入命令“mdce install”安装MDCE。安装完毕后,输入“mdce-version”,出现MDCE版本信息则说明安装成功,此时,输入“mdce start”,开启分布式计算服务。启动

MDCE服务后,输入“startjobmanager-name”命令创建作业管理器。

学生的数学实验程序较简单,计算量小,但是面临大量学生并发访问的问题;科学计算则针对大型计算或者大数据处理,用户数较少,但每次计算需要占用大量计算资源。为利用MATLAB集群高效完成这两项功能,在MATLAB集群中建立两类作业管理器:一类是数学实验作业管理器,名为EJobManager,拥有80个Worker;一类是科学计算作业管理器,名为SJobManager,拥有120个Worker,分别接受数学实验和科学计算任务。

MATLAB分布式计算集群的Web调用 Matlabcontrol是让Java程序与MATLAB交互的API,可以实现从Java程序向MATLAB发送命令,让MATLAB执行某个M文件等,其jar包可以在goole code中下载。Matlabcontrol调用MATLAB分为四大步骤:设置获取MATLAB代理时的相关参数,通过MatlabProxy的工厂方法获取代理,运行代码获取结果,关闭代理。在实际应用中获取和关闭MATLAB代理要消耗大量的系统资源,运行起来也非常慢。为此,笔者建立一个MATLAB代理池。代理池在服务器开启之时初始化,创建一定默认数量的MATLAB代理,并且设置一定的限制规则:设置代理池内最大代理数,达到这个数目后,新增用户需要等待其他用户释放代理。在这个机制下,用户可以直接在池中获得空闲的代理,而不是每次连接时新建一个代理;使用完了代理之后也不是直接关闭它,而是将代理放入代理池中。同时在Servlet中还设置了一个监听器来监听每个代理所使用的连接数,可以标记一个代理MATLAB进程同时被多少个用户所使用。本文系统以每个代理同时最多由20个客户使用作为限制。

用户向Web服务器发送請求,Web服务器通过Matlab-control建立与服务端的MATLAB链接,用户通过此链接向MATLAB集群上的作业管理器注入作业,从而实现调用集群计算机完成计算任务。开启Tomcat服务器之后,自动加载InitServlet,InServlet中的Init()方法自动初始化MATLAB代理池,并且默认开启1个MATLAB进程,把MATLAB的代理池对象放入Application中。

数学实验与科学计算模块的实现 每个用户所编写的MATLAB程序执行时间不一样,用户通过MATLAB代理提交作业并等待作业管理器返回计算结果,需要占用MATLAB代理较长时间,在大量用户并发访问时会导致MATLAB代理资源不足。其解决方案是将作业提交和获取计算结果异步执行,这样不仅可以克服因某个用户程序执行较慢而阻塞MATLAB代理进程的问题,而且由于用户提交作业后即释放对MATLAB代理的占用,可以让一个MATLAB代理响应更多的用户请求,减少系统开销。

该解决方案的具体做法是将用户MATLAB程序封装成指定名字的作业,通过MATLAB代理提交给相应的作业管理器,由作业管理器调度MATLAB集群处理。同时采用MATLAB定时器技术在集群端间隔一定时间扫描作业管理器中的作业状态,对状态为完成的作业,取回其结果并以文本形式保存到指定目录下,客户通过文件监听和Ajax技术获取该文本文件中的结果。这样使得作业提交、作业计算和输出结果分别在不同的计算机上完成。

通过MATLAB定时器输出已完成作业的计算结果的MATLAB函数如下:

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

前端页面的实现 数学实验云平台采用J2EE中的Jsp+

Servlet+Bean的MVC(Model View Controller)设计模式,前端页面采用Bootstrap框架开发,会根据显示器大小自动调整页面显示,用户可以在电脑、移动设备上登录该平台。用户成功登录系统后,进入数学实验或者科学计算模块之后,可以新建实验(科研)项目,或者进入已有的实验(科研)项目,编写计算程序提交作业,保存计算程序到数据库,方便下次调用查看,科学计算模块允许用户上传计算需要的数据和其他M文件。

4 结语

本研究基于云计算的技术理念,在J2EE环境下开发基于MATLAB分布式计算技术的数学实验云平台,具有开放性、即时性、易接触性,能够方便快捷地为广大师生提供数学实验和科学计算服务。该平台将数学实验室软硬件计算资源组建成集群,可以进行大型科学计算,充分发挥实验室资源的潜在效能。用户通过浏览器即可向该平台提交计算任务获取计算结果,实现实验室资源的校内校际共享,有利于提高实验教学水平。因此,本研究为高校利用现有实验室构建云计算实验室及实现其资源共享做了有益尝试,并为数学实验室的未来发展拓展了道路,符合教育技术信息化的未来发展方向。

參考文献

[1]孙苏菁,白占兵.关于数学实验室建设的若干思考[J].科技视界,2013(11):41.

[2]宋绍云,师红.基于Matlab Web Server的数学实验室体系结构的建立[J].玉溪师范学院学报,2007(12):38-42.

[3]谢治州,罗晓宾,严忠权.基于MATLAB网络数学实验室的构建[J].黔南民族师范学院学报,2010(6):9-15.

[4]Sosinsky B. Cloud Computing Bible[M].北京:电子工业出版社,2013.

猜你喜欢
分布式计算数学实验云平台
基于云计算的移动学习平台设计与实现
云计算中MapReduce分布式并行处理框架的研究与搭建
高职院校开展基于云平台网络教学的探索与思考
企业云平台建设研究
互联网+背景下数学试验课程的探究式教学改革
面向异构分布式计算环境的并行任务调度优化方法