学生管理系统架构设计文档
前言
本文是学生管理系统的详细架构设计文档,用于指导学生管理系统的后续功能的开发、测试和运维工作。
词汇表
1、Spring boot : 轻松创基于 Spring 的应用程序
2、Mybatis : 持久层框架
3、MySQL : 关系型数据库
1. 业务背景
随着学校的规模的不断扩大,学生数量的增加,给学校带来了以下一些问题
需要处理的信息日趋增大
花费大量的教师资源
处理效率也十分低下
基于以上背景,急需搭建一套学生管理系统,解决学生信息管理数据信息量大修改不方便,对一系列数据进行分析时花费时间长等问题,帮助学生管理人员有效管理学生信息。
2. 约束和限制
1. 后端使用 Java 语言开发
2. 总成本不能超过 200 万
3. 数据库采用 MySQL
4. 两个月内上线一个版本
3. 总体架构
系统白盒图
3.1 架构分析
3.1.1 高可用
学生管理系统的用户是学校老师和学生,系统一段时间内不可用的话,影响不大,整体而言对可用性要求不高,但是系统的数据比较重要,含有学生的学籍考试等关键信息,不能丢失,所以对数据的高可用要求高些
3.1.2 高性能
一个学校的教师和学生人数不会太多,可以预见后期的访问量,并发量不会太大,所以对高性能的要求也不高
3.1.3 可扩展
学生管理系统的业务功能变更还是比较频繁的, 所以可扩展性也需要考虑
综合来看,学生管理系统需要考虑系统的可扩展性以及数据的高可用
3.2 总体架构
根据系统的功能模块,将系统拆分为 3 个内部子系统:将系统分为学生子系统,课程子系统,权限子系统。
为防止数据丢失,采用主备数据复制方式,包括一台主 mysql,和一台备 mysql。
使用 Nginx 服务器来转发分配请求
4. 详细设计
4.1 核心功能
4.1.1 作业上传和下载
4.2 关键设计
4.2.1 数据的高可用
数据存储在 MySQL 中,设计一主一备两台 MySQL 服务器,MySQL 服务器之间复制数据以保证数据存储高可用。
4.2.3 系统的可扩展
将整个系统拆分为多个子系统,从而保证系统的可扩展性,在后续业务需求发生变更或者有新的业务需求时,只需要通过增加子系统的方式就可以了。
4.3 设计规范
服务端开发语言使用 Java,开发框架采用 Spring Boot + Mybatis 开发
数据库使用 MySQL,存储引擎采用 Innodb
前后端分离,后端和前端的数据交互通过 HTTPS 协议,采用 JSON 数据格式
5. 质量设计
可维护性
系统各服务器以及数据库需要接入学校统一运维平台
2. 可观测性
记录每次操作日志,提供系统关键数据的报表展示页面
3. 安全
用户密码等关键信息需要加密保存,前端和服务端只能通过 HTTPS 协议交互。
6. 演进规划
一期:
实现关键的一些主要功能,学生管理,课程管理,权限管理、考试管理三大模块
二期:
上线公告宣传模块,增加多学校支持
评论