写点什么

学生管理系统架构设计文档

作者:艾瑾行
  • 2023-08-07
    山东
  • 本文字数:1590 字

    阅读完需:约 5 分钟

前言

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

修订历史

词汇表

一、  业务背景

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

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

对学生管理系统的要求为:

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

● 系统主要是应用于学生各类信息的管理,总体任务是实现学生信息关系的系统化 、规范化 、自动化,  其主要任务是统计学生各类信息

● 进行日常管理,  如查询 、修改 、增加 、删除 、  以及学生选课 、成绩的查询等功能设计的管理系统。

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

二、  约束和限制

三、  总体架构

3.1 架构分析

学生管理系统的架构复杂度分析:

● 高性能

学生人数在 5w 左右,系统主要用于学生信息管理,日常操作集中在登陆、注册、信息录入、信息查询等情景,其中高并发场景只有开学季学生大规模的注册和登陆。

假设新生人数占三分之一,算 2w,所有心生的注册、登陆在 2 小时内完成,平均 TPS 也只是个位数。

结论:系统对高性能无特别需求。

● 高可用

业务高可用:对学生管理系统来说,短时间的不可用可以接受,有问题修复即可

存储高可用:数据是不能丢的,如果大批数据丢失,需要老师、学生、管理员耗费大量精力重录,且不一定可以恢复。

结论:需设计存储高可用。

● 可扩展

学生管理系统满足学校的功能需求即可,无需考虑可扩展性。

● 成本

硬件成本:已和学校沟通完毕,使用学校机房资源进行部署。

开发成本:将系统划分为三个子系统,提高开发效率,节约开发成本。

● 系统质量

因系统比较简单,且高性能、高可用没有严格的需求,无需另外开发配套的管理系统和运维系统,但应该设计对存储状态进行简单监控,避免数据丢失。

3.2 总体架构



● 子系统 Role 设计

子系统采用 Java Springboot 语言开发

● 反向代理

系统入口选用 Nginx 做反向代理

● MySQLRole 和 Relation 设计

采用 MySQL 主从同步

直接用 MySQL 的主从复制来实现数据复制

● 各子系统之间、子系统和 MySQL 之间 Relation 设计

各子系统读写数据库均在 MySQL 主库进行操作

子系统之间通过 HTTP 接口进行交互,交互数据格式为 JSON

子系统间接口调用响应时间不超过 50ms

四、  详细设计

4.1 核心功能

4.1.1 权限管理

● 使用者角色分为学生、教师、管理员、辅导员

● 学生、教师、辅导员可以注册、登录、修改自己的信息,注册信息需要管理员审核通过

● 学生只能查看自己的成绩,教师可以修改学生的成绩

● 辅导员可以查看学生的信息,可以设置学生的奖惩信息

● 教师可以上传考试试题,学生可以做题

4.1.2 账号分配

● 学生账号由系统生成

● 教师账号由管理员通过系统生成

● 管理员账号为系统固有账号

4.1.3 查询课程信息



4.2 关键设计

MySQL 使用主从复制,保证数据不丢失。

4.3 设计规范

● 业务子系统使用 SpringBoot 开发

● 子系统之间通过 HTTP 协议交互,交互数据格式为 JSON

● MySQL 使用 Innodb 存储引擎

五、  质量设计

● 可观测性

无需单独设计运维平台和管理平台,使用开源产品 Prometheus+grafana+alertmanager 对子系统运行状态,和 MySQL 运行状态、主从复制状态进行监控,配置故障报警,保证系统的可观测性。

● 成本

监测系统可复用业务服务器,节省成本

六、  演进规划

该项目由学校验收通过即可,功能点和用户数都不会产生新的需求,所以无需演进。

用户头像

艾瑾行

关注

还未添加个人签名 2020-08-12 加入

还未添加个人简介

评论

发布
暂无评论
学生管理系统架构设计文档_艾瑾行_InfoQ写作社区