学生管理系统整理架构设计
![学生管理系统整理架构设计](https://static001.geekbang.org/infoq/90/90bd7f01d83e042a8d46286bef573579.jpeg)
前言
本文是学生管理系统详细架构设计文档,用于后续学生管理系统开发、测试和运维。
词汇表
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 总体架构
![](https://static001.geekbang.org/infoq/59/593a004a196e01b696487c40997298f3.png)
1、采用 nginx 做任务任务分解,keeplived 实现高可用
2、拆分为三个子系统,nginx 做任务分解分发到各个子系统
3、mysql 数据使用主备,保证数据安全性
4. 详细设计
4.1 核心功能
4.1.1 学生课程管理
![](https://static001.geekbang.org/infoq/fa/fa0b6122fad7d6128aea132e510843a8.png)
1、学生选课系统为该系统核心逻辑
2、学生登录权限系统,登录成功后下方一个授权的 token 信息
3、学生拿着 token 信息请求课程系统进行选课操作
4.1.1 老师课程管理
![](https://static001.geekbang.org/infoq/21/2116c51c6bdbf406b12d9e635cc64dee.png)
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 学生管理系统二期
承接学校新需求功能、完善后续监控系统及持续优化学生管理系统的架构
评论