写点什么

架构训练营模块 3 课后作业 - 学生管理系统详设文档

发布于: 2021 年 07 月 28 日

前言

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

 

词汇表

 

1. 业务背景

 

随着学校的规模的不断扩大,学生数量的增加,需要处理的信息也日趋增大。不仅花费大量的教师资源,处理效率也十分低下。为提高学生管理的管理水平,优化资源,尽可能降低管理成本成为学生管理的新课题,学生管理系统是从学生管理现状出发,根据学生管理的新要求进行开发设计的,它需要解决学生信息管理数据信息量大修改不方便,对一系列数据进行分析时花费时间长等问题,帮助学生管理人员有效管理学生信息。因此学生信息管理系统可以通过系统规范化地管理、科学性统计和快速查询、修改、增加、删除等,提高信息的准确度以及日常管理的工作效率。

本系统主要是应用于学生各类信息的管理,总体任务是实现学生信息关系的系统化、规范化、自动化,其主要任务是统计学生各类信息进行日常管理,如查询、修改、增加、删除、以及学生选课、成绩的查询等功能设计的管理系统。

 

                                             


2. 约束和限制

 

1.项目上线周期六个月

2.开发维护成本不能超过 300 万

3.java 语言开发

4.后台 java 研发 8 人,h5 研发 2 人

5.B/S 架构

6.页面响应时间 1s 内

 

3. 总体架构

 

3.1 架构分析

3.1.1 高可用

能容纳小时级别宕机,凌晨 0-6 点几乎没人使用。偶尔丢失部分数据没问题

 

3.1.2 高性能

学校人数 4000 人,并发量不高

 

3.1.3 可扩展

外包项目,只需要满足一个学校需求,扩展性要求不高

 

3.1.4 成本

经费和人数少,开发周期短,成本有限

 

3.1.5 安全

除了密码和手机号码外,没有敏感信信息

 

3.1.6 可维护性

采用主流成熟技术和中间件

 

3.2 总体架构

系统边界白盒图



系统架构图



4. 详细设计

1)权限子系统

负责账号分配/系统登录/权限管理功能。

mysql 负责存储用户的账户信息包括密码,身份信息,权限信息。由权限子系统的 API 服务层负责增删查改这些信息。并以拦截器形式拦截整个系统的所有请求,确认用户身份权限符合后,再进行下一步的操作。

由于这部分信息相对比较固定,可以通过本地缓存 caffiene 对用户信息进行缓存。并且在信息同步时候同步更新缓存。

提供微信和短信绑定功能

 

2)课程子系统

负责课程管理,习题,笔记等管理。需要给学生子系统提供 http 接口

mysql 负责存储课程信息包括教材信息,课程排课信息,课程的考试信息,平时成绩,以及学生的考试成绩。课程子系统通过 Restful http API 提供相关的增删查改功能。学生抢课需要注意,每个课程的容量限制的校验。通过权限子系统去判断用户是否有权限去设置课程,考试等。

 

3)学生子系统

主要提供学生相关操作功能的直接接口,比如考试,选课,答题,上传笔记等功能

mysql 负责存储学生的选课信息,学生上传的文件路径,具体文件直接存储在业务服务器上。通过权限子系统识别用户是否有权限去选课等。通过调用课程子系统的 API 来得到课程和考试的基础信息。学生子系统主要负责上传/下载文件,以及学生的选课功能。

 

4.1 核心功能

4.1.1 微信登录




4.2 关键设计

 

1)文件存储可靠性

由于笔记,试卷这些数据可靠性要求不高,前期可以直接放到课程管理系统部署的文件服务器上面。提供文件上传下载功能。提供一个 http 接口定期备份到用户本地

2)数据存储可靠性

采用 mysql 主备就可以了。

3)减少登录权限认证重复开发

权限框架采用 shiro,登录鉴权采用 jwt。

 

4.3 设计规范

1)后台 Spring Boot 开发

2)MySQL 使用 Innodb 存储引擎

3)权限这块可以采用 shiro

4)子系统之间的交互可以采用 http,利用 spring 的 RestTemplate 进行交互

5)http 接口统一用 json

5. 质量设计

5.1.1 高可用

能容纳小时级别宕机,凌晨 0-6 点几乎没人使用。偶尔丢失部分数据没问题,普通的 mysql 主从和定期增量备份就够了

 

5.1.2 高性能

一个学校 4000 个学生,并发量不高,每个后台子系统 1 个实例足够了

 

5.1.3 可扩展

外包项目,只需要满足一个学校需求,扩展性要求不高,这里暂不考虑

 

5.1.4 成本

部署在阿里云上面,按需收费,方便扩容,前期按照最小粒度部署

 

5.1.5 安全

除了密码和手机号码外,没有敏感信信息,在数据库和里面这两个信息进行加密

 

4.2.6 可维护性

java 和 mysql 比较主流成熟,方便维护

 

6. 演进规划

6.1 学生管理系统一期

当上传文件和笔记比较多的时候,可采用使用阿里云的 oss 存储服务

6.2 学生管理系统二期

如果对接 5 个学校以上,可以把 springcloud 放进来,引入注册中心,增加服务监控,日志云等信息

 

用户头像

还未添加个人签名 2018.05.02 加入

还未添加个人简介

评论

发布
暂无评论
架构训练营模块3课后作业-学生管理系统详设文档