写点什么

模块三

作者:侠客行
  • 2021 年 11 月 11 日
  • 本文字数:1316 字

    阅读完需:约 4 分钟

1. 业务背景


随着学校的规模的不断扩大,学生数量的增加,需要处理的信息也日趋增大。不仅花费大量的教师资源,处理效率也十分低下。


为提高学生管理的管理水平,优化资源,尽可能降低管理成本成为学生管理的新课题,学生管理系统是从学生管理现状出发,根据学生管理的新要求进行开发设计的,它需要解决学生信息管理数据信息量大修改不方便,对一系列数据进行分析时花费时间长等问题,帮助学生管理人员有效管理学生信息。


因此学生信息管理系统可以通过系统规范化地管理、科学性统计和快速查询、修改、增加、删除等,提高信息的准确度以及日常管理的工作效率。


本系统主要是应用于学生各类信息的管理,总体任务是实现学生信息关系的系统化、规范化、自动化,其主要任务是统计学生各类信息进行日常管理,如查询、修改、增加、删除、以及学生选课、成绩的查询等功能设计的管理系统

2. 约束和限制

  1. 学生学习,老师排课考试,管理员管理不冲突,各个互不影响

  2. 使用 mysql 作为存储

  3. 成本控制在 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.考虑数据量增长,通过上云来减少系统部署难度和数据存储过大问题

发布于: 2021 年 11 月 11 日阅读数: 13
用户头像

侠客行

关注

还未添加个人签名 2018.07.31 加入

还未添加个人简介

评论

发布
暂无评论
模块三