论文部分内容阅读
随着网络和计算机技术的快速发展,人们对编程语言的学习日益重视和普及,同时随着学生需求的不断变化和对学生要求的不断提高,程序在线测评系统已经成为人们学习编程的重要工具和常用的测试方法,因此在高校中已经得到广泛的使用。为进一步提升其安全性和应对高并发的能力,本文充分利用Docker技术具有的容器间相互隔离、启动速度快和占用资源少等良好特性提出了一种基于Docker判题机的程序在线测评系统。本文较深入的研究了基于Docker的程序在线测评系统的设计与实现方法,该系统主要实现了用户管理模块、公告管理模块、作业/考试管理模块、题库管理模块以及判题模块。学生可以随时登录系统进行在线的编程练习、完成作业和参加考试。教师可以对系统的各个模块进行统一管理,使学生学习和教师教学变得更加方便和高效。文中首先简明扼要的介绍了Docker的相关理论、基于TIG(Telegraf、InfluxDB、Grafana)的Docker容器监控方案、服务发现的原理结构与常用的服务发现框架以及用于登录验证的MD5加密算法。随后论述了系统应对高并发和保证系统安全的具体方法:通过服务发现、Docker监控、负载均衡和弹性伸缩脚本之间的相互联动实现判题机的数量的动态调整,从而保证高并发时系统的稳定运行;通过对程序运行时间和占用资源(CPU、内存使用率等)的限制来保证本系统的运行安全;通过对Linux系统中敏感词语的限制来防止恶意代码删除磁盘数据和下载运行恶意文件从而保证系统的自身安全;通过新增数据库表,备份判题数据来保证数据安全。与传统的程序在线测评系统相比,基于Docker的程序在线测评系统具有更高的安全性以及更好的应对高并发的能力,用户可以更加方便、高效地进行各种常用编程语言的编程练习、在线地完成作业和参加考试。因此基于Docker的程序在线测评系统有着良好的应用前景。