写点什么

外包学生管理系统的架构设计

发布于: 10 小时前

前言

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


词汇表

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 管理系统平台

增加管理系统的平台化功能。

用户头像

还未添加个人签名 2018.08.01 加入

还未添加个人简介

评论

发布
暂无评论
外包学生管理系统的架构设计