模块 3 作业
前言
本文是学生管理系统的详细架构设计文档,用于指导系统后续开发、测试和运维。
1. 业务背景
随着学校的规模的不断扩大,学生数量的增加,需要处理的信息也日趋增大。由此带来了一系列问题:
效率问题:信息修改不方便,对一系列数据进行分析花费时间长
成本问题:花费大量教师资源
规范问题:没有统一的规范,日常管理困难
基于以上问题,我们设计了学生管理系统,用于学生各类信息的管理,通过系统规范化的管理,提高信息的准确度以及日常管理的工作效率。
2. 约束和限制
满足全校 10000 名师生使用
数据库使用 MySQL
存储高可用,不能丢失全部数据
采用开源方案,降低成本
在 2021 年 9 月 1 号开学前完成
3. 总体架构
3.1 架构分析
3.1.1 高可用
服务高可用:学生管理系统允许短时间宕机,如抢课期间宕机,重新安排时间进行抢课即可
存储高可用:学生、教师、课程信息几乎全靠手动输入,如果全部丢失,补档十分麻烦。
综上,业务服务器不需要太多的高可用设计,存储服务器需要高可用设计,数据量不大,主备复制即可。
3.1.2 高性能
信息录入:教师、学生、课程信息主要靠手动录入,或从磁盘文件导入,没有高并发问题
用户数量:学校人数不会太多,同一时间使用系统的人数也不会多
抢课:可以通过分年级、分时间段抢课,降低并发
综上,没有太高的性能需求。
3.1.3 可拓展
业务简单且稳定,属于一次性交付产品,无需太多可拓展性设计
3.2 总体架构
4. 详细设计
4.1 核心功能
学生子系统
系统登录:此功能面向所有用户角色,根据用户角色权限不一,功能权限也不一样。
账号分配:学生账号由系统生成,给定相应权限,可进行密码更改,无法对系统成绩评定等功能做出相应干涉。教师账号由管理者(教务)通过系统生成,教师有对学生成绩评定和试卷评定的权限,同时兼容学生权限。管理(教务)权限由系统固有账号,是系统 root 权限,对教师有分配管理权限,对数据有增加、修改、删除、查询权限。
账号绑定:学生账号可通过第三方如:手机号码、微信等自行绑定,可实现账号自助找回等。
组织管理层级:按学生实际情况划分归属。
文件上传/下载:此功能针对所有用户开放,学生可以将自己课堂笔记、日常作业等相关信息在线传输,教师通过学生上传的相关作业、试卷信息进行相应评定,完成对学生平时成绩的评定。此功能一旦评定结束,所有用户只有查询、浏览的权限,除管理员外其他用户没有对成绩修改的权限。
信息查询:此项功能包含课程查询(含课程体系、课时安排、课表、教师、教材等)、成绩查询、文件查询。
课程子系统
课程录入:由管理员对相应课程体系进行录入,供学生、教师进行在线选择。
选课功能:学生可以在线对自己的课程体系进行选择,相对应的课程选择功能类比。
排课功能:此功能根据学生选定的课程和教学体系安排,对相应教师、教室、时间进行统一规划安排。排课功能备选开发方向为在线排课和人工录入,在线排课是系统根据课程要设置课程的名称、课时、上课的班级、代课老师等信息,除此之外,还可以选填排课时的优选项,例如:上课时间有限上午等系统自动生成课程信息,管理员有权限对课程安排作出添加、删除、修改等判定。
教材选择:此功能由教务统一管理,根据每门课程选定相应教材。
权限子系统
系统使用者有学生、教师、管理员、辅导员。
学生、教师、辅导员可以注册、登录、修改自己的信息,但注册信息需要管理员审核通过。
学生只能查看自己的成绩,教师可以修改学生的成绩。
辅导员可以查看学生的信息,可以设置学生的奖惩信息。
教师可以上传考试试题,学生可以做题。
4.2 关键设计
存储可靠性
数据存储在 MySQL 中,使用一主一备两台 MySQL 服务器,服务器之间使用命令复制方式同步数据,保证数据可靠性。
4.3 设计规范
子系统间使用 GRPC 进行通信
MySQL 使用 Innodb 存储引擎
主备 MySQL 之间使用 命令复制 方式同步数据
前端使用 HTTP 和服务器进行通信,数据格式使用 json
后端使用 springboot 进行开发
不要直接从数据库获取不属于本服务的数据,应当通过 GRPC 到对应服务获取数据
5. 质量设计
成本:采用开源方案,减少成本。
安全:主要为学校局域网内使用,主要考虑业务安全,做好权限控制。
可测试:业务稳定,功能简单,完善日志打印即可。
可维护、可观测:架构简单,节点数量少,且几乎不会增加,不需要考虑。
评论