架构实战营作业 -- 模块三
前言
本文是外包学生管理系统架构设计文档,用于指导外包学生管理系统的开发、测试和运维
1. 业务背景
随着学校的规模的不断扩大,学生数量的增加,需要处理的信息也日趋增大。不仅花费大量的教师资源,处理效率也十分低下。
为提高学生管理的管理水平,优化资源,尽可能降低管理成本成为学生管理的新课题,学生管理系统是从学生管理现状出发,根据学生管理的新要求进行开发设计的,解决学生信息管理数据信息量大修改不方便,对一系列数据进行分析时花费时间长等问题,帮助学生管理人员有效管理学生信息。
学生信息管理系统可以通过系统规范化地管理、科学性统计和快速查询、修改、增加、删除等,提高信息的准确度以及日常管理的工作效率。
本系统主要是应用于学生各类信息的管理,总体任务是实现学生信息关系的系统化、规范化、自动化,其主要任务是统计学生各类信息进行日常管理,如查询、修改、增加、删除、以及学生选课、成绩的查询等功能设计的管理系统。
2. 约束和限制
1)可扩展:业务需求比较复杂,需要满足可扩展性要求
2)数据高可用:包含学生重要信息,数据不要全部丢失
3.总体架构
3.1 架构分析
3.1.1 高可用
外包学生管理系统主要用户是学校内的老师和学生,如果系统宕机不可用,影响的范围比较小,仅仅是学校内的老师和学生,对应用高可用要求不高,可以接受几小时系统不可用。但是外包学生管理系统包含学生重要信息,比如学籍、课程、成绩、惩罚,数据如果丢失了,学生所有在校记录都清空,对于学校和学生影响都是非常严重的,所以必须确保数据高可用,数据不可丢失
3.1.2 高性能
外包学生管理系统主要针对学校内的老师和学生,日常用户数量最多就几千人,对于日常访问请求量不是很大,所以对于系统高性能要求不高
3.1.3 可扩展
外包学生管理系统实现学生信息管理的系统化、规范化和自动化,根据身份分配不同的权限,所以需要有权限管理。同时还包含学籍、课程、考试、成绩、奖惩等信息录入和查询功能,业务需求相对还比较复杂,因此要做好系统拆分,确保可扩展性,便于后续开发分工
综合来看,外包学生管理系统需要做到数据高可用和可扩展
3.2 总体架构
1)考虑到可扩展性,便于后续开发和分工,按照业务和功能区分,将外包学生管理系统分为三个子系统,分别为学生子系统、课程子系统、权限子系统
2)用户访问请求统一通过 nginx,再根据不同的请求将任务分配到三个不同子系统中
3)系统所有数据都存储在 MySQL 数据库中,包含一台主 MySQL 和一台备 MySQL,一主一备进行主备数据复制,确保数据高可用
4)正常情况下,数据读写通过主 MySQL,当主 MySQL 出现异常,无法提供服务时,切换到备 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)可扩展性
用户访问请求统一通过 nginx,根据不同的请求将任务分配到三个不同子系统中。按照业务和功能区分,将外包学生管理系统分为三个子系统,分别为学生子系统、课程子系统、权限子系统
2)数据可用性
系统所有数据存储在 MySQL 数据库中,包含一台主 MySQL 和一台备 MySQL,一主一备进行主备数据复制,确保数据高可用。正常情况下,数据读写通过主 MySQL,当主 MySQL 出现异常,无法提供服务时,切换到备 MySQL 继续数据提供读写服务
4.3 设计规范
1)根据请求 url,通过 nginx 配置文件中 location 将请求转发到不同子系统的服务器上
2)MySQL 使用 Innodb 存储引擎
3)确保安全性,系统使用 https 协议
5. 质量设计
5.1 运维管理后台:为确保外包学生管理系统可观测性,可以再另外新增运维管理后台,监控系统应用和数据库的异常,通过短信或者邮件发送异常告警,运维人员可通过运维管理后台进行系统异常修复
5.2 可维护性和成本:考虑到可维护性和成本,用开源的 nginx 和 mysql。考虑到成本,系统仅部署在单机房,不考虑部署在两个机房的双活架构
5.3 可测试性:可按照划分的三个子系统进行测试
6. 演进规划
学校的学生数量不会发生很大变化,系统基本功能不会有太大改变,系统架构够用多年,可一次性交付,无需考虑太多后期演变
评论