学生管理系统整理架构设计

前言
本文是学生管理系统详细架构设计文档,用于后续学生管理系统开发、测试和运维。
词汇表
Springboot:2.4.3
Mysql:5.7
Nginx:1.18.0
1. 业务背景
随着学校的规模的不断扩大,学生数量的增加,需要处理的信息也日趋增大。不仅花费大量的教师资源,处理效率也十分低下。
为提高学生管理的管理水平,优化资源,尽可能降低管理成本成为学生管理的新课题,学生管理系统是从学生管理现状出发,根据学生管理的新要求进行开发设计的,它需要解决学生信息管理数据信息量大修改
不方便,对一系列数据进行分析时花费时间长等问题,帮助学生管理人员有效管理学生信息。
因此学生信息管理系统可以通过系统规范化地管理、科学性统计和快速查询、修改、增加、删除等,提高信息的准确度以及日常管理的工作效率。
本系统主要是应用于学生各类信息的管理,总体任务是实现学生信息关系的系统化、规范化、自动化,其主要任务是统计学生各类信息进行日常管理,如查询、修改、增加、删除、以及学生选课、成绩的查询等
功能设计的管理系统。
2. 约束和限制
1、必须在 2021.09.01 号完成
2、在校学生 1000 人
3、采用开源架构
4、成本限制 20 万
3. 总体架构
[必选,描述经过备选架构决策后定下来的架构方案,这一章主要是描述架构的 3R:Rank、Role、Relation]
[技巧:1. 系统边界白盒图描述系统内的角色与外界的交互(Rank + Role + 外部 Relation);2. 系统架构图来描述内部的 Role + 内部 Relation]
[注意:不建议一张图同时描述系统架构的 3R 以及与外界的交互,因为图太复杂,画系统边界白盒图的时候,系统内部的 Relation 可以不画]
3.1 架构分析
3.1.1 高可用
可靠性,使用 Mysql 的主备保证数据不能丢失,每个服务采用至少两个副本,nginx 用 keeplived 实现高可用。
3.1.2 高性能
在校学生 1000 个,理论是不存在高并发,网上选课可能存在并发稍高情况,服务按照模块拆分,并且实现多副本,可以支持。
3.1.3 可扩展
服务按照模块拆分为三个服务,当计算不够时可以通过增加副本实现。如果存储出现性能问题,后续可以通过把 Mysql 主备修改为读写分离架构。
3.2 总体架构

1、采用 nginx 做任务任务分解,keeplived 实现高可用
2、拆分为三个子系统,nginx 做任务分解分发到各个子系统
3、mysql 数据使用主备,保证数据安全性
4. 详细设计
4.1 核心功能
4.1.1 学生课程管理

1、学生选课系统为该系统核心逻辑
2、学生登录权限系统,登录成功后下方一个授权的 token 信息
3、学生拿着 token 信息请求课程系统进行选课操作
4.1.1 老师课程管理

1、老师登录权限系统,授权系统返回 token
2、老师可以进行课程录入,生成课程供学生进行选择
3、老师可以进行考试内容录入,生产考试试卷
3、老师可以进行成绩录入,生产考试成绩单
4.2 关键设计
1、数据可用性
数据库采用主备存储,一定程度上保证了数据的可靠性,降低数据丢失的风险,当主库宕机,人工切换至备库,当主库恢复,将宕机前未来及同步数据备份。
2、业务拆分
业务拆分成三个模块,利于以后平台复杂功能的扩展
3、Ngnix 反向代理
利用 Nginx 反向代理,将请求分发到相应的服务器,不影响其他模块功能及性能
4.3 设计规范
1、业务模块开发使用 Spring Boot 2.5 + Mybatis 3.3
2、安全框架使用 Spring Security
3、JDK 采用 Open JDK 1.8+
4、MySQL 使用 InnoDB 存储引擎
5、数据传输使用 json 格式
5. 质量设计
1、可测试性
提供 API 测试入口,方便进行手工测试及自动化测试
2、可维护性
完善的部署及维护文档,方便的 CI/CD 集成方式
3、课观测性
后台管理系统,日志操作监控及服务器、数据库性能可视化监控
4、成本
成本控制在 20 万
6. 演进规划
6.1 学生管理系统一期
完成外包学生的所有业务功能,学生管理系统、课程管理系统和权限管理系统,能够完成学校数据化办公目标,满足学生和老师的基本诉求
6.2 学生管理系统二期
承接学校新需求功能、完善后续监控系统及持续优化学生管理系统的架构
评论