模块三作业
前言
本文是校方外包学生管理系统详细架构设计文档,用于指导学生管理系统的后续开发、测试和运维工作。
词汇表
Nginx :异步框架的网页服务器,也可以用作反向代理、负载平衡器和 HTTP 缓存。
Spring Boot :Spring 平台下,可以让开发者快速开发的框架。
MySQL:数据库存储服务。
1. 业务背景
经过与学校方面相关人员的沟通,校方存在以下教学问题需要解决,以及对新系统建设有以下几点期望。
当前学校缺少对学生信息的信息化管理,在每年九月需要大量的人力来完成学生信息登记任务,学生每次开学选课效率也不够高。
在校学生和老师,可以通过学生管理系统,高效地实现对学生信息、课程信息的访问和维护。提高教师安排课程效率,能检索学生学籍信息,学生能通过平台完成本学期课程选课以及期末查询考试成绩查询。
每个学期结束以后,系统能生成学生成绩的数据分析报表,通过对数据分析,能让学生自我检查学习情况和让教师对教学计划有针对性的修改。
基于以上背景,我们需要建设学生信息管理系统,以提高师生教学效率。
2. 约束和限制
学校提供的经济资源有限,需要提高每台服务器资源的利用率。
学校每年新入学和毕业离校的学生人数相对稳定,不需要太多存储空间。
不需要考虑异地建设机房。
学生和课程的数据非常重要,存储时一定要注意不允许数据丢失。
3. 总体架构
3.1 架构分析
高可用
对于学生选课来说,如果当几千名学生同时在线选课,如果有的课程因为系统原因无法正常选上,给学生和老师的教学工作带来极大的影响,容易导致学生对学校产生负面消极的情绪,同时会给教师在课程安排产生一定影响。
高性能
不需要着重考虑,实际上每个学期需要登记和选课的学生数量是一定的,如果服务器无法支持上万人的选课,可以让校方安排,不同系的学生在不同的时间段进行选课。
可扩展
目前不需要考虑,学生管理系统第一期只是作为学校内部使用的系统,根据目前的需求来看,暂时不需要跟其他业务系统产生交互。
3.2 总体架构
本项目采用不同服务部署在不同服务器上的架构,每个服务器专门负责处理一个子系统的请求。
数据库使用主从备份设计,确保学生的信息和选课数据的安全性。
在主数据库发生宕机的情况下,备份数据库对外提供读写服务。
使用 Nginx 将请求转发到对应的服务器上。
4. 详细设计
学生子系统主要是面向在校学生使用,当每年九月份有新学生入校时,需要开放页面给学生们登记信息。每个新学期开学以后,原先登记的学籍信息也应该随着改变,比如原来大一的新生在第二年之后就变成大二的学生。
课程子系统主要是面向在校学生和老师使用,在每个学期开学的时候,学生可以根据自己的兴趣爱好,选择自己想进行学习的课程。考试需要提前将课程计划安排好,并一个班能最多有多少个学生设置好。在系统实现的过程中,需要注意避免超选现象的发生。
权限子系统主要是判断访问者是否具有对应的权限访问对应的资源。
4.1 核心功能
学生选课流程
为了防止课程被超选,所以这里需要增加一些判断。
4.2 关键设计
为了防止课程不会被超选,所以需要增加锁的判断条件。
为了防止学生、课程等数据的丢失,MySQL 数据库使用主从备份,当主服务器发生问题时,从服务器提供服务。平时使用 MySQL 的主从同步机制完成不同服务器之间的数据同步。
4.3 设计规范
前后端通信使用 HTTP 和 JSON。
MySQL 使用 Innodb 存储引擎。
后端服务使用 SpringBoot 开发。
前端页面使用 Vue 开发。
5. 质量设计
确保平台能支持一千人同时在线选课。
代码关键流程需要编写流程图,并将流程图存档。
实时检测 Linux 服务器运行状态。
6. 演进规划
第一期完成学生信息子系统、课程信息子系统、权限信息子系统的开发。
第二期完成智慧食堂子系统的开发,实现学生在线充值,查询饭卡余额,查询餐厅菜单的功能。
评论