【初恋系列】那年的雨还在下...
前言
本文是学生管理系统详细架构设计文档,用于指导学生管理系统后续的开发、测试和运维
词汇表
Springboot: 一个后台快速构建框架
Mysql:关系数据库
Vuejs:一个前端快速构建框架
1. 业务背景
随着学校的规模的不断扩大,学生数量的增加,需要处理的信息也日趋增大。不仅花费大量的教师资源,处理效率也十分低下。
为提高学生管理的管理水平,优化资源,尽可能降低管理成本成为学生管理的新课题,学生管理系统是从学生管理现状出发,根据学生管理的新要求进行开发设计的,它需要解决学生信息管理数据信息量大修改不方便,对一系列数据进行分析时花费时间长等问题,帮助学生管理人员有效管理学生信息。
因此学生信息管理系统可以通过系统规范化地管理、科学性统计和快速查询、修改、增加、删除等,提高信息的准确度以及日常管理的工作效率。
本系统主要是应用于学生各类信息的管理,总体任务是实现学生信息关系的系统化、规范化、自动化,其主要任务是统计学生各类信息进行日常管理,如查询、修改、增加、删除、以及学生选课、成绩的查询等功能设计的管理系统。
2. 约束和限制
1.必须在 2021.11.10 前号完成,一个半月的时间
2.总成本不能超过 20 万
3.数据库采用 Mysql
4.Qps 最大 1000
5.3 个人开发
6. B/S 结构
7. 数据必须采用安全可信的方式传输
3. 总体架构
根据业务,将系统划分为权限子系统、学生子系统、课程子系统,每个子系统提供的功能大概如下
权限子系统:定义角色、菜单、权限,用于管控学生、管理员等权限
学生子系统:学员的基本信息、学期总分数、是否需要留级等
课程子系统:提供课程管理、选课、考试考核、学员课程成绩管理
3.1 架构分析
3.1.1 高性能
在学员同时选课、查看课程或者查看考试的时候会出现 qps 增加的现象,但由于学员上限 qps 才 1000,所以不需要考虑高性能的问题。选课可以分批次选。
3.1.2 高可用
学员选课时遇到系统故障可以刷新或者稍微等待,暂不考虑高可用场景。
3.1.3 高拓展
随着学校的发展壮大,业务也在变更中,所以保留一定的拓展性。
3.1.4 成本与安全
学校的学生相关信息是很敏感的,不能丢失,所以需要数据同步备份,遇到灾害时可恢复。
3.2 总体架构
1)采用 nginx 分发请求。
2)mysql 一主一备,数据同步复制。
3)正常情况下,主服务对外提供服务,备份服务不对外提供服务。
4)宕机的情况下,备服务器对外提服务。
4. 详细设计
web 端:采用 vuejs,快速搭建脚手架,用 json 来与后端交互
后端:用 springboot 框架,快速的构建项目,用 json 于 web 端交互
存储:采用 mysql
4.1 核心功能
学生管理系统的核心功能有:学员登录、学员选课、成绩录入、成绩查询
4.1.1 学员登录流程
4.1.2 学员选课流程
[技巧:使用系统序列图来描述 Rule,跟项目开发中写设计文档一样的写法]
4.2 关键设计
1)数据存储可靠性
数据存储在 MySQL 中,每一主一备两台 MySQL 服务器,MySQL 服务器之间复制信息以保证数据存储高可用。如果主备间出现复制延迟,恰好此时 MySQL 主服务器宕机导致数据无法恢复,则部分信息会永久丢失,这种情况不做针对性设计,DBA 需要对主备间的复制延迟进行监控,当复制延迟超过 30 秒的时候需要及时告警并进行处理。
(2)数据安全
采用 https 协议,防止消息被篡改、拦截。
(3)扣减可报名数量
要按课程锁定库存,采用分布式锁,注意释放锁
[技巧:常见的关键设计点包括高性能、高可用、可扩展、安全等]
4.3 设计规范
1)采用 Spring Boot + Vuejs 开发
2)MySQL 使用 Innodb 存储引擎
3)json 协议
status 为”1”时代表正常返回,为“0”时代表异常返回
{
"status": "1",
"data":null,
"code": null,
"message": "",
"totalBean": null
}
4)id 采用雪花 id
5)Sql 语句需要写到 xml 中
6)关键业务需打印日志
6)采用 log4j 统一打印日志
5. 质量设计
5.1 学生管理后台
以界面的形式管理学生
5.2 成本
总成本不能超过 20 万
一年服务器费用=1500 元/月*4 台服务器*12 月=7.2 万
人员薪资=(2 万/月+1.5 万/月+1 万/月)*1.5=6.75 万
一年维护费用=6.75 万*30%*1.5(变动因子)=3 万
剩余的作为需求变动调整的钱
[技巧:如果某个维度不涉及,也请在文档中说明,避免评审的时候被认为考虑不周全]
6. 演进规划
6.1 学生管理系统一期
(1)权限子系统:
角色管理
菜单管理
权限管理
分组管理
(2)学生管理子系统:
学生管理
班级管理
学期管理
(3)课程子系统:
课程管理
学员选课管理
学员考试成绩管理
6.2 学生管理系统二期
课程子系统:
在线考试管理
题库管理
阅卷管理
在线学习
在线练习
[技巧:开发阶段快速迭代,小步快跑,但要基本完善后才能正式推出给其他人用]
版权声明: 本文为 InfoQ 作者【人工智能~~~】的原创文章。
原文链接:【http://xie.infoq.cn/article/2bcd136614fe70b54b496a2b0】。文章转载请联系作者。
评论