模块三作业 外包学生管理系统详细架构设计
外包学生管理系统
前言
本文是外包学生管理系统的详细架构设计文档,用于指导外包学生管理系统后续的开发、测试和运维。
词汇表
无
1. 业务背景
随着学校规模的扩大,要处理的学生信息管理数据量越来越多,统计学生相关数据信息花费时间越来越长,学生信息管理效率日趋低下。因此,提高信息的准确度和日常管理的工作效率显得非常有必要。基于以上背景,我们需要实现外包学生管理系统,总体任务是实现学生信息管理的系统化、规范化、自动化,主要任务是学生各类信息日常管理(新增、修改、查询、删除)及学生选课、数据统计等功能的实现。
2. 约束和限制
题目要求采用备选架构一将系统拆分为学生子系统、课程子系统、权限子系统。
数据不能全部丢失。
3. 总体架构
3.1 架构分析
3.1.1 高性能
计算高性能:系统用户为学校学生、老师、辅导员,用户量不大,并发访问量不大,所以不需要考虑计算高性能。
存储高性能:用户量不大,访问量不大,所以不需要考虑存储高性能。采用常用关系型数据库比如 MySQL 就可以。
3.1.2 高可用
计算高可用:由于是学校内部自己使用的系统,如果应用服务器短时宕机仍能接受,所以不需要考虑计算高可用。不需要
存储高可用:可以容忍系统数据少量丢失,少量丢失的数据可以人工修复。但是不能容忍大量甚至全部数据丢失,故需要考虑存储高可用。
3.1.3 可扩展
按题目要求将系统拆分为学生子系统、课程子系统、权限子系统。
3.1.4 可测试性
不宜划分过多的子系统。
3.1.5 可观测性
运行过程中打印相关日志,便于排查问题。采用常用的 log4j 即可。
3.1.6 成本
由于对于高性能、高可用、可扩展要求不高,所以成本不宜过高。
3.2 总体架构
外包学生管理系统是学校内部使用的独立的系统,不与其它系统有交互,故无需画出系统边界白盒图。
系统架构图也是部署架构图如下:
应用架构图如下:
功能示意图如下:
外包学生管理系统由 3 个子系统组成:学生子系统、课程子系统、权限子系统。其中,权限子系统是基础子系统,学生子系统、课程子系统均依赖它,从它那获取用户是否有权限访问当前资源;学生子系统主要负责学生相关信息的管理,当进行课程相关操作时,则需要访问课程子系统;课程子系统主要负责课程相关信息的管理,必要时也需要访问学生子系统。
4. 详细设计
4.1 核心功能
4.1.1 学生选课流程
4.2 关键设计
1)消息存储可靠性
消息存储在 MySQL 中,每个分组有一主一备两台 MySQL 服务器,MySQL 服务器之间复制消息以保证消息存储高可用。如果主备间出现复制延迟,恰好此时 MySQL 主服务器宕机导致数据无法恢复,则部分消息会永久丢失,这种情况不做针对性设计,DBA 需要对主备间的复制延迟进行监控,当复制延迟超过 30 秒的时候需要及时告警并进行处理。
2)安全性
防止未登录用户访问系统;
防止 sql 注入
4.3 设计规范
1) 学生子系统、课程子系统、权限子系统均采用 Spring Boot 框架开发
2) Mysql 采用一主一从架构,使用 Innodb 存储引擎
3) 3 个子系统之间接口调用采用 http 协议,数据包格式采用 json
4) 子系统之间接口访问超时时间:5 秒
5. 质量设计
5.1.4 可测试性
不宜划分过多的子系统。
5.1.5 可观测性
运行过程中打印相关日志,便于排查问题。采用常用的 log4j 即可。
5.1.6 成本
由于对于高性能、高可用、可扩展要求不高,所以成本不宜过高。
6. 演进规划
开发阶段快速迭代,小步快跑,等基本完善后正式推出给其他人用
版权声明: 本文为 InfoQ 作者【小朱】的原创文章。
原文链接:【http://xie.infoq.cn/article/4564389568bf66620c04f519e】。文章转载请联系作者。
评论