模块三作业:外包学生管理系统架构文档
写出外包学生管理系统的架构文档
【作业要求】
1. 基于模块 1 第 5 课 P15 页的外包学生管理系统备选架构 1(见下 1 页),写出完整的架构设计文档;
2. 注意不是备选架构文档,而是最终落地的详细架构设计文档;
3. 无需考虑数据库表设计,因为表设计是方案设计阶段做的,不是架构设计阶段做的;
【提示】
1. 架构设计文档是完整的文档(Word 或者语雀文档之类的都可以),而不是 PPT;
2. 架构文档涵盖的内容请参考模块 3 第 4 课,细化架构设计参考模块 3 第 6 课;
3. 外包学生管理系统的业务请参考模块 1 第 5 课的课件;
4. 架构文档模板可以参考:架构实战营详细架构设计文档模板
前言
本文是 X 大学学生管理系统需求详细架构设计文档,用于指导学生管理系统后续的开发、测试和运维。
词汇表
Nginx:高性能的 HTTP 和反向代理 web 服务器
Mysql:关系型数据库管理系统
1. 业务背景
随着学校的规模的不断扩大,学生数量的增加,需要处理的信息也日趋增大。不仅花费大量的教师资源,处理效率也十分低下。
为提高学生管理的管理水平,优化资源,尽可能降低管理成本成为学生管理的新课题,学生管理系统是从学生管理现状出发,根据学生管理的新要求进行开发设计的,它需要解决学生信息管理数据信息量大修改不方便,对一系列数据进行分析时花费时间长等问题,帮助学生管理人员有效管理学生信息。
因此学生信息管理系统可以通过系统规范化地管理、科学性统计和快速查询、修改、增加、删除等,提高信息的准确度以及日常管理的工作效率。
本系统主要是应用于学生各类信息的管理,总体任务是实现学生信息关系的系统化、规范化、自动化,其主要任务是统计学生各类信息进行日常管理,如查询、修改、增加、删除、以及学生选课、成绩的查询等功能设计的管理系统。
2. 约束和限制
必须在 2022 年 1 月 31 日开学前完成
成本不能超过 30 万
尽可能保证数据安全
3. 总体架构
待补充:系统边界白盒图
3.1 架构分析
3.1.1 高可用
系统要保证一定的可靠性,数据不可完全丢失,在意外丢失部分数据后,可人工进行补录;
可容忍的宕机时间为小时级,学生时间相对充裕,偶尔宕机不会影响使用。
3.1.2 高性能
在校学生数量预计:大一至大四每级 5 千人,共 20000 人,研究生博士生共 7000 人,教职工人数 3000 人。
待完善,结论应该是高性能问题不存在
估算 TPS QPS
3.1.3 可扩展
为了后续业务需求的复杂度和变化性,需要在一定程度上满足可扩展性。
综合来看,学生管理系统需要满足数据高可用和功能需求可扩展。
3.2 总体架构
1)平台拆分为“学生子系统”、“课程子系统”、“权限子系统”三个模块,降低因为一台服务器故障对其他功能造成的影响
2)数据库使用 MySQL 主备方案,保证数据的安全,当主库宕机或损坏,切换到备机继续运行,并恢复主库。
3)使用 Nginx 将请求分发到相应的服务器
4)后续扩展功能只需要在相应的模块中添加补充或者新增模块。
4. 详细设计
4.1 核心功能
4.1.1 学生管理
待补充序列图
4.1.2 课程管理
待补充序列图
4.1.3 考试管理
待补充序列图
4.1.4 权限管理
待补充序列图
4.2 关键设计
业务拆分成三个模块,利于以后平台复杂功能的扩展
利用 Nginx 反向代理,将请求分发到相应的服务器,不影响其他模块功能及性能
数据库采用主备存储,一定程度上保证了数据的可靠性,降低数据丢失的风险,当主库宕机,人工切换至备库。
前后端基于 HTTP+JSON 进行数据交互
4.3 设计规范
业务模块开发使用 Spring Boot + Mybatis
MySQL 使用 InnoDB 存储引擎
数据传输使用 HTTP+JSON
5. 质量设计
5.1 可测试性设计
单元测试
5.2 可维护性设计
运维以人工为主
5.3 可观测性设计
操作日志查询
5.4 安全/成本设计
数据不完全丢失;
成本控制在 30W;
6. 演进规划
6.1 项目一期
完成“学生子系统”、“课程子系统”、“权限子系统”功能的开发、测试、上线
6.2 项目二期
上线运行后,根据实际运行情况进行功能调整、完善
建立服务监测模块
版权声明: 本文为 InfoQ 作者【dean】的原创文章。
原文链接:【http://xie.infoq.cn/article/48dd608b1794858325c0ad08b】。文章转载请联系作者。
评论