架构实战营模块三作业
1. 业务背景
随着学校的规模的不断扩大,学生数量的增加,需要处理的信息也日趋增大。不仅花费大量的教师资源,处理效率也十分低下。
为提高学生管理的管理水平,优化资源,尽可能降低管理成本成为学生管理的新课题,学生管理系统是从学生管理现状出发,根据学生管理的新要求进行开发设计的,它需要解决学生信息管理数据信息量大修改不方便,对一系列数据进行分析时花费时间长等问题,帮助学生管理人员有效管理学生信息。因此学生信息管理系统可以通过系统规范化地管理、科学性统计和快速查询、修改、增加、删除等,提高信息的准确度以及日常管理的工作效率。
本系统主要是应用于学生各类信息的管理,总体任务是实现学生信息关系的系统化、规范化、自动化,其主要任务是统计学生各类信息进行日常管理,如查询、修改、增加、删除、以及学生选课、成绩的查询等功能设计的管理系统
2. 约束和限制
1.项目开发时间为 2023 年 3 月 7 日至 2023 年 6 月 7 日
2.项目成本为 10 万以内
3.项目质量符合三级等保要求
4.全校师生规模为 2 万人左右,其中教师 200 人左右,学生 2 万人左右
3. 总体架构
3.1 架构分析
3.1.1 高性能
学生网上成绩查询,大约在出成绩的当天会有 80%的学生进行查询,查询时间集中在当天早上 9 点至下午 6 点,预估 TPS 为 2 万人*0.8/9 小时*10=5TPS
3.1.2 高可用
系统对高可用要求不高,系统宕机在 1 小时之内恢复
系统数据要保证不全部丢失,需要做数据备份
3.1.3 可扩展
业务需求比较复杂
3.1.4 成本和安全
开发预算为 10 万,开发周期要求 3 个月,系统要保证不出现安全漏洞
3.2 总体架构
3.2.1 学生管理
账号绑定:学生账号可通过第三方如:手机号码、微信等自行绑定,可实现账号自助找回等。
组织管理层级:按学生实际情况划分归属。 例如:软件学院—数字传媒方向(专业)—软件 1306—苗雨乔。
文件上传/下载:此功能针对所有用户开放,学生可以将自己课堂笔记、日常作业等相关信息在线传输,教师通过学生上传的相关作业、试卷信息进行相应评定,完成对学生平时成绩的评定。此功能一旦评定结束,所有用户只有查询、浏览的权限,除管理员外其他用户没有对成绩修改的权限。
信息查询:此项功能包含课程查询(含课程体系、课时安排、课表、教师、教材等)、成绩查询、文件查询。
3.2.2 课程管理
课程录入:由管理员对相应课程体系进行录入,供学生、教师进行在线选择。
选课功能:学生可以在线对自己的课程体系进行选择,相对应的课程选择功能类比。
排课功能:此功能根据学生选定的课程和教学体系安排,对相应教师、教室、时间进行统一规划安排。
教材选择:此功能由教务统一管理,根据每门课程选定相应教材
考试管理功能,教师可上传考试题,由系统自动生成试卷,试卷提供排版打印功能
3.2.4 权限管理
系统使用者有学生、教师、管理员、辅导员。
学生、教师、辅导员可以注册、登录、修改自己的信息,但注册信息需要管理员审核通过。
学生只能查看自己的成绩,教师可以修改学生的成绩。
辅导员可以查看学生的信息,可以设置学生的奖惩信息。
教师可以上传考试试题,学生可以做题。
4. 详细设计
4.1 核心功能
4.2 关键设计
4.2.1Nginx 转发规则
学生系统 api 通过/student 前缀进行转发
课程管理系统通过/manager 前缀进行转发
权限管理系统通过/console 前缀进行转发
4.2.2 消息存储可靠性
消息存储在 MySQL 中,每个分组有一主一备两台 MySQL 服务器,MySQL 服务器之间复制消息以保证消息存储高可用。如果主备间出现复制延迟,恰好此时 MySQL 主服务器宕机导致数据无法恢复,则部分消息会永久丢失,这种情况不做针对性设计,DBA 需要对主备间的复制延迟进行监控,当复制延迟超过 30 秒的时候需要及时告警并进行处理。
4.2.2 学生选课功能
保证每节课不会被超选,在课程表中加入选课人数,乐观锁字段,在选课时先进行查询,发现超出选课人数返回选课人数已满,请选择其他课程。更新选课人数失败返回选课错误,请稍后重试
管理端提供选课列表界面,提供人为手动修改选课人员功能。
4.3 设计规范
项目使用 springboot+mybatis+VUE 进行开发
前后端数据传输使用 JSON 格式
各服务之间使用 dubbo 进行接口调用
学生管理系统与课程管理系统使用 cas 模式实现单点登录,权限管理系统作为 cas-server 端提供统一登录页面
数据库使用 mysql,使用主备架构,备机为数据备份
5. 质量设计
可测试性
1.架构可测试性:支持人为切换数据库主备
2.应用可测试性:支持验证测试学生管理、课程管理、权限管理等。
可维护性
增加学生系统运维管理系统,用于对系统的运维
可观测性
提供慢 sql 监控,接口访问超时监控,业务访问量监控,服务器 CPU、内存、磁盘占用率监控
评论