写点什么

【初恋系列】那年的雨还在下...

发布于: 2 小时前
【初恋系列】那年的雨还在下...

前言

本文是学生管理系统详细架构设计文档,用于指导学生管理系统后续的开发、测试和运维

 

词汇表

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 学生管理系统二期

课程子系统:

在线考试管理

题库管理

阅卷管理

在线学习

在线练习

[技巧:开发阶段快速迭代,小步快跑,但要基本完善后才能正式推出给其他人用]

 

发布于: 2 小时前阅读数: 10
用户头像

还未添加个人签名 2021.05.13 加入

还未添加个人简介

评论

发布
暂无评论
【初恋系列】那年的雨还在下...