学生管理系统架构设计文档
前言
本文是学生管理系统详细架构设计文档,用于后续的开发、测试和运维
词汇表
1、Spring boot : Spring Boot 可以轻松创建独立的、生产级的基于 Spring 的应用程序
2、Mybatis : 持久层框架
3、PostgreSQL : 对象-关系型数据库
1. 业务背景
本系统主要是应用于学生各类信息的管理,总体任务是实现学生信息关系的系统化、规范化、自动化;
分学生管理、课程管理、考试管理、权限管理四个主要功能模块
2. 约束和限制
1. 使用 Java 开发;
2. 成本不能超过 200 万;
3. 数据库采用开源且免费的产品,如 MySQL 或 PostgreSQL
4. 使用学校的 DNS 服务做域名映射
3. 总体架构
3.1 架构分析
3.1.1 高可用
对于学生管理系统来说,考试成绩、所选课程等数据如果数据丢失,则是一件非常严重的事,因此需要对数据做好备份
3.1.2 高并发
由于抢课时会对系统造成一定的压力,为了减少同一时刻的并发访问量,设置不同年级抢课时间不一样;
3.2 总体架构
1、由于系统简单且开发人数只有三个人,采用单体架构即可,内部根据四个功能模块将代码分别放在各自模块的包下,创建一个公共代码包目录,通用工具类和常量等通用代码抽取公共代码
2、PostgreSQL 主库和备注需要分别分布在两个不同的机房
3、使用集群部署方式部署,采用轮训方式访问使得每台服务器处理请求数量均匀
4. 详细设计
4.1 核心功能
4.1.1 学生查询已选课程
4.1.2 学生查看成绩
4.1.3 老师评卷、录入成绩
4.2 关键设计
1)是否拆分微服务
由于开发人数只有三个人,且系统用户量不多,因此没有拆分微服务,而是使用单体架构;
2)数据存储可靠性
PostgreSQL 搭建一主一备,主和备分别放在两个机房,防止数据丢失;
3) 不同业务模块的数据如何存储
对 PostgreSQL 创建四个不同的 Schema,每个业务模块的数据存放在各自的 Schema 下面,方便管理每个业务模块的表
4.3 设计规范
1)使用 Spring boot 框架,可快速开发
2)使用 Mybatis 持久层框架,更友好的自定义 SQL
3)使用 PostgreSQL 数据库,支持更友好的 SQL 查询
4)前后端分离,方便后续扩展
5. 质量设计
5.1 出于安全的考虑,学生成绩的录入和修改,需要记录日志,方便追踪
5.2 出于成本的考量,只部署 5 台服务,不同的年级分开时间来选课
5.3 数据库服务器和中台服务器需要接入学校的运维系统,如果服务挂了或阈值超标,自动发送短信给运维人员
6. 演进规划
6.1 学生管理系统一期
学生管理、课程管理、考试管理、权限管理
6.2 学生管理系统二期
添加报表模块(各班平均分排名 top10、学生总分排名 top10、各科 top10 排名)
评论