模块三
1. 业务背景
随着学校的规模的不断扩大,学生数量的增加,需要处理的信息也日趋增大。不仅花费大量的教师资源,处理效率也十分低下。
为提高学生管理的管理水平,优化资源,尽可能降低管理成本成为学生管理的新课题,学生管理系统是从学生管理现状出发,根据学生管理的新要求进行开发设计的,它需要解决学生信息管理数据信息量大修改不方便,对一系列数据进行分析时花费时间长等问题,帮助学生管理人员有效管理学生信息。
因此学生信息管理系统可以通过系统规范化地管理、科学性统计和快速查询、修改、增加、删除等,提高信息的准确度以及日常管理的工作效率。
本系统主要是应用于学生各类信息的管理,总体任务是实现学生信息关系的系统化、规范化、自动化,其主要任务是统计学生各类信息进行日常管理,如查询、修改、增加、删除、以及学生选课、成绩的查询等功能设计的管理系统
2. 约束和限制
学生学习,老师排课考试,管理员管理不冲突,各个互不影响
使用 mysql 作为存储
成本控制在 300 万
3. 总体架构
3.1 架构分析
1.存储需要具备高可用行
课程管理系统的数据不能丢失,加入学生的学习记录,在线考试或者老师的备课数据丢失,是非常严重且影响使用的,直接导致用户不能进行正常的学习和教学工作,所以数据高可用是必须的
2.计算高可用
各个子系统之间不能相互影响,假如课程系统挂掉,考试备课等功能不能使用,但不影响学生的使用,不影响管理对老师和学生的管理等,所以各个需要拆分出来单独的子系统。
3.高性能
此系统不涉场景要求非常高的情况,比如高并发,大量数据等,所以高性能不是必须
4.可扩展
学生管理系统的可扩展要求不是非常高,常用场景基本都能覆盖高,扩展点不会太多,所以可扩展不是必须
3.2 总体架构
1.系统边界白盒图
2.系统架构图
1.客户端是浏览器登录
2.采用 nginx 作为负载
3.后端划分三个子系统:学生子系统,课程子系统和权限子系统
4.服务端:开发语言采用 java,使用 springboot2.0 作为各个子系统的框架
5.mysql 做数据存储,划分主备库
4. 详细设计
4.1 核心功能
1.学生选课
1.学生登录,经过权限系统认证,登录成功
2.学生进入课程子系统进行选课
3.选完之后返回选定的课程,列表展现
2.考试流程
1.老师登录课程子系统
2.老师创建试卷,根据题库的题目自动组卷
3.学生登录课程子系统
4.学生答卷提交
5.老师在线批改试卷
4.2 关键设计
1.各个子系统不相互影响(登录除外)
课程子系统,学生子系统和权限子系统如果一方出现问题,其他系统不受影响,这样影响范围会比较小,排查问题切入点会比较快
2.存储高可用
采用 mysql 主从架构,保证数据尽量少丢失,主库向从库不断同步数据,保证数据有备份;
如果主库同步延迟,则需要增加告警来提示系统数据延迟
4.3 设计规范
1.前端用 react 开发,后端用 java 开发
2.后端用 springboot2.0 框架,采用 spring shiro 管理认证权限
3.数据库采用 mysql 主从
4.各个子系统之间通过 http 接口调用
5. 质量设计
可测试性
系统能通过冒烟测试,压力测试,然后发布生产环境,形成系统的测试文档和操作手册
可维护性
无
可观测性
后端管理系统里根据日志可以看到各个环节报错情况
成本
控制在 300 万
6. 演进规划
1.考虑增加 MQ 来缓冲学生考试提交的内容,避免大量请求打入数据库
2.考虑数据量增长,通过上云来减少系统部署难度和数据存储过大问题
版权声明: 本文为 InfoQ 作者【侠客行】的原创文章。
原文链接:【http://xie.infoq.cn/article/a300e822ea5f6de7fb222b6a1】。未经作者许可,禁止转载。
评论