模块三作业
(蓝色斜体部分为作业注解)
前言
本文是学生管理系统详细架构设计文档,用于指导学生管理系统后续的开发、测试和运维。
1. 业务背景
随着学校的规模不断扩大和学生数量的增加,现有基于数据库开发软件的学生信息管理系统不够便捷,对一系列数据进行分析时花费时间长,效率低下。为提高学生管理的管理水平,优化资源,尽可能降低管理成本成为学生管理系统的新课题。
学生信息管理系统可以通过系统规范化地管理、科学性统计和快速查询、修改、增加、删除等,提高信息的准确度以及日常管理的工作效率。
本系统主要是应用于学生各类信息的管理,总体任务是实现学生信息关系的系统化、规范化、自动化,其主要任务是管理学生相关信息,如学籍、课程、成绩、奖惩,具体场景为统计学生各类信息进行日常管理,如查询、修改、增加、删除、以及学生选课、成绩的查询等。
学生管理系统上下文示意图:
(注:由于对学校管理业务不是很了解,该图是象征性的,仅用于体现系统与外界的边界和交互关系)
2. 约束和限制
必须在 10 月 1 日前完成上线
开发成本不超过 5 万(客户提供部署环境)
学生数量不超过 10 万
3. 总体架构
3.1 架构分析
3.1.1 可扩展
学生管理系统的部分业务需求比较复杂,需要可扩展性,便于后续快速支持新需求。
3.1.2 高可用
对于学生管理系统,要保证数据不会全部丢失;业务系统不需要关注高可用。
3.1.3 高性能
对于学生管理系统,性能要求不高,基本没有高并发场景。对于选课部分由于学生数量有限,也不会出现同时选课的场景,因此暂时不需要关注高性能。
3.1.4 成本、安全
项目资金有限,团队规模小,不需要将系统设计得过于复杂。
安全性方面,保证数据安全即可。
3.1.5 可测试性、可维护性、可观察性
无需关注。
综合来看,学生管理系统架构需要满足可扩展性和数据高可用。
3.2 总体架构
系统架构图:
说明:
前后端分离,前端与后端采用 JSON 交互
后端业务采用 Spring Boot 框架实现,要求无状态。
权限子系统负责认证、鉴权。认证方式采用 token 机制。
后端接收到前端请求后,首先携带 token 到权限子系统验证身份,并验证操作权限。
后端组件之间采用接口交互,数据格式为 JSON.
数据库不做拆分。全部后端应用使用同一实例。
应用架构图:
说明:
前端部署到 nginx. nginx 既充当 http 服务器,处理静态资源,又充当反向代理服务器。
数据库采用 MySQL 主备模式。
4. 详细设计
4.1 核心功能
4.1.1 系统初始化
系统部署后,执行初始化操作,写入权限系统和学生系统预置数据。
系统自动生成学生、教师和管理员账号,同时预置学生、教师、管理员、辅导员四种角色,并按产品需求文档中的规则初始化权限规则。
4.1.2 身份认证和鉴权
4.1.3 学生管理和课程管理
(略)
4.2 关键设计
1)认证采用 JWT
从扩展性考虑,采用 JWT.
一方面,JWT 优势是服务器不再需要存储 Session,使得服务器认证鉴权业务可以方便水平伸缩。缺点是服务器不存储 Session,无法做到动态删除或修改登录中的 token,如强制下线等功能。在学生管理系统中,不需要这样的场景。后续如果需要,可以改为 token 机制:后端持久化 token,管理会话状态。
另一方面,这样可以保证后端服务是无状态的,使得课程和学生子系统也可以水平伸缩。
2) MySQL 主备模式
学生管理系统的数据要求不全部丢失即可,采用 MySQL 主备模式可实现数据高可用。
3) 课程和学生子系统与权限子系统交互使用 HTTP 接口即可
还有一种方式是使用 SDK,这种方式会增加不必要的复杂性。由于性能要求不高,采用 HTTP 接口即可。
4.3 设计规范
1)前端采用 vue 开发
2)后端服务采用 Spring Boot + JPA 开发
3)MySQL 采用 InnoDB 存储引擎
4)后端组件交互采用 JSON + RESTful 接口
5)后端工程结构方面:可以采用一个 maven 多模块项目,打包制品分为课程子系统、学生子系统和权限子系统 3 个 jar 包。
5. 质量设计
5.1 管理后台
管理后台提供操作日志、审计、统计分析功能,提升可维护性。
5.2 成本
硬件成本主要考虑部署环境,在服务器资源紧张的情况下可以使用如下方案:
1)权限子系统和 nginx 可以部署到一台机器
2)课程子系统和学生子系统可以部署到同一机器
3)MySQL 主备分别独立部署到两台机器
物理部署图:
5.3 可测试性、可观测性
1)后端服务提供统一的健康检查接口,如利用 Spring Boot Actuator 实现,便于后续对接运维平台。
2)实现 trace-id,跨系统追踪请求
3)实现日志规范打印,分级打印
6. 演进规划
二期之后主要规划:完善不可变基础设施,通过对接已有的 PaaS 平台,补齐非业务功能,如认证、鉴权,服务治理,日志分析,监控告警等。
6.1 一期
权限子系统实现基本的认证和鉴权
支持学号激活,邮箱登录,绑定手机号,微信等。
鉴权方面支持简单的基于角色的权限机制。
6.2 二期
认证和鉴权对接智慧校园统一身份认证平台,实现 SSO 登录。
鉴权方面支持 ABAC 机制。
6.3 三期
数据库垂直拆分,课程子系统、考试子系统、权限子系统使用独立的数据库。
实施微服务改造,对接智慧校园平台的 PaaS, 对接服务注册与发现、API 网关、数据分析平台、监控告警、日志分析等。
评论