学生管理系统架构设计文档示例 - 模块 3
前言
本文是学生管理系统的详细架构设计文档,用于指导后续的系统开发、测试和运维。
词汇表
...
1. 业务背景
问题:
随着学校的规模的不断扩大,学生数量的增加,需要处理的信息也日趋增大。当前维护方式不方便,数据分析耗时长等问题,不仅花费大量的教师资源,处理效率也十分低下。
目标:
降本增效,通过系统规范化地管理、科学性统计和快速查询、修改、增加、删除等,提高
信息的准确度以及日常管理的工作效率。
范围:
系统主要应用于学校学生信息管理,总体任务是实现学生信息管理的系统化、规范
化和自动化,其主要任务是管理学生相关信息,如学籍、课程、成绩、奖惩
2. 约束和限制
[必选,列出明确的约束和限制,常见的约束和限制有:1.投资方的成本要求;2. 监管方的监管要求;3. 技术选型的硬性要求;4. 项目时间要求;5. 质量要求]
必须保证存储高可用,数据不要全部丢失
尽量使用云上基础设施,降低运营成本
3. 总体架构
3.1 架构分析
高性能:学生管理系统用户少,一般学校不超过 1W 人,各业务场景对高性能要求不高
高可用:学生管理系统宕机,对实际教学任务影响较小,对计算高可用要求不高,但是学生数据信息要求不能丢失,需要考虑存储高可用
可扩展:业务相对复杂,需要按业务进行拆分
成本:系统使用量少,无需专门做节约成本的设计,尽量节约研发、运维成本
安全:数据基本不涉及隐私的数据和金钱数据,安全性要求不高
3.2 总体架构
整个系统进行架构分层,分为接入层,业务层,存储层。
1.接入层采用 nginx,进行统一接入,以及负载均衡的访问各个业务子系统
2.业务层对关键业务进行功能划分成 4 个关键子系统:学生子系统,课程子系统,考试子系统,权限子系统,方便后续独立进行伸缩
3.存储层则是 MySQL 主备架构,一主一备,提供存储高可用,保障数据不丢
整体学生管理系统分为 4 个关键子系统(Role):
学生子系统:维护学生信息的管理,比如账户信息,角色信息,身份认证等
课程子系统:进行课程的管理,比如维护所有课程的基本信息,给学生提供选课功能,给老师提供排课功能等
考试子系统:进行考试全流程的管理,包括考试安排,考试出题,生成试卷,考完后的自动阅卷评分,以及考试成绩的管理
权限子系统:使用系统的角色包括,学生、教师、辅导员、管理员,每个角色都有相应的权限。
4. 详细设计
4.1 核心功能
[必选,描述核心场景或者流程的实现机制,对应 4R 架构中的 Rule,每个核心场景一个小节]
[技巧:使用系统序列图来描述 Rule,跟项目开发中写设计文档一样的写法]
4.2 关键设计
存储高可用
由于系统对计算可用性没有那么高,对系统停机没那么敏感,但需要保证数据不丢,因此采用 MySQL 主备架构,采用一主一备即可,主备切换采用手动切换方式即可
4.3 设计规范
开发框架
后端开发框架:SpringBoot、SpringCloud
前端开发框架:vue、element-ui
工程目录规范
参照领域驱动设计方法,对项目结构进行划分
展示层:
com.xsoft.edu-platform.web:展现层内容
应用层:
com.xsoft.edu-platform.application.contracts:应用接口层,应用层接口,DTO
com.xsoft.edu-platform.application:应用实现层
领域层:
com.xsoft.edu-platform.domain.shared: 领域层与其它层共享的数据类型的定义.例如,枚举,常量等。
com.xsoft.edu-platform.domain: 领域层核心,实体,值对象,领域服务,规约,仓储接口等。
基础设施层:
com.xsoft.edu-platform.jpaRepositoryImpl:仓储接口实现层,采用 Jpa 实现
接口规范
采用 rest api 风格
返回结果:{"success":true, "data":{}, "errMsg":"", "stackTrace":""}
5. 质量设计
可观测性:
规范输出、记录,包括:应用异常日志,访问日志,nginx 访问日志,数据库异常日志,慢查询日志
服务提供存活检测、就绪检测接口,暴露服务状态
稳定性保障:
运维根据服务放提供的需要检测的内容,配置日志监控预警功能,包括 nginx 异常,业务服务存活,应用内部异常的监控预警
6. 演进规划
项目规划
整体项目规划为 2 个里程碑,一期完成核心功能,二期完成非核心功能,增强易用性的功能
一期实现核心功能包括 4 个业务子系统的核心功能
学生管理系统:系统登录、账号分配、账号绑定、组织管理层级、文件上传下载、信息查询
课程管理系统:课程录入,选课,排课(先采用人工录入)
考试系统:试卷区域分割(试卷录入先采用人工录入)、平时成绩管理、评分判定
权限管理:完整的角色权限体系,功能权限
二期完成非核心功能、易用性增强
课程管理系统实现在线选课
考试系统,增加图片识别,扫描试卷录入
架构规划
整体架构采用演进原则
先做单体模块化拆分,按业务切分 4 个子系统模块
后续随着业务模块的增加,系统使用量的增加,可将模块提取为独立的服务,逐步从单体演进为微服务架构
评论