学生管理系统详细设计文档
外包学生管理系统详细设计
前言
本文用于阐述学生管理系统的详细架构设计内容,用于指导系统后续的开发,测试和运维工作
词汇表
Nginx :反向代理,用于客户端请求的负载均衡
1. 业务背景
随着学校规模的不断扩大,学生数量的增加,需要处理的信息也日趋增大。不仅花费大量的教师资源,处理效率也十分低下。为提高学生管理的管理水平,优化资源,学生管理系统应运而生。学生信息管理系统可以通过系统规范化地管理、科学性统计和快速查询、修改、增加、删除等,提高信息的准确度以及日常管理的工作效率
2. 约束和限制
1. 2021 下学期投入使用,必须在春节前(2022.1.15)完成
3. 总体架构
系统架构图
3.1 架构分析
3.1.1 高可用
学生系统的数据关系到学生的学籍信息,数据不可丢失
3.1.2 可扩展
系统业务复杂度还是比较高的,需要拆分成多个业务模块用于后续扩展,故将应用拆分为学生、课程、权限子系统
3.1.3 高性能
单个学校的系统,使用人数并不多,即使是抢课的需求,对于一个学校的学生体量来说,无需单独设计高性能
3.1.4 安全
学生信息没有太多个人隐私的信息,安全层面可暂不设计
3.1.5 成本
学校说钱不是问题
3.2 总体架构
使用 nginx 负载流量;将学生管理系统分为 3 个角色(3 个子系统);底层数据库采用 MySQL 主备保障高可用
4. 详细设计
学生管理系统中选课功能是比较核心的场景;涉及三个子系统的复杂调用;由教师录入课程,学生登录后校验权限,选择自己可选的课程,面对可能出现的销量并发场景,需要做并发安全控制,选课逻辑需要用到分段锁实现
4.1 核心功能
系统序列图
4.2 关键设计
1. 学生信息存储高可用
使用 MySQL 主备确保消息落盘的高可用
2. 可扩展性
将系统拆分为 3 个子系统方便未来进行业务拆分可扩展
4.3 设计规范
1)前后端交互采用 Http,JSON 数据格式
2)MySQL 使用 Innodb 保障事务
3)返回对象属性统一使用如下结构
{
success: true,
code : 0,
data : {},
error : “this is an error”
}
5. 质量设计
1) 成本:价格已和校方确认
2) 安全:架构安全由校方机房自己处理
3) 可测试性:业务测试
4) 可维护性:校方运维
5) 可观测性:日志+告警+APM
6. 演进规划
1)业务相对简单,不做分期;
2)每 3 周做一个小迭代,为期 2 月
2.1)第一个迭代主要打通测试环境,可交给测试同学进行基本功能测试
2.2)第二个迭代完成 80%功能开发,并已解决大多数问题
2.3)第三个迭代基本可达 UAT 验收状态,完毕上线
版权声明: 本文为 InfoQ 作者【Imaginary】的原创文章。
原文链接:【http://xie.infoq.cn/article/a4085e72b47eda4be5d19d7d7】。未经作者许可,禁止转载。
评论