外包学生管理系统 - 详细架构设计
前言
本文是外包学生管理系统详细架构设计文档,用于外包学生管理系统后续的开发、测试和运维
词汇表
MySQL:开源关系型数据库
1. 业务背景
随着学校的规模的不断扩大,学生数量的增加,需要处理的信息也日趋增大。不仅花费大量的教师源,
处理效率也十分低下。
为提高学生管理的管理水平,优化资源,尽可能降低管理成本成为学生管理的新课题,学生管理系统是从
学生管理现状出发,根据学生管理的新要求进行开发设计的,它需要解决学生信息管理数据信息量大修改
不方便,对一系列数据进行分析时花费时间长等问题,帮助学生管理人员有效管理学生信息。
因此学生信息管理系统可以通过系统规范化地管理、科学性统计和快速查询、修改、增加、删除等,提高
信息的准确度以及日常管理的工作效率。
本系统主要是应用于学生各类信息的管理,总体任务是实现学生信息关系的系统化、规范化、自动化,其
主要任务是统计学生各类信息进行日常管理,如查询、修改、增加、删除、以及学生选课、成绩的查询等
功能设计的管理系统
2. 约束和限制
1、预算有限,尽量压缩成本
2、学校没有专门的运维人员,系统运维成本要低
3、数据使用 MySQL
3. 总体架构
系统架构图
3.1 架构分析
3.1.1 高可用
对于外包学生管理系统来说,数据的重要性一般,允许存现偶尔数据丢失,对于丢失的数据提供补录的方法即可,即可用性要求不高。
3.1.2 高性能
对于外包学生管理系统来说,学生人数长期比较稳定,不会出现数量级上的变化,即高性能方面要求不高。
3.1.3 可扩展性
对于外包学生管理系统来说,随着数字化普及,很多教学工作、管理工作可能会在线上开展发布,所以需要充分考虑。
综合来看,外包学生管理系统的需要可扩展性,对于高可用、高性能、安全性没有很高的要求。
2 总体架构
1)采用 Nginx 做负载均衡,将不同的业务分发到不同的业务服务器上进行处理。
2)学生子系统、课程子系统、权限子系统,分别部署在三台业务服务器上,其中课程子系统和考试子系统共用一台服务器。
3)使用一台主 MySQL 和一台备 MySQL 做数据存储,主备数据采用同步复制的方式。
4. 详细设计
4.1 核心功能
4.1.1 学生提交作业流程:
学生通过浏览器先登录,访问外包学生管理系统,Nginx 将消息分发到权限管理子系统验证其权限,验证通过反馈,学生可以进行作业上传操作,Nginx 将消息转发到学生子系统进行处理,然后将数据存储到主数据库中。
4.1.2 选课流程:
4.2 关键设计
1 )系统的可扩展性
目前根据业务场景拆分出了 3 个业务服务器进行处理,后续如需进行业务拓展,可根据实际情况选择是在原有的服务器上增加子系统或者新增业务服务器。
4.3 设计规范
1)外包项目管理系统使用前后端分离的设计,前端使用 vue,后端使用 Spring Boot + MyBatisPlus+SpringSecurity 框架开发,版本号分别为 xxxx,xxxx,xxxx
2)MySQL 使用 Innodb 存储引擎,字符集 UTF-8,版本号为 xxx,主备采用异步复制的方式
3)Nginx,版本号为 xxxx
4) 子系统间的交互使用 RestTemplate
5)各个子系统统一使用 Swagger 作为在线 API,版本号 xxx
5. 质量设计
考虑到学校经费有限,需要严格控制成本,即将权限控制子系统与选课子系统放在一台业务服务器上,因为考试服务和选课服务本身使用频率较低,且时间通常错开,可充分利用服务器性能。
6. 演进规划
6.1 外包管理系统一期
学生管理:系统登录、账号分配、账号绑定、组织管理层级、文件上传/下载、信息查询
课程管理:课程录入、选课功能、排课功能、教材选择
考试管理:试卷区域分割、平时成绩、评分判定
权限管理
6.1 外包管理系统二期
课程管理:通过外设签名、自动排课、课程排行榜
版权声明: 本文为 InfoQ 作者【奔奔】的原创文章。
原文链接:【http://xie.infoq.cn/article/5576bed73a40d38d7fd9fea4d】。未经作者许可,禁止转载。
评论