外包学生管理系统的架构设计
前言
本文是外包学生管理系统的架构设计文档,用于指导外包学生管理系统后续的开发、测试和运维。
词汇表
1. 业务背景
随着学校的规模的不断扩大,学生数量的增加,需要处理的信息也日趋增大。不仅花费大量的教师资源, 处理效率也十分低下。
为提高学生管理的管理水平,优化资源,尽可能降低管理成本成为学生管理的新课题,学生管理系统是从 学生管理现状出发,根据学生管理的新要求进行开发设计的,它需要解决学生信息管理数据信息量大修改 不方便,对一系列数据进行分析时花费时间长等问题,帮助学生管理人员有效管理学生信息。
因此学生信息管理系统可以通过系统规范化地管理、科学性统计和快速查询、修改、增加、删除等,提高 信息的准确度以及日常管理的工作效率。
2. 约束和限制
1.必须在 2021.08.30 号学生开学前完成
2.成本不能超过 1000 万
3. 总体架构
3.1 架构分析
3.1.1 高可用
大部分的业务场景对于可用性没有 7*24 小时的要求,但是对于,学生的个人信息、成绩信息等数据是不能丢失的,对于数据高可用有比较高的要求,因此,数据必须有备份。
3.1.2 高性能
单个学校的总人数一般不会超过 1 万人,同时访问的场景也比较少,对性能的要求不是很高。
3.1.3 可扩展
学生管理系统的业务比较稳定,变化的频率比较低,对于扩展性没有很高的要求。
综合来看,学生管理系统需要数据高可用性,能够持久化存储,并有安全的备份机制,对于性能和扩展性的要求不高。
3.2 总体架构
系统架构分为 3 层,接入层 Nginx、服务层、存储层
接入层 Nginx:负责流量转发、负载均衡
服务层:负责业务逻辑处理
学生子系统:学生信息管理
课程子系统:课程信息管理
权限子系统:负责权限信息管理
存储层:mysql 负责信息的持久化存储和数据备份
4. 详细设计
4.1 核心功能
4.1.1 学生子系统
1. 系统登录:此功能面向所有用户角色,根据用户角色权限不一,功能权限也不一样。
2. 账号分配:学生账号由系统生成,给定相应权限,可进行密码更改,无法对系统成绩评定等功能做出相应干 涉。教师账号由管理者(教务)通过系统生成,教师有对学生成绩评定和试卷评定的权限,同时兼容学生权 限。管理(教务)权限由系统固有账号,是系统 root 权限,对教师有分配管理权限,对数据有增加、修改、 删除、查询权限。
3. 账号绑定:学生账号可通过第三方如:手机号码、微信等自行绑定,可实现账号自助找回等。
4. 组织管理层级:按学生实际情况划分归属。 例如:软件学院—数字传媒方向(专业)—软件 1306—苗雨 乔。
5. 文件上传/下载:此功能针对所有用户开放,学生可以将自己课堂笔记、日常作业等相关信息在线传输,教 师通过学生上传的相关作业、试卷信息进行相应评定,完成对学生平时成绩的评定。此功能一旦评定结束,所 有用户只有查询、浏览的权限,除管理员外其他用户没有对成绩修改的权限。
6. 信息查询:此项功能包含课程查询(含课程体系、课时安排、课表、教师、教材等)、成绩查询、文件查询。
4.1.2 课程子系统
1. 课程录入:由管理员对相应课程体系进行录入,供学生、教师进行在线选择。
2. 选课功能:学生可以在线对自己的课程体系进行选择,相对应的课程选择功能类比。
3. 排课功能:此功能根据学生选定的课程和教学体系安排,对相应教师、教室、时间进行统一规划安排。 排课功能备选开发方向为在线排课和人工录入,在线排课是系统根据课程要设置课程的名称、课时、上课 的班级、代课老师等信息,除此之外,还可以选填排课时的优选项,例如:上课时间有限上午等系统自动 生成课程信息,管理员有权限对课程安排作出添加、删除、修改等判定。
4. 教材选择:此功能由教务统一管理,根据每门课程选定相应教材。
4.1.3 权限子系统
1. 系统使用者有学生、教师、管理员、辅导员。
2. 学生、教师、辅导员可以注册、登录、修改自己的信息,但注册信息需要管理员审核通过。
3. 学生只能查看自己的成绩,教师可以修改学生的成绩。
4. 辅导员可以查看学生的信息,可以设置学生的奖惩信息。
5. 教师可以上传考试试题,学生可以做题。
4.2 关键设计
1)数据存储可靠性
学生、老师的个人信息,学生的考试信息,课程信息,都存储在关系数据库 mysql 中,mysql 本身采用主备架构,读写都在主库,数据会通过 binlog 同步到从库中。当主库宕机后,可以把流量切换到从库。当有一台机器磁盘损坏、或者其他的硬件故障,数据可以从另外一台机器恢复。
4.3 设计规范
1)接入层使用 Nginx,负载均衡采用 Round Robin
2)服务使用 Spring Boot 开发
3)Mysql 使用 Innodb 存储引擎
5. 质量设计
5.1 可测试性
业务的逻辑划分比较清楚,各部分尽量解耦,测试性比较好。
5.2 可维护性
服务都是无状态的,可以无限制的重启。
数据库 Mysql,比较稳定,维护成本不高。
5.3 可观测性
基于 Promethues 和 Grafana 打造 qps 和服务监控平台
6. 演进规划
6.1 管理系统一期
实现基本的学生信息管理、考试管理、权限管理。
6.2 管理系统二期
增加教师信息管理、排课系统。
6.3 管理系统平台
增加管理系统的平台化功能。
评论