外包学生管理系统架构文档
【作业要求】
基于模块 1 第 5 课第 15 页的外包学生管理系统备选架构 1(见下页),写出完整的架构设计文档;
注意不是备选架构文档,而是最终落地的详细架构设计文档;
无需考虑数据库表设计,因为表设计是方案设计阶段做的,不是架构设计阶段做的;
前言
本文是学生管理业务系统详细架构设计文档,用于指导学生管理系统后续的开发、测试和运维。
词汇表
Nginx: 一个高性能的 HTTP 和反向代理 Web 服务器,此架构中用于实现业务服务器的请求路由分发。
OAuth2: OAuth 2.0 是一个业界标准的授权协议,此架构中用于实现授权登录。
JSON: 一种轻量级的数据交换格式,此架构中用于前后端数据交换。
MySQL: 流行的关系型数据库管理系统,此架构中用于存储业务数据。
Spring Boot: 用来简化 Spring 应用的初始搭建以及开发过程,此架构中用于后端业务开发。
Vue:一套用于构建用户界面的渐进式框架,目前国内应用最为广泛,此架构中用于前端开发。
1. 业务背景
随着学校的规模的不断扩大,学生数量的增加,需要处理的信息也日趋增大。不仅花费大量的教师资源,处理效率也十分低下。本系统主要是应用于学生各类信息的管理,总体任务是实现学生信息关系的系统化、规范化、自动化,具体如下:
提高管理水平,优化资源,尽可能降低管理成本:从学生管理现状出发,根据学生管理的新要求进行开发设计,它需要解决学生信息管理数据信息量大修改不方便,对一系列数据进行分析时花费时间长等问题,帮助学生管理人员有效管理学生信息。
提高信息准确度及工作效率:通过系统规范化地管理、科学性统计和快速查询、修改、增加、删除等,提高信息的准确度以及日常管理的工作效率。
2. 约束和限制限制
1) 必须在 2022.8.1 前完成
2) 成本不能超过 200 万
3) 质量标准符合 ISO9001-XXXX 标准
3. 总体架构
3.1 架构分析
3.1.1 高性能
一个学校最多几万人,几万个人对于一个系统来说的话,性能要求并不高。其中的抢课的性能要求也不会很高,一门课 100 个人或者 1000 个人抢,对于系统的处理性能来说其实要求并不高。
3.1.2 高可用
如果系统宕机,影响并不大,因为学校的教学和管理并不完全依赖于学生信息管理系统。
学生的信息是手工录入或学生自己录入,如果丢失少数几个或几十个学生信息问题不大,但如果大多数甚至全部都丢了,补起来就很麻烦。所以数据需要高可用。
3.1.3 可扩展
业务上相对比较复杂,存在扩展性要求。
3.1.4 成本
上面的约束里提到,成本不能超过 200 万。
3.1.5 安全
因为不涉及证券,不涉及资金,学生信息基本上是公开信息,所以不需要过多考虑。
3.2 总体架构
1) Nginx,网关,把请求代理到对应的子系统。
2) 学生子系统,处理学生管理相关业务。
3) 课程子系统,包括课程管理及考试管理业务。
4) 权限子系统,处理权限管理相关业务。
5) MySQL 数据库采用主备架构,一台主一台备,做主备数据复制。
4. 详细设计
本部分为详细设计部分,描述核心功能及关键设计。
4.1 核心功能
4.1.1 学生选课流程
1) 学生登录系统,权限子系统做认证/鉴权。
2) 成功登录后,学生选择课程体系进行选课。课程子系统收到请求后进行排课处理,然后返回选课结果。
4.1.2 考试流程
1) 教师登录系统,权限子系统做认证/鉴权。
2) 教师选择知识点、范围、难易程度、题型创建考试,课程子系统自动生成试卷。
3) 教师对试卷做分割点标注。
4) 教师在线下印刷试卷,组织学生考试。
5) 考试后,教师扫描试卷,并把扫描件录入系统。
6) 教师对试卷进行判分。
4.2 关键设计
4.2.1 安全性
采用 OAuth2 协议的授权码模式 + 自包含令牌 JWT 处理身份验证。用户登录一次即可访问多个子系统,子系统可自己对令牌做校验,而不需要每次去访问授权服务器。
4.2.2 数据可靠性
数据存储在 MySQL 中,一主一备两台 MySQL 服务器,MySQL 服务器之间复制数据以保证数据存储高可用。如果主备间出现复制延迟,恰好此时 MySQL 主服务器宕机导致数据无法恢复,则部分数据会永久丢失,这种情况不做针对性设计,DBA 需要对主备间的复制延迟进行监控,当复制延迟超过 30 秒的时候需要及时告警并进行处理。
4.3 设计规范
1) 系统后端使用 Spring Boot 开发。
2) 系统前端使用 Vue 开发。
3) MySQL 使用 Innodb 存储引擎。
4) 数据包采用 JSON 格式。
5. 质量设计
5.1 成本
系统软硬件总成本上限控制在 200 万。
5.2 可测试性
不涉及。
5.3 可维护性
所有系统及用户操作都有日志记录,可查。
5.4 可观测性
管理员通过学生管理系统后台可以查看日志信息、各子系统状态信息、数据库状态信息。并有预警通知。
6. 演进规划
本系统是一次性项目,两期完成后即全部交付。
6.1 学生管理系统一期
用户注册、权限管理、选课排课等功能上线,系统可以满足除考试、作业、统计查询之外的基本需求。
6.2 学生管理系统二期
考试、作业、统计查询功能上线。
评论