【架构实战营】模块三作业
学生管理系统详细架构设计文档
前言
本文是学生管理系统的详细架构设计文档,用于指导学生管理系统的开发、测试和运维。
1. 业务背景
随着学校的规模的不断扩大,学生数量的增加,需要处理的信息也日趋增大。不仅花费大量的教师资源,处理效率也十分低下。
为提高学生管理的管理水平,优化资源,尽可能降低管理成本成为学生管理的新课题,学生管理系统是从学生管理现状出发,根据学生管理的新要求进行开发设计的,它需要解决学生信息管理数据信息量大修改不方便,对一系列数据进行分析时花费时间长等问题,帮助学生管理人员有效管理学生信息。
本系统主要是应用于学生各类信息的管理,总体任务是实现学生信息关系的系统化、规范化、自动化,其主要任务是统计学生各类信息进行日常管理,如查询、修改、增加、删除、以及学生选课、成绩的查询等功能设计的管理系统。
2. 约束和限制
1. 能处理全校 2 万名学生的信息
2. 数据库采用非商用数据库
3. 系统必须在 2022 年 2 月初下学年开始前完成上线
3. 总体架构
3.1 总体架构
学生管理系统的架构图如下:
采用 Nginx 作为 web 服务器,并可以进行负载均衡。
根据学生管理系统功能划分为学生子系统、课程子系统、权限子系统,根据子系统部署微服务,各子系统之间互不影响。
数据存储在 MySQL 数据库中,采用一台主 MySQL 和一台备 MySQL 进行主备数据复制,保证数据库的高可用性。
4. 详细设计
4.1 核心功能
4.1.1 学生管理
1. 系统登录:此功能面向所有用户角色,根据用户角色权限不一,功能权限也不一样。
2. 账号绑定:学生账号可通过第三方如:手机号码、微信等自行绑定,可实现账号自助找回等。
3. 文件上传/下载:此功能针对所有用户开放,学生可以将自己课堂笔记、日常作业等相关信息在线传输,教师通过学生上传的相关作业、试卷信息进行相应评定,完成对学生平时成绩的评定。
4. 信息查询:此项功能包含课程查询(含课程体系、课时安排、课表、教师、教材等)、成绩查询、文件查询。
4.1.2 课程管理
1. 课程录入:由管理员对相应课程体系进行录入,供学生、教师进行在线选择。
2. 选课功能:学生可以在线对自己的课程体系进行选择,相对应的课程选择功能类比。
3. 排课功能:此功能根据学生选定的课程和教学体系安排,对相应教师、教室、时间进行统一规划安排。
4.1.3 权限管理
1.角色:系统使用者有学生、教师、管理员、辅导员。
2.功能权限设置:学生、教师、辅导员可以注册、登录、修改自己的信息,但注册信息需要管理员审核通过。学生只能查看自己的成绩,教师可以修改学生的成绩。辅导员可以查看学生的信息,可以设置学生的奖惩信息。教师可以上传考试试题,学生可以做题。
4.2 关键设计
1. 数据高可用
应用功能对 MySQL 主数据库进行增、删、改、查操作,同时这些数据操作以异步的方式从 MySQL 主数据库同步至 MySQL 备数据库中,从而保证主、备数据库的数据一致性。另外,MySQL 主数据库定期进行数据库全备,以保证数据库可恢复性。
2. 访问负载均衡
基于 Nginx 构建 web 服务器实现负载均衡、页面缓存。
4.3 设计规范
1)采用 Spring Boot 2.x 作为开发框架
2)MySQL 使用 Innodb 存储引擎
3)服务间接口数据采用 JSON 格式
4)Nginx 作为 Web 服务器提供前端网页访问资源,同时对 API 网关实现负载均衡
5. 质量设计
可测试性:提供一套标准规范的 API 文档,同时编写单元测试用例,覆盖各功能。
可维护性:编写详细的上线部署文档、系统应急预案、问题查询手册,确保上线后可以快速定位并解决问题。
可观测性:保留操作日志进行分析;接入统一运维平台,对联机查询超时等系统异常进行预警。开启数据库监控开关,定期收集并分析数据库日志。
6. 演进规划
6.1 项目计划
一期:2021.10 月完成权限模块功能上线,支持各用户权限配置。
二期:2021.12 月完成学生管理模块功能上线,支持维护、更新学生信息等。
三期:2022.01 月底完成课程管理模块功能上线,支持教师排课、学生选课等功能。
评论