写点什么

模块三作业——外包学生管理系统架构设计

作者:覃飞
  • 2021 年 11 月 16 日
  • 本文字数:1889 字

    阅读完需:约 6 分钟

1. 业务背景

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

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

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

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

系统主要应用于学校学生信息管理,总体任务是实现学生信息管理的系统化、规范化和自动化,其主要任务是管理学生相关信息,如学籍、课程、成绩、奖惩。

2. 约束和限制

(1)成本

尽量减低成本,以最小资源运行。

(2)时间

学生信息管理成本越来越大,希望尽快上线。

(3) 技术

使用 Java+MySQL 进行开发,便于后续维护。

(4) 质量

系统允许短时间宕机,但是数据不允许丢失。

3. 总体架构

3.1 架构分析

3.1.1 高性能

根据网上搜索到的资料,中国大学在校学生最多的学校,约有 8 万学生,而大型学校一般有 3 万以上学生,在此系统的设计中,我们按照 5 万用户(学生+教职工)计算。

并发相对较高的是选课场景,在同个时间点抢同一门课的学生,一般为同年级同专业,或者公共课程,公共课程面向全校,一般比较热门,但也仅限于同年级。根据网上资料,大学每年招生人数可为 3000~5000(本科或硕士)之间。理论上,一门面向全校的课程,并发可达到 3000~5000,但考虑到与本专业课程冲突,实际上不会全部学生都抢同一门课,按二八原则,假设有十分之二的学生选择同一门课,那么选择该课的学生可以有 600~1000,在假设十分之八的学生同一时间点抢课,那么并发为 480~800。并发并不是很高。

3.1.2 高可用

应用挂掉影响不大,但是数据存储需要高可用,不能丢失数据。

3.1.3 可扩展

前期需求基本确定,只有一家学校使用,后续需求变化不大,扩展性要求不高。

3.2 总体架构


 

(1)将系统拆分为三个子系统:学生子系统(学生信息)、课程子系统(课程、考试)、权限子系统(教职工信息、账号分配、登录)。每个子系统可独立部署。

(2)由 Nginx 作为访问入口,代理到 3 个子系统。

(3)数据库采用 MySQL 主备模式,正常情况下,备服务器不对外提供服务,当主服务器宕机时,需要人工介入启动备服务器。

(4)三个子系统共用一个数据库实例,每个子系统对应一个数据库。

4. 详细设计

4.1 核心功能

4.1.1 学生账号分配


 

4.1.2 认证授权


 

4.1.3 学生选课


 

4.2 关键设计

(1)认证授权

权限子系统负责认证、权限管理。

认证方面,采用 JWT 作为登录凭证,JWT 自包含用户信息,权限子系统负责生成 JWT,业务子系统可以直接做验证。

授权方面,当用户访问业务子系统时,携带 JWT,业务子系统验证通过之后,从权限子系统加载用户在当前业务子系统的权限数据,业务子系统将该权限数据以 JWT 做为 key 缓存起来,无需每次都请求权限子系统。

(2)选课学生数控制

后端接收到选课请求时,先将剩余选课数量做减一操作,SQL 如:“update 课程 可选学生数=可选学生数-1 where 可选学生数>0 and 课程 ID=xxx”,操作成功则说明选课成功,则进行下一步操作。

(3)数据存储高可用

MySQL 采用主备架构,保证数据高可用。

4.3 设计规范

1)登录之后的 token 采用 JWT,必须包括用户 ID、用户名、学院 ID、专业 ID(学生),班级 ID(学生),以便业务系统可以直接解析并获取用户信息。

2)MySQL 使用 InnoDB 存储引擎。

3)系统之间的调用采用 Restful 风格 API。

4)各个子系统采用 Spring Boot 框架,内嵌 Tomcat。

5. 质量设计

5.1 可测试性设计

无。

5.2 可维护性设计

数据库信息在配置文件中进行配置,当前主节点不可用时,手动修改配置,切换到备节点。

权限控制逻辑代码,剥离到公共组件中,各个业务子系统均可引用,便于统一维护。

5.3 可观测性设计

API 采用 swagger 生成接口文档,便于对接、测试。

6. 演进规划

6.1 学生管理系统一期

开发内容:实现权限子系统,包括账号开通、认证授权\实现学生子系统,对学生信息进行管理。

开发周期:3 周

 

6.2 学生管理系统二期

开发内容:实现课程子系统,包括课程录入、选课、排课、教材选择、考试管理

开发周期:5 周

 

6.3 学生管理系统三期

开发内容:实现账号绑定(手机号码、微信等)、其他优化需求

开发周期:2 周

 

发布于: 4 小时前阅读数: 6
用户头像

覃飞

关注

还未添加个人签名 2021.09.02 加入

还未添加个人简介

评论

发布
暂无评论
模块三作业——外包学生管理系统架构设计