卓仁前 夏先玉 鐘濤 鄭俏妍



摘要:計算機實驗室在高校教學科研活動中發揮著重要作用,傳統的計算機實驗室存在建設成本高、軟件部署難、管理效率低、教學過程無法監管等問題,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—),女,海南海口人,副教授,學士,研究方向計算機技術應用。