写点什么

外包学生管理系统的架构文档

作者:张逃逃
  • 2022 年 2 月 23 日
  • 本文字数:1519 字

    阅读完需:约 5 分钟

1. 业务背景

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

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

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

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

2. 约束和限制

1.三个月之内完成

2.硬件成本不得超过 20 万

3.支持存储 5 万个学生

4.支持 1000 个学生并发访问

3. 总体架构

3.1 架构分析

高性能:学校师生人数总计约 5 万人,并且根据业务特点,用户的访问时间分布相对均匀,所以对性能要求并不高。

高可用:一般情况下,学生管理系统挂掉几个小时,对学校的正常教学并不会有太大影响,大部分的学校教学活动并不完全依赖于学生管理系统。但是,由于学生、课程信息等是由学生和教师自己注册或者上传维护上去的,不能全部丢失,否则想要补全这些信息很困难。

可扩展:经过业务需求的分析,可以发现业务还是比较复杂的,有各种学生的管理,还有课程,考试,需要不断维护更新,后面还要进行统计分析、奖惩管理等,理解难度稍高,并且会根据学校的教学活动的变化而有新的需求增加,所以系统的可扩展性要求是比较高的,多人协作开发的情况下,需要进行一定的模块划分。

成本、安全:由于只在一个学校中使用,服务器成本应该不高;由于系统中不涉及学生、教师等的私密信息,不涉及资金流转,安全性上的要求也不算高。

3.2 总体架构



整个学生管理系统分成三个子系统:权限子系统、学生子系统、课程子系统

  • 权限子系统,主要负责统一身份认证、账号管理、角色管理、每个角色的权限分配。

  • 学生子系统,主要负责维护学生的学籍相关信息。学生可以修改自己的基本信息;老师可以管理学生的学籍信息。

  • 课程管理系统,主要负责完成排课管理、试卷管理、成绩管理以及课程管理。老师可以在上面进行排课、管理课程、录入成绩、布置/批改作业;学生可以查询课程、成绩、课表等信息并完成老师布置的作业。

4. 详细设计

4.1 核心功能

  • 用户鉴权

用户登陆时将通过学生子系统获得 Token 用以鉴权,之后的所有请求将携带此 Token 当请求设计到对于某一项数据的增删改查时,Token 将被用于向权限子系统进行鉴权来判断是否可以进行此项操作。

  • 数据主备功能

业务数据读写主要在 MySQL 主库进行,并使用 binlog 同步至备库。

4.2 关键设计

  • 数据储存的可靠性

使用一主一备两台 MySQL 服务器,保证数据的可用性。

  • 请求分发与控制

Nginx 根据 URL 来决定将请求反向代理至某个子系统,当某个子系统出现性能瓶颈时,通过 Nginx 做负载均衡

4.3 设计规范

1.采用前后端分离方式,前端 vue, 后端使用 Spring Boot 框架。

2. MySQL 使用 InnoDB 储存引擎,采用主备设计。

3.各个子系统之间的调用使用 restful 风格的接口调用

4.使用 Swagger 展示接口 API

5.统一使用 log4j2 记录日志

5. 质量设计

可测试性:单元测试用例。

可维护性:详细的设计完档、部署文档、系统宕机可以快速重启。

可观测性:操作日志、系统异常预警,采用 Spring Boot Actuator。

成本:控制在 5 万以内。

6. 演进规划

一期:开学前必须完成学生注册、管理、课程、权限等管理功能上线。

二期:开学后考试前完成考试、考核奖惩、成绩统计等功能上线。

发布于: 刚刚阅读数: 2
用户头像

张逃逃

关注

还未添加个人签名 2019.02.19 加入

还未添加个人简介

评论

发布
暂无评论
外包学生管理系统的架构文档