写点什么

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

作者:泋清
  • 2022 年 6 月 08 日
  • 本文字数:1616 字

    阅读完需:约 5 分钟

前言

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

修订历史

暂无其他版本

词汇表


1. 业务背景

随着学生人数增多,旧有系统不堪重负,学校希望建立学生管理系统管理各级学生信息。新系统需要有良好用户界面,可靠可用,数据不可丢失。对教师,方便录入、验证、和管理学生信息。对学生,可在系统上选课、看成绩、和了解自己学习状况。


新系统支持以下需求:

  1. 支持 1000 个左右学生

  2. 学生数据不可丢失

  3. 系统需要可扩展,未来支持其他功能

  4. 大部分学生信息公开(比如注册课程,考试信息,学生基本信息),但还有小部分仅管理员可见。

  5. 控制成本


基于以上需求,我们设计以下学生信息管理系统

老师、学生和其他用户可以操作系统, 系统管理员管理系统。


2. 约束和限制

三个开发人员

一个月开发完成

系统使用 SQL

数据不可丢失

可以使用学校免费 DNS

3. 总体架构

系统边界白盒图

系统相对简单,所以合并白盒图和内部架构图。根据当前需求,只有人类用户会操作此系统,而后台提供课程、用户权限、学习信息管理逻辑。使用 MySQL 数据库,按主备架构设计。数据向主数据库读取写入,管理员定期备份数据库。


3.1 架构分析

3.1.1 高性能

支撑 1000 人访问量,即使系统短暂不可访问,不影响学校教学,因此暂时一台业务服务器就足够了。以后可以扩展多台业务服务器,使用负载均衡按学生学号分发任务。

3.1.2 高可用

保证数据不丢失即可,使用主备架构(两台数据服务器)。

3.1.3 可扩展

可通过开发其他模块,扩展业务子系统。

3.1.4 成本

使用免费 MySQL 和 Nginx 负载均衡,降低成本。

3.2 总体架构

3.2.1 客户端设计

使用 MVC 架构设计,前端用 React JS,后端用 Java 开发子系统。

3.2.2 业务服务端设计

  1. 业务模块实现数据控制逻辑。选课、课程提示由课程管理模块控制,用户登录由用户权限模块控制,学生信息管理由信息管理模块控制。

  2. 数据控制逻辑包括增删改操作,以及相关验证控制逻辑。

3.2.3 数据存储设计

  1. 一台主数据库服务器,一台备用服务器,人工定期备份。主服务出问题后,可由备服务器备份。

  2. 加入数据库中间件,负责数据读取和写入。中间件方便以后扩展,使用不同的数据读取策略或使用其他数据库。

4. 详细设计

4.1 核心功能

4.1.1 用户注册

4.1.2 用户登录

4.1.3 录入学生信息

4.1.4 选课

4.1.5 查阅课表

4.2 关键设计

4.2.1 如何扩展业务逻辑模块

使用 Reactor 设计模式,有多个线程作为 Worker 支撑多用户登录。独立业务逻辑作为单独模块安装到系统中

  1. 使用 User Session 记录用户登录信息

  2. 系统把用户登录信息和业务需求转发给 Worker

  3. Worker 根据用户信息和业务需求调用业务模块

4.2.2 数据存储可用性

使用主备模式,主数据库服务器可读可写,MySQL 定期备份到备服务器,出现问题可从备服务器恢复到主服务器。节省成本,以后可以更换为主从模式。

4.2.3 如何根据对多个业务服务器负载均衡

负载均衡提升性能

  1. Nginx 根据可以用户对第三层 IP 地址做负载均衡,也可以对第七层 HTTPs 业务做负载均衡。把用户号放在 HTTPs 请求里,Nginx 对 IP 地址和用户号做哈希运算,根据哈希值把请求发到不同业务服务器。

  2. 业务服务器根据用户号保持用户数据,维持用户业务连接。

4.3 设计规范

  1. 支持 HTTPs

  2. 使用 Restful 协议提供服务接口

  3. 数据库中间件必须支持 SQL 语言

5. 质量设计

5.1 成本

使用开源软件节省成本

  1. 使用开源 Nginx

  2. 使用开源 MySQL


由于学员数量有限,先使用单台业务服务器,也可以节省成本,以后可以扩展多台服务器。

5.2 可测试性

  1. 模块间依赖接口连接,模块可单独测试。

5.3 可维护性

  1. 系统支撑超级用户,无需权限可观看删改用户数据

  2. 系统提供管理员用户,有较大权限看用户数据

  3. 系统提供 logging 系统,便于调研问题

5.4 可观测性

  1. 系统提供 logging 系统,便于观看运行流程

  2. 系统提供后台监控进程,监控运行状态

6. 演进规划

6.1 学生管理系统一期

为本文档所描述,提供最基本功能,并可支持多个业务服务器。

6.2 学生管理系统二期

  1. 开发其他模块(比如课程提示功能),提供更多业务功能。

  2. 支持主从服务器,降低人工维护数据成本,提高数据可用性。

  3. 支持后台管理,提高系统可观测性

  4. 支持 shell 功能,提高


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

泋清

关注

还未添加个人签名 2019.03.24 加入

还未添加个人简介

评论

发布
暂无评论
学生管理系统架构设计文档_#架构训练营_泋清_InfoQ写作社区