外包学生管理系统架构设计文档
前言
本文是某高校学生管理系统详细架构设计文档,用于指导学生管理系统后续的开发、测试和运维
词汇表
不涉及
1. 业务背景
高校需要对学生信息进行登记,学生需要选择课程,查看考试成绩,教师需要给试卷进行评分,而传统的纸质登记管理方式效率低下,管理困难,因此需要开发一个学生管理系统来对学生信息、课程及考试信息进行登记和处理。
2. 约束和限制
1.必须在 2022.06.30 号完成
2.成本不能超过 150 万
3.数据库采用 MySQL
3. 总体架构
3.1 架构分析
3.1.1 高可用
对于学生管理系统来说,可以容许数据少量丢失,但是不可以全部丢失,因此存储需要高可用。
3.1.2 高性能
除选课场景外,学生管理系统总体对性能要求不高
3.1.3 可扩展
不涉及
3.2 总体架构
1)使用 Nginx 做负载均衡
2)采用主备存储架构,MySQL 一主一备,主备数据复制,主数据库宕机备库切换为主库
3)分为 3 个子系统:权限子系统、课程子系统、课程子系统
4. 详细设计
核心场景:
选课流程:
1.学生登录管理系统
2.查询可选课程
3.选择课程
4.1 核心功能
4.1.1 选课流程
4.2 关键设计
1)存储可靠性
数据存储在 MySQL 中,有一主一备两台 MySQL 服务器,MySQL 服务器之间复制消息以保证消息存储高可用。如果主备间出现复制延迟,恰好此时 MySQL 主服务器宕机导致数据无法恢复,则部分消息会永久丢失,这种情况不做针对性设计,DBA 需要对主备间的复制延迟进行监控,当复制延迟超过 30 秒的时候需要及时告警并进行处理。
2)安全
部署在学校内网
4.3 设计规范
1)框架使用 Spring Boot
2)MySQL 使用 Innodb 存储引擎
3)子系统间使用 json 格式传参
5. 质量设计
5.1 可维护性
学生管理系统管理后台
5.2 可测试性
不涉及
5.3 可观测性
不涉及
5.4 成本
6 台服务器+开发成本 150 万
6. 演进规划
6.1 学生管理系统一期
完成学生子系统、课程子系统
6.2 学生管理系统二期
完成权限子系统
评论