2024年3月31日发(作者:)
第 22卷 第 8期
2023年 8月
软件导刊
Software Guide
Vol. 22 No. 8
Aug. 2023
基于微服务架构的在线评判系统设计与实现
李西明,梁志才,刘龙浩,祝胜林
(华南农业大学 数学与信息学院,广东 广州 510642)
摘要: 现有在线评判系统用于程序设计课程实践教学存在学生学习投入低、系统考核过程单一且缺乏动态扩缩性
等问题。由此对现有的在线评判系统进行重新设计与实现,采用开卷训练与闭卷测试相结合的综合评价模式,应用
微服务和Docker技术对系统进行重新架构。根据压力测试分析可知,新系统能够应对高并发情形,综合评价模式能
够提高学生的学习投入,并实现系统设计目标。
关键词: 程序设计;在线评判系统;闭卷测试;弹性微服务;Docker
DOI:10.11907/rjdk.221973
中图分类号:TP311.52 文献标识码: A
开放科学(资源服务)标识码(OSID):
文章编号:1672-7800(2023)008-0144-07
Design and Implementation of Online Evaluation System Based on
Micro-Service Architecture
LI Ximing, LIANG Zhicai, LIU Longhao, ZHU Shenglin
(College of Mathematics and Informatics, South China Agricultural University, Guangzhou 510642, China)
Abstract: In view of the problems that the existing online evaluation system is used in the practical teaching of programming courses, such as
low students' learning investment, single examination process and lack of dynamic expansion and contraction. Therefore, the existing online
evaluation system is redesigned and implemented, and the comprehensive evaluation mode combining open-book training with closed-book
reached the system design goal.
testing is adopted, and the micro-service and Docker technology are applied to restructure the system. According to the analysis of stress test,
the new system can cope with high concurrency, and the comprehensive evaluation mode can improve students' learning input, which has
Key Words: programming; online judge system; closed-book testing; micro-service architecture; Docker
0 引言
在线评判或评测系统(Online Judge,OJ)依据软件工程
OJ系统在程序设计与算法竞赛、竞赛培训和课程实践教学
等方面得到了较为广泛的应用。2016年前后,计算机相关
专业的求职面试或研究生复试也开始使用OJ系统,确保整
个过程及时、公开和公正。国内已有部分高校提出使用在
①将信息学奥林匹克竞赛或ACM竞赛所采用的在线评测
收稿日期:2022-08-18
基金项目:广州市科技计划重点实验室建设项目(2)
系统应用于计算机类课程教学;②以课程训练为主教学类
的在线评测系统;③面向竞赛或基于慕课平台应用的在线
评测系统;④联合机考和面试的研究生招生复试与考评系
统。后疫情时代,在线教育与课堂教学相结合的混合教学
线上远程实验教学、全过程评价和在线考核方面将有更广
泛的应用
[3]
。
华南农业大学自2009年起上线在线评判系统,在专业
竞赛网站和商业化在线评判系统功能基础上,扩展了实验
验教学和竞赛训练需要,而且减轻了教师的全过程管理和
[2]
“新常态”。在线评测系统在
中的黑盒测试实现自动化线上程序评判。自2000年以来,
模式将可能成为高校教学的
线评判系统辅助计算机类课程教学,主要分为以下4类
[1]
:
教学管理和评价功能。在线评判系统不仅满足了正常的实
作者简介:李西明(1974-),男,博士,华南农业大学数学与信息学院副教授、硕士生导师,研究方向为计算机应用、软件架构;梁志才
(1991-),男,华南农业大学数学与信息学院硕士研究生,研究方向为计算机应用、计算机视觉;刘龙浩(2000-),男,华南农
业大学数学与信息学院学生,研究方向为软件工程;祝胜林(1969-),男,博士,华南农业大学数学与信息学院副教授、硕士
生导师,研究方向为计算机应用、信息安全。本文通讯作者:祝胜林。
Copyright©博看网. All Rights Reserved.
第 8 期
李西明,梁志才,刘龙浩,等:基于微服务架构的在线评判系统设计与实现
·145·
评价中数据登记与处理的负担。但是其也存在一些问题:
①实验过程考核单一,最方便的是提交题目数,即通过的题
而不顾题目对错
[4]
(3)考试。仅有1次,满分25分。考试时间安排在最后
一次实验课。考试题型有两种:客观题10小题,1分/小题,
共10分;编程题1小题,15分/小题,共15分,题目不是训练
的原题,而是来自不公开的考试题库,从5道题中随机抽取
1道,但可公开复习范围。
该评价模式综合了开卷训练模式和闭卷测试模式的评
ρ=
∑
E
+T
i=1
i
5
目数,未通过的不计算在内,以避免学生只顾提交题目数量
;②传统的单体应用架构或面向服务架
构的部署缺乏动态扩缩性。
为此,本文对现有的在线评判系统进行重新设计与实
现,采用开卷训练与闭卷测试相结合的综合评价模式,应用
微服务和Docker技术对系统进行重新架构。
价方法,简称综合评价模式。实验效果得分:
1 问题分析与对策
1.1 过程考核单一
其中,ρ为实验效果得分,满分100,
E
i
为第i次小测的得
分,T为考试得分。
1.2 缺乏动态扩缩性
(3)
每个实验内容分为课堂练习和课下练习。课堂练习包
括2~3道编程题,一般要求一次实验课完成;课下练习包括
另外2~3道编程题,由学生课下自行完成。但实验成绩表
只有提交题数,并没有区分课堂和课下题数,也没有限时要
求。一般而言,有两种计算实验效果分的方法:
(1)总提交题数。
在线评测系统传统部署可以采用单体应用架构或面向
服务架构:
(1)单体应用架构。在线评测系统按照模块化设计,开
发完成后被打包并部署为一个具体的应用。虽然容易开
发、调试和部署,但随着用户人数增加,一台服务器难以满
足系统负载。通过增加服务器进行水平扩展,能够解决问
题,但增加了较大成本投入;不需要扩展的服务也被扩展,
M
ρ=
*100%
(1)
浪费了资源;用户人数减少,也不能动态缩减。
N
(2)面向服务架构(Service-Oriented Architecture,
其中,满分100,M为截至时间前已
ρ
为实验效果得分,
SOA)。将在线评测系统中相近的功能聚合在一起,以服务
提交且正确的题目数,N为在线评判系统要求提交的总
的形式向外提供。按照功能细分为不同的子系统,各子系
题数。
统依赖服务中间件调用所需服务
[5]
。虽然SOA架构降低了
(2)每实验提交题数。
模块间的耦合度,提高了重用性和开发效率,但多数情况
M
i
k
ρ=
∑
*C
i
(2)
i=1
N
下,相互独立的服务仍然会部署在同一运行环境中,随着业
i
其中,满分100,
ρ
为实验效果得分,
M
i
为第i次实验已
务功能增多,服务会变得很复杂。因此,SOA架构无法支撑
数据爆发式增长和业务的快速迭代
[6]
。
智能化程序设计管理系统不仅面向本校师生,还面向
其他高校的师生,有些学期人数很多,有些学期人数较少,
因而用户增量预期较大。为了应对这一问题,设计和实现
基于微服务架构的在线评判系统,并成功将其部署在云平
台上。微服务架构是SOA的一种变体
[7]
,每一个微服务都
有自己的业务逻辑和适配器,完成某个特定功能,是一个独
立的应用,可独立承担对外服务的职责,具备独立的运行进
程,可独立部署
[8]
。微服务具有低成本、弹性伸缩等优
势
[9]
。微服务架构是对软件系统进行整体和全面的考虑,
包括开发、测试和部署等,可带来如下好处:①体积小、复杂
度低、开发效率高;②单个微服务发生变更时,无需编译和
部署整个应用,发布更高效;③技术选型灵活且多样化;④
比较适合未来有一定扩展复杂度,且有很大用户增量预期
的应用。
提交且正确的题目数,
N
i
为第i次实验应提交题目数,
C
i
为
第i次实验满分,
k
为实验数。
由于题目公开,已提交学生可保留源代码。学习不认
真的学生,为了提高自己的实验效果得分,存在用别人的源
代码进行提交或截止日期前集中提交的现象。混合教学模
式下在线学习和课堂学习在行为投入、认知投入上存在一
致性,学生对课程的挫败感、焦虑感等消极情感往往与表层
学习相伴而生
[2]
。因此,学生投入低必定会影响其深层学
习效果。
为了督促学生增加实验课程的学习投入,促使其进入
深层学习,将实验内容分为训练、每次实验小测和考试3部
分,均在线完成。
(1)训练。采用开卷训练模式,题目是公开,可以反复
提交,可在实验课上完成或课余时间完成。按提交题目数
评价,当实验要求提交的题目全部提交后才可获得小测
资格。
(2)小测。小测次数5次,每次满分15分,总分为75分。
时间一般安排在下一次实验开始进行。题目来自于不公开
的小测题库,从5道题中随机抽取一道,内容与本实验训练
题目的知识点相关,但不是训练的原题。限时15分钟,限制
提交次数为3次,多次提交会扣分。
系统设计是系统开发的重要部分,着重介绍在线评判系
统的角色设计、模块设计、数据库设计和微服务架构的内容。
根据系统角色和模块的划分对数据库进行详细设计。
Copyright©博看网. All Rights Reserved.
2 系统设计
·146·
软件导刊
2023 年
智能化程序设计管理系统
2.1 角色
系统设计了3种角色,每种角色的功能包括如下:
(1)管理员。分为超级管理员和校级管理员,超级管理
员可以创建学校和指定校级管理员,拥有后台管理的各项
功能。校级管理员具有审核教师申请、管理题目、实验和考
试等方面的功能。
(2)教师。负责创建班级、导入所教班级的学生名单;
获得授权可以创建题目、实验、试卷或考试。
(3)学生。登录系统认证成功,可以查看实验和提交实
验、参加考试、查看完成情况或成绩,也可以查看系统公开
题目的列表。
2.2 模块
题
目
列
表
提
交
代
码
评
判
结
果
考
试
成
绩
实
验
成
绩
提
交
代
码
评
判
结
果
题
目
描
述
测
试
用
例
选
择
实
验
历
史
记
录
查
看
成
绩
班
级
管
理
实验管理
授课班级
上机考试题库管理
选
择
题
判
断
题
编
程
题
选
择
题
编
程
题
判
断
题
题
库
列
表
Fig. 1 System modules
图1 系统模块
为了便于系统开发,将在线评判系统划分为不同的子
模块。如图1所示,系统包括实验管理、授课班级、上机考
试、题库管理模块。实验管理模块包括选择实验和历史记
录模块。授课班级包括查看成绩和班级管理模块。上机考
试包括选择题、判断题和编程题模块。题库管理包括选择
题、编程题、判断题和题库列表模块。
2.3 数据库
2.4 微服务架构
整个系统运行在Virtual Private Cloud(VPC)上,除互联
网(Internet)、防火墙(firewall)、数据库(MySQL)和云文件存
储(Cloud File Storage)外,其他都是微服务,每个微服务都构
成各自的集群,微服务之间可以自由通信。系统微服务架
构如图3所示。
各部件及其作用如下:
(1)Nginx。Nginx实现动静分离和反向代理,并解决跨
域无法访问的问题
[10]
。
Message Queuing Protocol)的默认通信中间件,应用程序对
(2)RocketMQ。RocketMQ是Spring AMQP(Advanced
根据上述分析,对数据库进行详细设计。系统涉及的
实体有学校、班级、用户、题目、考试和实验等,它们的实体
关系(E-R)图,如图2所示。每个用户拥有一个角色,其中
管理员角色可以管理班级信息、学生信息、实验和题库,教
师角色可以管理上机考试信息,学生用户则可以做实验题
目和参加上机考试。
用户基本
信息
1
关联
1
班级名称班级id用户
用户名和
密码
m
应用程序的异步通信。其中,NameServer是微服务注册中
心,拥有完整的路由信息,支持Broker的动态注册和发现,
角色
1
拥有
语言
方式
1
源代码
对应
1
1
结果
n
班级
1
包含
1
n
包含
学校名称
1
学校
学校id
m
关联
1
n
1
提交
1
1
解决方案
n
1
对应
1
测试数据
结果
提交
答卷ID
1
答卷
答卷内容
n
对应
得分及通
过情况
1
关联
获得
练习
n
1
对应
实验结果
m
对应
1
基本信息
n
编程题
m
m
关联
n
标签
n
关联
分数
包含
m
实验
包含
nm
n
考试
n
包含
1
试卷包含
m
选择题/
判断题
考试id考试名称
考试时间试卷id名称建议时间
Fig. 2 System E-R diagram
图2 系统E-R图
Copyright©博看网. All Rights Reserved.
第 8 期
李西明,梁志才,刘龙浩,等:基于微服务架构的在线评判系统设计与实现
·147·
VPC
Internet
MySQL
同步
MySQL
4
CFS
快照
CFS
3
只读
挂载
Rocket MQ
防火墙
挂载
写
NameServer
Clusters
消费
同步发送
评判
管理测试用例
缓存
8
SpringBoot Application
注册
Producer
订阅
Consumer
Broker
Clusters
2
挂载
Nginx
1
Other Module
Tomcat
JudgeServer
6
Redis
5
Testcase
7
Fig. 3 System micro-services architecture
图3 系统微服务架构
维护Topic和Broker之间的关系,以及与其他NameServer之
间的相互通信。Broker负责将消息队列中的评判消息主动
推送到消费者
[11]
。
(3)CFS。CFS(Cloud File Storage,云文件存储)用来存
储所有微服务的配置文件和测试用例文件,最终挂载到相
应的微服务容器上,这样有利于解决文件冗余和不一致性
的问题。
(4)MySQL。MySQL提供数据存储服务,采用读写分离
的主从结构,主MySQL负责写,从MySQL负责读(查询),可
以较好地提高系统响应速度
[12]
。
(5)Redis。Redis用于缓存Docker容器目录。Redis完
全基于内存,具有良好的并行读写性能
[13]
,因此使用Redis
缓存数据,从缓存中恢复判题所需的环境,无需再次下载所
需组件进行构建,从而提高判题效率。
(6)JudgeServer。JudgeServer微服务提供API供后台管
理微服务调用,完成评判用户的程序并将评判结果返回。
(7)Testcase。Testcase微服务面向管理员,实现题目
管理。
SpringBoot框架
[14]
实现,属于后台管理微服务,是系统的中
心枢纽。Producer注册到NameServer上获取Broker的路由
信息,Consumer则从Broker上订阅消息。当有消息时,Bro⁃
ker会将它推送到Consumer,则Consumer调用评判微服务进
行评判,然后将结果返回给Other Modules。
(8)SpringBoot Application。SpringBoot Application采用
3.2 系统部署
3.2.1 Docker容器
包他们的应用及依赖包并将其置于一个可移植的容器中,
之后发布到任何流行的Linux或Windows操作系统的机器
上,也可以实现虚拟化。容器完全使用沙箱机制,相互之间
不会有任何接口
[15]
。容器技术是支撑现代云原生应用的基
石,在云服务器上实施容器集群服务是业界的新兴趋势
[16]
。
微服务因维护和部署门槛高,越来越依赖容器技术,Docker
技术已经成为当前部署微服务应用的首选。
Java语言的Docker镜像文件制作步骤如下:
Docker是一个开源的应用容器引擎,让开发者可以打
jdk:8-jdk-slim;②指定镜像的维护者:LABEL maintainer=
(1)编写Dockerfile文件。①指定基础镜像:FROM open⁃
scau;③将源目录的文件复制到容器的默认目录:COPY tar⁃
get/*jar /;④指定容器启动时执行镜像的入口命
令:ENTRYPOINT [“java”,”-jar”“ /”]。
(2)构建指定标签的镜像文件。在安装有Docker的系
统上,执行如下命令将在当前目录构建标签为backend:v1
的镜像文件:docker build -t backend:v1。
(3)标记镜像文件。执行如下命令将其归入腾讯云镜
像仓库:docker tag backend:v1 /oj_hub/
backend:v1。
(4)镜像上传。执行docker push /
oj_hub/backend:v1命令将镜像上传到腾讯云的镜像仓库。
3.2.2 微服务部署
运行。具体步骤如下:
3 实现与部署
3.1 在线评判流程实现
微服务架构部署需要按照一定顺序才能确保系统正常
在线评判是整个系统的核心功能,流程比较复杂,以时
序图形式表示,如图4所示。其中,ID(提交编号)是由服务
端根据本次提交代码、提交用户、时间和题号保存到数据库
而生成。提交用户根据返回的ID查询评判结果。
proxy_passhttp://backend:8080/;为反向代理地址,并将conf.
d保存到CFS;②将前端的静态页面和conf.d分别挂载到
Docker容器的/usr/share/nginx/html和/etc/nginx/目录下;③定
义服务名为nginx,使用端口8188;④启动Nginx。
(1)Nginx。①修改Nginx的配置文件conf.d,设置
(2)RocketMQ。首先部署NameServer:①定义其服务名
Copyright©博看网. All Rights Reserved.
·148·
软件导刊
2023 年
用户编程题面
1.提交代码
2.发送评判请求
3.缓存代码
4.保存代码
5.调用生产者
7.返回评判ID
消费者线程监听消息
6.生产者线程发送评判消息
后台管理微服务
RedisMySQLRocketMQ
评判微服务
8.若消息队列有消息
9.推送评判消息
10.获取缓存的代码
11.返回代码
14.缓存评判结果
15.保存评判结果
12.发送评判请求
13.返回评判结果
循环获取评判结果
result==null&&time<30s
16.获取评判结果
19.返回评判结果
20.返回评判结果
17.获取评判结果
18.返回评判结果
Fig. 4 Online judging sequence diagram
图4 在线评判时序图
为mq-namesrv;②设置端口9876;③启动NameServer。然后
部署Broker,设置两个并行工作的主Broker和两个完成数据
同步的从Broker,修改配置文件及启动步骤:①
添加NameServer的地址namesrvAddr=mq-namesrv:9876;②
设置Broker的角色:主角色brokerRole= ASYNC_MASTER,
从角色brokerRole=ASYNC_SLAVE;③定义Broker的服务
名:主角色服务名broker-master:10911,从角色服务名bro⁃
ker-slave:10921;④挂载配置文件;⑤设置启动
命令为/home/rocketmq/rocketmq-4.5.0/bin/mqbroker;⑥设置
启动参数为:-c /home/rocketmq/rocketmq-4.5.0/conf/broker.
conf;⑦启动主Broker和从Broker后,创建评判消息的主题
为”Judge”。
6379;②启动Redis。
端和移动端的浏览器http://120.79.57.23:8188登录系统。
以系统管理员身份登录,系统后台部分界面如图5所示(整
图扫OSID码可见)。
Fig. 5 System background interface
图5 系统后台界面
(3)Redis。①定义服务名为redis,并设置端口映射为
4.2 功能测试
80;②挂载CFS的测试用例文件;③启动Tesetcase。
(4)Testcase。①定义服务名为testcase,使用默认端口
(5)JudgeServer。①定义服务名为JudgeServer,使用默认
(6)SpringBoot Application。①将(2)—(5)中部署的微
针对系统的在线评判功能,设计了部分测试用例,具体
如表1所示。“预期输出”有3种状态,其中“通过”表示源代
码编译正常且通过了所有的测试用例;“编译出错”表示源
代码存在语法错误等问题;“错误”表示源代码通过了编译
但其输出与正确的答案不相符。
4.3 性能测试
端口80;②挂载CFS的测试用例文件;③启动JudgeServer。
服务的服务名和相关端口写入配置文件;②定义服务名为
进行扩容,低于60%时进行缩容;④启动后台管理微服务。
backend,并设置端口为8080;③设置CPU使用率超过60%
使用Apache Jmeter对系统进行性能测试。
(1)压力测试。测试500并发量/s的统计数据的屏幕截
图如图6所示,其中执行失败为0个,错误率为0.00%;高达
99%的请求响应时长(Response Times)在898.84 ms以内,完
全符合评判要求;吞吐量(Throughput)为209.82事务/秒,可
以应对高并发情形。
(2)动态扩容。根据单台服务器不扩容和多台服务器
4 运行与测试
4.1 系统运行
系统已经实现并成功部署在腾讯云,用户可以通过PC
Copyright©博看网. All Rights Reserved.
第 8 期
李西明,梁志才,刘龙浩,等:基于微服务架构的在线评判系统设计与实现
·149·
测试用例编号
oj-001
测试标题
系统在线评判功能测试
重要级别
高
预置条件
1.登录系统
Table 1 Test case
表1 测试用例
输入
源代码
1.输入正确的源代码
2.点击提交按钮
3.等待评判结果
源代码
2.点击提交按钮
3.等待评判结果
源代码
2.点击提交按钮
3.等待评判结果
操作步骤预期输出
通过
测试结果
正常
2.选择编程题
1.登录系统
oj-002
系统在线评判功能测试高
1.输入语法错误的源代码
2.选择编程题
1.登录系统
编译出错正常
oj-003
系统在线评判功能测试高
1.输入语法正确的但答案不正确的源代码
2.选择编程题
错误正常
Fig. 6 Statistics testing 500 concurrency per second
图6 测试500并发量/s统计数据
动态扩容的原则,按照100~500并发量/s请求进行测试,依
据完成并发量的评判总用时进行验证,实际测试数据如图
7所示。图7的纵坐标为评判的总用时,包括前端发送评判
务的请求时间和评判结束后写入数据库的时间3部分,单
位为秒;图7的横坐标为每秒的并发量;图例1*—4*代表运
500
行评判服务器台数。可以看出,单台服务器不扩容,评判
的总用时线性增大,会造成响应超时而无效;当多台服务
器动态扩容时,评判的总用时则会减少,譬如:当扩容到4
台服务器时,处理500并发量的评判请求,总用时是131 s,
平均0.2 s就可以处理一个评判请求,完全能及时响应
请求。
Table 2 Course comparison data
表2 课程对比数据
比较
班级(个)
学生(人)
实验(个)
题目(个)
小测(次)
考试(次)
实验得分
2021
春季
353
30
1*
2*
0
7
12
2022
春季
342
30
1**
2**
5
7
1题/次
12
说明
请求的时间、后台微服务接受评判请求后发送到评判微服
400
1*
2*
3*
4*
评
判
总
300
用
时
(s)
200
100
1*:5道编程题;1**:10道客观题和1道编程题
2*:公式2+考试*10%;2**: 公式3
0
100
每s的并发量(次)
分值是10分,而在2022春季考试的编程题中不采用题目C,
此10分由题目B1和B2的分值构成,且B1和B2都不是原
题,因此B1+B2与C等价。计算表3中B1+B2,将它们的和
与C对应,然后画成柱状图,如图8所示。
Table 3 Scores of programming questions in the final exam
表3 期末考试编程题得分
题目
A1
A2
B1
B2
总分
C
2021春季2022春季
3.45
3.63
5.78
4.82
4.91
3.42
3.37
16.52
5分,实验做过的原题
5分,实验做过的原题
说明
Fig. 7 Line chart of dynamic scaling performance
图7 动态扩容性能折线图
5 系统应用
为了分析该系统应用效果,现选取2021年春季和2022
年春季Java语言程序设计课程进行比较,课程对比数据表
如表2所示。
说明:因为考试题目有5道,比较多且都是未做过的新题,
大部分学生得分不高,所以2*中考试部分的占比定为10%。
对期末考试的编程题得分进行分析,得分情况如表3所
示。其中,题目A1和A2是学生平时训练过的原题,两份试
5分,训练过的知识点,不是原题
5分,综合训练过的多个知识点,不是原题
12.86
10分,综合训练过的多个知识点,不是原题
卷都有相类似的题目。题目C是2021春季考试的编程题,
③知识点掌握较好,即使非原题,得分也有一定提高,而且
Copyright©博看网. All Rights Reserved.
得分都有提高;②做过的题目复现效果不错,语法错误少;
2022年春季情况好于2021年春季情况:①每个小题的
·150·
软件导刊
2023 年
1345-1351.
20
18
16
14
12
10
8
6
4
2
0
A1A2C或B1+B2
得分平均
2021春季
2022春季
李永刚,李祥明,吴云,等.面向服务的测量船测控服务总线系统[J].计
算机工程与科学,2020,42(8):1345-1351.
[6] ZHANG M, LIU W, GUO Q. Design and implementation of video manage⁃
ment system based on cloud native[J].Software Guide,2022,21(5):
141-144.
张咪,刘文,郭庆.基于云原生的视频管理系统设计与实现[J].软件导
刊,2022,21(5):141-144.
[7] CUI C, ZHOU W. Construction design of the safety management system
based on microservice architecture[J].Software Guide,2021,20(2):
159-164.
崔灿,周伟.基于微服务的工地安全管理系统架构设计[J].软件导刊,
[8] SHI L P, ZHU Z, ZHOU J S, et al. Load balancing mechanism for mi⁃
croservice architecture in cloud-based systems[J].Computer Engineering,
2021,47(9):44-50.
施凌鹏,朱征,周俊松,等.面向微服务架构的云系统负载均衡机制[J].
计算机工程,2021,47(9):44-50.
[9] DAI L C, WANG truction and optimization of online lawyer web⁃
site under microservice architecture[J].Software Guide,2021,20(9):
144-149.
代立晨,王晨.微服务架构下的在线律师网站重构与优化[J].软件导
2021,20(2):159-164.
Fig. 8 Score comparison of programming questions in the final exam
图8 期末考试编程题得分比较
编程思路多样,死记硬背、生搬硬套的少了。因此,学生通
过训练获得小测资格,增加了学习投入。
6 结语
本文应用微服务和Docker技术对现有在线评判系统进
行重新设计与实现,通过增加小测和考试的过程管理环节
提高了学生对编写程序的学习投入,通过微服务部署在云
平台实现了动态扩缩。今后需在如下方面作进一步研究:
①通过分析系统使用过程中CPU、RAM、外存配额、Docker
容器参数等有关数据,设计一个更动态的扩缩策略;②通过
学生实验投入度评价模型;③通过加入查重算法,以判断学
生是否在考试过程中直接抄袭其他用户的程序题源码。
参考文献:
[1] WAN H, WU D, LIU S R, et al. Practice of online program evaluation sys⁃
tem for remote teaching and testing in fighting against epidemic[J]. Soft⁃
ware Guide,2021,20(12):230-234.
软件导刊,2021,20(12):230-234.
[2] LIU L, WANG Q. Research on the characteristics and influencing factors of
万海,吴迪,刘思然,等.疫情下在线评测系统远程教学与机考实践[J].
刊,2021,20(9):144-149.
[10] JIAO Y, LI M, WANG H, et al. Optimization of online shopping system
(6):183-187.
based on distributed high availability cluster[J].Software Guide,2022,21
焦宇,李民,王欢,等.基于分布式高可用集群的网购系统优化[J].软
件导刊,2022,21(6):183-187.
[11] YUAN X C, FU G, BI J Z, et on data caching technology of dis⁃
tributed dataflow system[J].Big Data Research,2020,6(3): 101-116.
述[J].大数据,2020,6(3):101-116.
[12] LIAO L F, ZHANG X P. Design and implementation of intelligent visual⁃
ization command system based on iOS[J].Computer Engineering and De⁃
sign,2020,41(11):3269-3274.
廖列法,张幸平.基于iOS的智能可视化指挥系统设计与实现[J].计算
机工程与设计,2020,41(11):3269-3274.
[13] LIN P R, CHEN Z R, SHI X Q. Highly concurrent multi-threaded com⁃
petitive shared resource architecture[J].Computer Engineering and De⁃
sign,2020,41(11):3282-3288.
林平荣,陈泽荣,施晓权.高并发多线程竞争共享资源架构[J].计算机
袁旭初,付国,毕继泽,等.分布式数据流计算系统的数据缓存技术综
对学生实验全过程数据进行分析,构建完善的和可视化的
工程与设计,2020,41(11):3282-3288.
students’ learning engagement in blended teaching model[J].Technology in
[14] HUANG C, BAI L -architecture application paralleling and flow
Modern Education,2021,31(11):80-86.
switching scheme based on Nginx-F5[J].Computer Systems & Applica⁃
刘玲,汪琼.混合教学模式下学生学习投入的特点及影响因素研究[J].
tions,2022,31(3):351-355.
现代教育技术,2021,31(11):80-86.
黄晨,柏路平.基于Nginx-F5的双架构应用并行及流量切换方案[J].
计算机系统应用,2022,31(3):351-355.
line testing during the epidemic[J].Computer Education,2020,18(10):
[15] LUO C, CUI Y, LIN Y S. Container migration method based on bandwidth
8-11.
prediction and adaptive compression[J].Computer Engineering, 2022,48
杨铮,赵毅,蔡新军,等.疫情期间远程在线考试的实践与思考[J].计算
(5):200-207.
机教育,2020,18(10):8-11.
罗成,崔勇,林予松.基于带宽预测与自适应压缩的容器迁移方法[J].
计算机工程,2022,48(5):200-207.
[3] YANG Z, ZHAO Y, CAI X J, et al. Practice and reflections on remote on⁃
[4] LIU X, LI B T, TANG Y, et -based introduction to algorithm
2021,19(1):163-167.
course assessment and achievement evaluation[J].Computer Education,
[16] XIE D M, HUANG L, HUANG J J, et al. Design and implementation of
柳欣,李保田,唐艳,等.基于OBE的算法导论课程考核与达成度评价
[J].计算机教育,2021,19(1):163-167.
[5] LI Y G, LI X M, WU Y, et al. A service-oriented TT&C service bus sys⁃
tem of survey ship[J].Computer Engineering and Science,2020,42(8):
169-175.
container cluster service for muti-cloud[J].Software Guide,2022,21(6):
谢冬鸣,黄林,黄进军,等.多云容器集群服务的设计与实现[J].软件
导刊,2022,21(6):169-175.
(责任编辑:孙 娟)
Copyright©博看网. All Rights Reserved.
更多推荐
系统,评判,服务,实验
发布评论