学生管理系统详细架构设计
1. 业务背景
随着学校规模不断扩大,学生数量不断增加,当前的通过人工管理学生信息的方式比较落后,效率低下,为了提高学生管理水平,优化资源,学校计划开发一套学生管理系统,系统主要应用于学校学生信息管理,实现学生信息管理系统化、规范化和自动化,主要管理内容为学生相关信息,如学籍、课程、成绩、奖惩等。
2. 约束和限制
2.1 校方要求 2 个月内交付使用,在新学期开始之前;
2.2 校方因为预算有限且运维方便,要求使用开源数据库 mysql;
2.3 校方表示可能会有后续需求;
2.4 校方要求预算控制在 200 万以内;
2.5 老板要求使用 Java 开发,效率高,且开发人员好组织;
3. 总体架构
3.1 架构分析
3.1.1 高可用
对于学生管理系统来说,学校的教学并不是十分依赖学生管理系统,所以无需做高可用;
3.1.2 高性能
学校学生数约 1 万左右,学生不会频繁登录该系统,所以无需做高性能;
3.1.3 可扩展
校方表示后续可能会有新增需求,所以要求有一定可扩展性;
3.1.4 安全性
学生管理系统的数据要求具有安全性,不可以有完全丢失的情况,数据库要求做到主备,且需要每天备份;
3.2 总体架构
3.2.1 如总体架构图所示,系统拆分为学生子系统、权限子系统、课程子系统,方便以后做扩展,比如以后新增社团子系统、考试子系统等;
3.2.2 如总体架构图所示,数据库采用 mysql 主备架构,即使主 mysql 服务器不可用,系统数据出现丢失风险;
4. 详细设计
4.1 核心功能
4.1.1 学生登录
4.1.2 教师课程管理
4.2 关键设计
4.2.1 Mysql 主备机制,主 Mysql 负责读写,备 Mysql 负责备份数据,当主 Mysql 不可用时,人工将备 Mysql 升级为主 Mysql,待主 Mysql 恢复时,将主 Mysql 降为备 Mysql
4.3 设计规范
4.3.1 采用前后端分离的方式开发
4.3.2 前端 Bootstrap 开发
4.3.3 后端采用 springboot2.x 开发
4.3.4 前后端通过 JSON 格式进行数据交互
4.3.5 子系统之间通过 JSON 格式进行数据交互
4.3.6 Mysql 使用 Inndb 储存引擎
5. 质量设计
5.1 可测试性
该系统架构比较简单,具有可测性
5.2 可维护性
主要包含主机运维、业务服务运维、nginx、mysql 运维,业务简单,具有可运维性
5.3 可观测性
5.3.1 统计在线人数,并在页面上展示出来
5.3.2 通过 grafana influxdb telegraf 对业务服务、组件服务进行监控,并添加告警
5.4 安全
Mysql 主备功能需要进行测试
Mysql 数据备份需要进行可还原性测试
5.5 成本
6 台服务器即可满足需要,2 台 nginx 做主备,2 台用于部署业务系统,2 台用于 mysql 部署
6. 演进规划
6.1 一期完成学生子系统、权限子系统、课程子系统功能,并上线给到校方使用;
6.2 二期可以新增其它子系统,比如考试子系统、社团子系统
评论