外包学生管理系统架构设计
前言
本文是外包学生管理系统详细架构设计文档,用于指导学生系统后续的开发、测试和运维
修订历史
词汇表
1. 业务背景
随着学校的规模的不断扩大,学生数量的增加,需要处理的信息也日趋增大。不仅花费大量的教师资源,处理效率也十分低下。
为提高学生管理的管理水平,优化资源,尽可能降低管理成本成为学生管理的新课题。学生管理系统是从学生管理现状出发,根据学生管理的新要求进行开发设计的。
本系统主要是应用于学生各类信息的管理,总体任务是实现学生信息关系的系统化、规范化、自动化,其主要任务是统计学生各类信息进行日常管理,如查询、修改、增加、删除、以及学生选课、成绩的查询等功能设计的管理系统。
2. 约束和限制
1、在 2022 年 12/30 号之前完成
2、数据库使用 mysql
3、后端系统开发语言使用 java
4、开发成本不超过 50 万
3. 总体架构
系统架构图如下:
3.1 架构分析
3.1.1 高性能
本系统使用人数较少(学校在校学生预估不超过 5W),主要功能更为后台管理系统,同时在线人数较少,因此对性能要求不高。但需保证在使用高峰期(早上 7~9 点、中午 12~2 点、下午 18~20 点之间),系统能够正常响应。
3.1.2 高可用
由于学生数据都是由学生手动从系统录入,数据丢失后损失较大,需考虑存储高可用。可以采用 mysql 主备部署,将主机数据复制到备机上,降低数据丢失的概率。
3.1.3 可扩展
根据目前场景,业务复杂度一般,且未来变化情况相对稳定,业务系统可按照业务功能分为 3 个子系统(学生子系统、课程子系统、管理子系统)即可,无需做其它设计。
3.1.4 安全
1、学生个人隐私信息加密存储
2、使用管理系统对用户进行权限管控
3.1.3 成本
成本主要来源于硬件的成本。本系统对性能要求不高,因此可以考虑将 3 个子系统部署在一台服务器上,由于对数据要求可靠性,数据库采用主备 2 台服务器部署。
3.2 总体架构
1、nginx 做 web 网络接入层,完成反向代理和负载均衡
2、业务服务拆分为 3 个功能子系统,基于 spring boot 开发,部署在一台服务器上
3、服务之间通过 restful+json 接口通信
4、数据存储使用一台主 mysql 和 1 台备 mysql,主备数据复制。
5、前后端分离开发
4. 详细设计
下面分别针对学生子系统、课程子系统、管理子系统进行详细设计。
4.1 核心功能
4.1.1 学生信息录入
4.1.2 课程和考试信息录入
4.1.3 学生选课
4.1.4 学生提交作业和考试
4.2 关键设计
1、学生数据的安全性
通过登录验证、权限管控限制登陆用户可操作的数据,降低数据越权修改、数据泄露的风险。数据保存时,对敏感数据进行加密存储。
针对常见的网络攻击等异常情况,不做针对性设计,管理员需针对这些异常攻击配置告警,人工进行处理。
2、学生数据存储的可靠性
学生数据存储在 mysql 中,mysql 为主备双机部署,主备机器之间通过复制信息保证数据存储高可用。
如果主备间出现复制延迟,恰好此时 MySQL 主服务器宕机导致数据无法恢复,则部分消息会永久丢失,这种情况不做针对性设计,DBA 需要对主备间的复制延迟进行监控,当复制延迟超过 30 秒的时候需要及时告警并进行处理。
3、数据如何存储
学生数据保存在 mysql 数据表中。学生基本信息、课程基本信息、学生课程关系为 3 个基础业务表。
4.3 设计规范
1、学生管理服务使用 springboot 开发
2、MySQL 使用 Innodb 存储引擎
3、服务间使用 restful+json 格式通信
5. 质量设计
5.1 可测试性
5.2 可维护性
5.3 可观测性
5.4 成本
6. 演进规划
6.1 学生系统一期
6.2 学生系统二期
评论