写点什么

学生管理系统架构文档

作者:小虾米
  • 2022 年 4 月 19 日
  • 本文字数:977 字

    阅读完需:约 3 分钟

前言

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


1. 业务背景

随着学校的规模的不断扩大,学生数量的增加,需要处理的信息也日趋增大。不仅花费大量的教师资源,处理效率也十分低下。为提高学生管理的管理水平,优化资源,尽可能降低管理成本成为学生管理的新课题。


基于以上背景,我们需要开发一套学生信息管理系统,可以通过系统规范化地管理、科学性统计和快速查询、修改、增加、删除等,提高信息的准确度以及日常管理的工作效率。


2. 约束和限制

  1. 为了降低成本,使用免费数据库

  2. 必须在三个月内完成


3. 总体架构

系统边界白盒图:


系统架构图:


3.1 架构分析

3.1.1 数据安全性

对于学生信息管理系统来说,学生相关数据是非常重要的。选用主备数据库部署能够有效的保证信息不会丢失。

3.1.2 高性能

采用 nginx 转发请求能保证请求快速分发到后端各子系统。同时各子系统独立部署,保证系统的高效运行。


3.2 总体架构

1)数据库主备分别独立部署

2)垂直拆分成 3 个独立的子系统

3)使用 nginx 作为反向代理

4)数据库机器使用 ssd 作为存储介质


4. 详细设计

4.1 核心功能

【客户端 role 设计】

客户端使用 vue.js 开发,与服务器使用 json 数据格式基于 rest 接口通信

【服务器 role 设计】

1)服务器使用 go 语言的 web 框架 gin 开发

2)数据采用主备部署,备只是用来对数据进行备份,不对外提供服务

3)基于项目情况暂不引进自动切换主备的机制,等下个迭代再考虑加入

【客户端和服务器的 relation 设计】

1)客户端与服务器使用 json 数据通信

2)对于需要刷新的场景客户端采用定时 pull 的方式拉取服务器数据

【mysql 的 role 和 relation 设计】

1)采用主备复制数据

2)备份的数据定期再备份归档

4.2 关键设计

1)系统独立性

各子系统独立机器部署,保证子系统之间的强隔离性,每一个子系统出故障都不会影响其他子系统的运行。

2)数据查询速度保证

由于学生每年都会增加,已经毕业的学生信息很少会查询,所以按时间维度分表,每年建立对应的业务表,执行业务的时候按年查询。


4.3 设计规范

1) MySQL 使用 Innodb 存储引擎

2)各子系统提供 REST 接口供 web 端调用

3)使用 gin 作为后端开发框架


5. 质量设计

5.1 成本

对于已经毕业的学生相关数据可以迁移到性能较低的机器,查询时可以附带标识去低性能机器执行查询操作,减少正式 db 的数据量,防止硬盘容量爆满。


6. 演进规划

6.1 前 3 个月完成各子系统业务逻辑功能

6.2 第 4 个月集成各子系统

6.3 后 2 个月进行集成测试


用户头像

小虾米

关注

还未添加个人签名 2017.10.18 加入

还未添加个人简介

评论

发布
暂无评论
学生管理系统架构文档_架构实战营_小虾米_InfoQ写作社区