SaaS模式计算机实验平台构架设计与实现

2022-08-31 19:45卓仁前夏先玉钟涛郑俏妍
电脑知识与技术 2022年19期
关键词:低成本容器架构

卓仁前 夏先玉 钟涛 郑俏妍

摘要:计算机实验室在高校教学科研活动中发挥着重要作用,传统的计算机实验室存在建设成本高、软件部署难、管理效率低、教学过程无法监管等问题,VDI云桌面实验平台可以部分上解决上述问题,但其成本仍然很高,实验数据也无法收集。设计并实现了SaaS模式的计算机实验平台架构,充分发挥容器技术轻量、高效等特点,可以大幅降低服务器数量,简化实验操作,方便实验数据收集分析,在经费相对紧张的高校具有良好的应用前景。

关键词:SaaS;容器;计算机实验平台;架构;低成本

中图分类号:TP311      文献标识码:A

文章编号:1009-3044(2022)19-0070-04

1 引言

随着软件模拟仿真技术的发展,计算机实验室在高校教学科研活动中发挥着越来越重要的作用,当前高校计算机实验室概括起来主要有三种:一是传统的计算机实验室,由PC加局域网组成,技术简单,初次建设成本低,电费等运行成本高,硬件更新换代快,导致总体成本高[1],还有软件部署效率低、硬件损毁率高、无法集中管理等缺点;二是VDI云桌面实验室。基于KVM、vsphere、Openstack等虚拟化软件平台构建的IaaS私有云,本质是将计算从分散的PC机迁移到服务器,每个用户独占一台虚拟机,用户使用瘦客户机上的客户端软件与服务器上的虚拟机进行交互,瘦客户机性能需求低,不需定期更新换代,虚拟机使用模板批量复制,软件部署配置效率高,使用体验与PC机无异,除少数需要虚拟化软件的课程外,基本所有课程都能使用,缺点是每个虚拟机内都运行完整的客户操作系统,浪费了计算资源,物理层面的隔离造成虚拟机编排和数据收集的困难,远程桌面交互数据量大,对网络带宽要求高,为保证Windows虚拟机显示效果,还须购置服务器显卡等,进一步推高了硬件成本[2]。三是SaaS(软件即服务)实验平台,使用B/S架构提供即开即用的软件服务,用户通过浏览器操作,无须配置,操作简单,易于管理,服务器端基于轻量级的docker容器运行实验软件,避免了重复的客户操作系统消耗计算资源,浏览器与服务器使用HTTP协议交换实验软件数据,有效数据比例相比云桌面大幅提高,节约网络带宽,用户实验数据可收集到数据仓库、Git版本控制系统,方便后期统计分析[3-6]。研究了基于Online Judge(在线判题系统)的编程类实验教学模式[7-9],基于开源的课程管理系统Moodle及其VPL(Virtual Programming Lab)插件开展了在线编程实验教学实践,由于操作逻辑和用户界面不符合国人习惯,VPL编辑器功能简陋等原因,Moodle在国内没有得到广泛应用。技能培训网站如希冀、国信蓝桥、开课吧等建立了SaaS模式的实验平台,为计算机类的社会技能培训提供支撑,同时也为部分高校提供线上实验平台服务。

SaaS模式计算实验平台的优点是总体成本低、管理效率高、用户体验好、实验数据收集容易等,缺点是实验模式和使用习惯变化大,支持的课程不够全面,适合于学生整体素质稍差、建设经费不充裕的职业类院校。基于外购实验平台租用成本高和无法沉淀数据资产等考虑,高校更倾向于自主建设云计算实验平台。本文描述了一种SaaS模式的计算机实验平台架构,可降低建设成本,提高管理效率,支撑程序设计类、Linux系统运维和软件操作、数字逻辑电路设计等课程的实验教学需求,并具有良好的扩展性。

2 需求分析

以重庆某职业学院为例,计算机实验室承担的实验教学课程主要有以下几种:

1)C、C++、Python、Java、Scala、Html、Javascript等语言程序设计,运行集成开发环境IDE如Visual Studio、PyCharm、Eclipse、Hbuilder等,可分为基础程序设计和项目式程序设计(如Web编程);

2)服务器操作系统配置与管理,运行Windows Server、CentOS、Ubuntu Server等;

3)数据库基础课程,运行MySQL,MS SQLserver等软件;

4)计算机网络及网络安全类课程,运行网络设备模拟软件(如Cisco Packet Tracer、eNSP、GNS3)、数据抓包软件(wireshark等)和网络攻击靶机系统等;

5)服务器运维类课程,运行vsphere服务器虚拟化、大数据平台、IaaS云平台和容器云平台等软件;

6)计算机应用基础,运行Windows7操作系统和MS Office、WPS办公软件等;

7)图形图像设计类课程,运行平面设计软件、3D设计软件和音视频编辑软件,如 AutoCAD、Adobe Creative Suite、CATIA、Pro/E等;

8)单片机、嵌入式系统编程类课程,需要交叉编译代码并烧写固件;

9)其他使用Windows平台应用软件的课程。

SaaS云平台基于容器技术构建,目前只能运行Linux系统下的软件。1)~4)类课程的实验软件能在Linux系统上运行或者有替代品,可以迁移到SaaS云平台,5)类课程部分实验如大数据集群等可在容器中运行,其他实验需要虚拟化技术支持,不适合迁移到SaaS云平台,6)~9)类的课程实验软件只能在Windows系统上运行,或者需要与硬件开发平台互动,目前不适合迁移到SaaS云平台。基于此,设计实验平台主要是解决计算机类部分课程的实验需求,比如程序設计、Linux系统操作管理、数据库基础、计算机网络等类型的课程,同时要有良好的扩展性,以便后续支持更多类型的课程。

结合实验教学的业务流程和SaaS模式的核心意义,实验平台还要具备以下基本特性:

1)根据不同类型实验的特点,采用合理的实验后端系统,尽量减少计算资源的消耗,以支持更多用户同时使用。

2)系统主要功能是课程管理、实验管理和统计分析等。

3)系统用户有游客、教师、学生和系统管理员,游客可浏览、查找系统上的课程,教师建立课程和实验框架,学生在线完成实验,普通用户经过身份认证后成为教师用户,具有教师操作权限,系统管理员可对课程、人员、内容、设施等数据进行全面审核和管理。

4)教师可对学生实验数据进行查看和评分,并可从多个维度进行统计分析。

5)实验操作界面分为2个部分,左侧是理论提示窗口,右侧是实验操作窗口,方便用户遵照理论提示完成实验。

6)通过容器化的支持程序设计实验,通过容器云桌面支持Linux系统及软件操作、数据库等课程实验。

7)支持多步骤操作,每个步骤完成后提交评测,评测分为人工评测和系统评测,合格后进入下一步,用户源代码文件可以下载。

3 平台总体设计

根据课程对实验功能的需求不同,可分为基础程序设计、项目式程序设计和系统运维3类,基础程序设计类是指只有一个源代码文件的编程实验,后端使用在线判题系统Judge0执行代码;项目式程序设计类是指有多个源代码文件、需要IDE项目管理功能的编程实验,如Web编程等,后端使用webIDE软件code-server;系统运维类是指需要运行多个软件、进行系统配置或实验软件不能Web化运行的实验课程,如Linux操作系统管理、数据库基础等,后端使用基于xubuntu的系列容器镜像支撑,以云桌面的形式交付用户使用。Judge0[10]是一种开源的、可伸缩的在线代码执行系统,内置50多种计算机语言的编译、解释、执行工具,在沙盒中运行用户提交的代码,支持数千个用户同时实验。code-server[11]是开源的、Web化运行的VScode编程器,界面运行在浏览器中,代码保存、编译、执行都在到服务器容器中,具有完善的项目管理、版本控制、编辑器等功能和丰富的扩展生态,内置终端和图形化的git客户端,配合GitLab等版本控制系统可用于项目式编程,code-server没有账号系统和代码隔离设施,只能供单用户使用,需借助主系统的账号体系完成多租户功能。xubuntu[12]是轻量的图形界面Linux系统,具有界面友好、软件包丰富、用户基础广泛等特点,支持在容器中运行,通过安装不同的软件,可支持Linux操作系统、数据库基础等课程实验。3种实验镜像支持的课程见表1。

系统采用层次化架构,从上到下依次为表示层、业务层、持久化层和数据库层,表示层负责显示Web界面,分为注册用户、教师和系统管理员3个子系统界面;业务层负责控制逻辑,由课程管理、实训管理、人员管理、班级管理、账号管理、学生管理、统计分析等模块组成;持久化层由数据模型、业务模型和数据库操作层ThinkORM组成,3个业务模型(K8sclient、Judge0、Gitlab)分别封装了Kubernetes、Judge0和Gitlab的API,实现与相应业务集群的通信;数据库层负责数据库读写驱动,主数据库采用MySQL,Judge0集群内置一个Postgres数据库,用于保存用户会话。

容器云集群采用Kubernetes进行编排部署,运行实验容器、Harbor镜像仓库服务和Gitlab版本控制服务。Harbor是vmware公司开源的Docker镜像仓库,具有单一的入口、完善的用戶权限管理、搜索、日志等功能,具备企业级的稳定性,用于构建私有镜像仓库,保存Judge0、code-server、xubuntu等实验镜像,集群中实验容器启动时如果本地没有相应镜像,将自动到Harbor仓库中拉取。Gitlab版本控制服务主要配合code-server容器和评测功能工作,用于保存实验题目框架和学生提交的实验结果,code-server实验容器启动后,触发git客户端的pull操作,根据环境变量中保存的实验题目参数,从Gitlab服务下载相应的题目框架,用户提交实验数据时,触发git客户端的add、commit和push系列操作,将实验数据提交Gitlab服务保存。系统架构如图1所示。

Web服务器有3个功能:1)管理人员、账号、课程、实训、统计等信息,将数据更新到主数据库;2)通过kubernets API创建、管理实验容器code-server和xubuntu;3)通过kube-proxy与集群内的Judge0服务和Gitlab服务通信。用户实验操作窗口使用iframe实现,直接向实验容器请求服务,为了避免实验容器所在的服务器IP地址和端口对外暴露造成安全隐患,采用kube-proxy组件进行反向代理,将用户访问请求转发到集群内service,service采用虚拟的ClusterIP,不会暴露服务器的真实IP,信息流向如图2所示。

4 系统实现

4.1 平台开发技术

基于PHP技术和ThinkPHP框架构建多租户框架的核心系统,ThinkPHP是国内基于开源协议发布的轻量级PHP开发框架,支持MVC(即:Model-View-Contoller,数据层、表现层、业务层)和MVVM(即:Model-View-ViewModel,数据层、表现层、视图数据层)架构的软件开发,具有功能完善、快速、简单、生态丰富等特点,适用于快速构建中小型Web系统。

按照MVC架构分层的思想,ThinkPHP中数据库模型Model对应每个数据库表,对应的业务逻辑都封装在数据表的增、删、改、查操作中,由于实训管理逻辑比较复杂,分为业务模型和数据模型2层,业务模型封装Judge0、K8S和Gitlab的API接口,数据模型负责主数据库操作;控制器Controller用于接受用户请求,并调用模型的方法来完成相应逻辑处理。视图View负责前端界面实现,实验操作界面如图3~图5所示。

4.2 系统性能测试

Judge0用于处理基础程序设计实验,其服务集群由1个master、1个或多个workers、1个redis消息队列和1个postgres数据库组成,master服务接受用户请求并放入消息队列,workers服务轮询消息队列,取出请求并编译执行,执行结果更新到postgres数据库中,服务集群使用Kubernets或docker-compose编排。Judge0是CPU密集型程序,性能与CPU核心数量和运行频率高度相关,与内存容量的关系不大,官方建议workers服务数量不超过CPU核心数的2倍。本文以1台vmware虚拟机(6核CPU、16G内存)为例进行测试,运行Python冒泡排序程序,200个并发,共提交2000个请求,workers服务的数量与运行性能的关系如图6所示。

结果表明,没有出现系统阻塞、请求溢出等情况,完成2000个请求耗时10分钟左右,为避免用户等待时间过长,本文以5分钟为限计算,5分钟内集群可处理完大约1000个请求,随着worker服务数量的增加,完成的请求数有所增加,但master服务的处理能力呈下降趋势。因此,workers服务数量设置为CPU核心数-1(此例中为5)可以获得更好的综合性能。因此,1台服务器运行Judge0可以支撑上千名用户同时实验,效率相比传统实验模式具有极大优势。

1个code-server容器忙时占用内存约250MB,运行1个xubuntu容器(未运行其他实验软件)占用内存约150MB,相比而言,VDI实验平台模式下,运行ubuntu+vscode的虚拟机需要2GB内存[13],运行xubuntu系统的虚拟机需要内存2GB[14]。表2列举了两种云平台运行相同功能实验软件可支撑的用户数量对比(按照服务器32GB内存,SaaS方案物理内存使用量不超过80%,操作系统和其他程序占用1GB内存估算),由此可见,SaaS模式实验平台使用相同服务器能够支撑约10倍于VDI实验平台的用户数量。

5 结束语

由于Windows操作系统不能在Linux容器中运行,该实验平台架构支持的课程实验数量不如VDI云桌面实验平台,解决办法是使用Openstack替换Kubernets,修改计算组件nova和镜像组件Glance的配置文件,增加对Docker容器的支持,在集群内同时运行容器与Windows虚拟机。

随着云计算技术不断发展普及,高校计算机实验室逐渐向云计算、智能化方向发展,以更好地服务于教学科研工作。本文分析了高校计算机实验室建设的现状和需求,设计实现了一种基于容器技术的SaaS模式计算机实验平台架构,在成本和用户体验上具有较大优势,可以支撑计算机类和电子类专业部分课程的实验,相信在高校具有良好的应用前景。

参考文献:

[1] 何晶,喻飞,李仁发,等.虚拟实验室中实验容器的建模[J].系统仿真学报,2005,17(1):79-82.

[2] 闫格.基于云计算架构的高校实验室设计与实施[J].漳州师范学院学报(自然科学版),2011,24(3):25-29.

[3] 张丽,尹红征,冯志慧.OJ平台在计算机专业教学中的应用[J].电脑知识与技术(学术版),2020(5):184-185.

[4] 沈涵飞.在线评测系统在高职程序设计实践教学中的应用[J].无线互联科技,2016(23):79-80.

[5] 黄晓华,沈健,常晋义,等.基于Online Judge与HTML批注技术的实验教学平台设计[J].計算机与现代化,2014(11):117-121.

[6] 何移.基于Online Judge的算法与编程实训平台建设[J].产业与科技论坛,2016,15(12):64-65.

[7] 刘钦波.基于Moodle平台的在线编程实验室的建设[J].中国信息技术教育,2019(S3):125-127.

[8] 孙丹鹏.基于Moodle环境的在线编程与测评系统研究[J].信息记录材料,2018,19(10):202-203.

[9] 张占义.基于Moodle环境的在线编程和测评[J].信息与电脑,2019(2):120-121.

[10] Judge0 CE-API Docs[EB/OL].[2021-10-20].https://ce.judge0.com/#header-about.

[11] CODER.Home-code-server v4.2.0 docs(coder.com)[EB/OL].[2021-10-20].https://coder.com/docs/code-server/latest.

[12] CANONICAL LTD.Feature Tour ? Xubuntu[EB/OL].[2021-10-20].https://xubuntu.org/tour/.

[13] MICROSOFT CO.LTD.Requirements for Visual Studio Code[EB/OL].[2021-10-20].https://code.visualstudio.com/Docs/supporting/requirements.

[14] CANONICAL LTD.System Requirements ? Xubuntu[EB/OL].[2021-10-20].https://xubuntu.org/requirements/.

收稿日期:2022-03-11

基金项目:重庆建筑科技职业学院科研项目《基于云计算技术的在线编程虚拟实训室建设研究——以 Python 语言为例》(项目编号:2021007)

作者简介:卓仁前(1982—),男,重庆人,讲师,硕士,研究方向为计算机技术应用;夏先玉(1982—),女,重庆人,副教授,硕士,研究方向为物联网信息技术及其职业教育研究;钟涛(1978—),男,重庆人,工程师,硕士,主要研究方向为计算机技术应用;郑俏妍(1983—),女,海南海口人,副教授,学士,研究方向计算机技术应用。

猜你喜欢
低成本容器架构
基于FPGA的RNN硬件加速架构
Different Containers不同的容器
功能架构在电子电气架构开发中的应用和实践
难以置信的事情
LSN DCI EVPN VxLAN组网架构研究及实现
一种基于FPGA+ARM架构的μPMU实现