写点什么

外包学生管理系统架构设计

作者:乖乖IvyShine
  • 2022-10-29
    江苏
  • 本文字数:1382 字

    阅读完需:约 5 分钟

前言

本文是外包学生管理系统详细架构设计文档,用于指导学生系统后续的开发、测试和运维

修订历史

 

 

词汇表

 

1. 业务背景

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

为提高学生管理的管理水平,优化资源,尽可能降低管理成本成为学生管理的新课题。学生管理系统是从学生管理现状出发,根据学生管理的新要求进行开发设计的。

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

 

2. 约束和限制

1、在 2022 年 12/30 号之前完成

2、数据库使用 mysql

3、后端系统开发语言使用 java

4、开发成本不超过 50 万

 

3. 总体架构

系统架构图如下:


 

3.1 架构分析

3.1.1 高性能

本系统使用人数较少(学校在校学生预估不超过 5W),主要功能更为后台管理系统,同时在线人数较少,因此对性能要求不高。但需保证在使用高峰期(早上 7~9 点、中午 12~2 点、下午 18~20 点之间),系统能够正常响应。

3.1.2 高可用

    由于学生数据都是由学生手动从系统录入,数据丢失后损失较大,需考虑存储高可用。可以采用 mysql 主备部署,将主机数据复制到备机上,降低数据丢失的概率。

3.1.3 可扩展

    根据目前场景,业务复杂度一般,且未来变化情况相对稳定,业务系统可按照业务功能分为 3 个子系统(学生子系统、课程子系统、管理子系统)即可,无需做其它设计。

3.1.4 安全

1、学生个人隐私信息加密存储

2、使用管理系统对用户进行权限管控

3.1.3 成本

    成本主要来源于硬件的成本。本系统对性能要求不高,因此可以考虑将 3 个子系统部署在一台服务器上,由于对数据要求可靠性,数据库采用主备 2 台服务器部署。

3.2 总体架构

1、nginx 做 web 网络接入层,完成反向代理和负载均衡

2、业务服务拆分为 3 个功能子系统,基于 spring boot 开发,部署在一台服务器上

3、服务之间通过 restful+json 接口通信

4、数据存储使用一台主 mysql 和 1 台备 mysql,主备数据复制。

5、前后端分离开发

 

4. 详细设计

下面分别针对学生子系统、课程子系统、管理子系统进行详细设计。

4.1 核心功能

4.1.1 学生信息录入


 

4.1.2 课程和考试信息录入

 

4.1.3 学生选课

4.1.4 学生提交作业和考试

 

4.2 关键设计

1、学生数据的安全性

通过登录验证、权限管控限制登陆用户可操作的数据,降低数据越权修改、数据泄露的风险。数据保存时,对敏感数据进行加密存储。

针对常见的网络攻击等异常情况,不做针对性设计,管理员需针对这些异常攻击配置告警,人工进行处理。

2、学生数据存储的可靠性

学生数据存储在 mysql 中,mysql 为主备双机部署,主备机器之间通过复制信息保证数据存储高可用。

如果主备间出现复制延迟,恰好此时 MySQL 主服务器宕机导致数据无法恢复,则部分消息会永久丢失,这种情况不做针对性设计,DBA 需要对主备间的复制延迟进行监控,当复制延迟超过 30 秒的时候需要及时告警并进行处理。

3、数据如何存储

学生数据保存在 mysql 数据表中。学生基本信息、课程基本信息、学生课程关系为 3 个基础业务表。

 

4.3 设计规范

1、学生管理服务使用 springboot 开发

2、MySQL 使用 Innodb 存储引擎

3、服务间使用 restful+json 格式通信

 

5. 质量设计

5.1 可测试性

5.2 可维护性

5.3 可观测性

5.4 成本

6. 演进规划

6.1 学生系统一期

6.2 学生系统二期

 

用户头像

还未添加个人签名 2017-12-12 加入

还未添加个人简介

评论

发布
暂无评论
外包学生管理系统架构设计_乖乖IvyShine_InfoQ写作社区