写点什么

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

用户头像
Rabbit
关注
发布于: 刚刚

前言

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

 

词汇表

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 排名)

 

用户头像

Rabbit

关注

还未添加个人签名 2018.07.17 加入

还未添加个人简介

评论

发布
暂无评论
学生管理系统架构设计文档