模块三:学生管理系统详细架构设计
前言
本文是《学生管理系统》详细架构设计文档,用于知道后续的开发、测试与云纹
词汇表
1. 业务背景
随着学校的规模的不断扩大,学生数量的增加,需要处理的信息也日趋增大。亟需解决以下问题:
(1)效率问题:花费大量的教师资源,重复处理数据。业务发快速的科学性的统计以及快速查询。
(2)新高考:随着新高考的落地,需要落地走班排课,选课等各种问题。
(3)考试成绩:家长无法方便快捷查询考试成绩
(4)数据分析与挖掘:没有对试卷及相应知识点做数据挖掘与分析
2. 约束和限制
(1)项目需要再 2022 年 5 月 31 日完成
(2)总体成本不超过 100 万
(3)数据库使用 mysql,需要兼容达梦或瀚高等国产数据库。在开发中只能使用标准的 SQL 语句。
(4)jdk 版本采用 java17
(5)保证数据安全性,不能有大规模数据丢失。
(6)系统部署在教育网内,原则上与互联网不互通。
(7)符合等保二级的要求
3. 总体架构
3.1 架构分析
[可选,这部分主要是架构复杂度的分析,基本上从备选架构文档中提炼关键内容过来即可]
[样例:
3.1.1 高可用
对于微博子系统来说,如果消息丢了,导致没有审核,然后触犯了国家法律法规,则是非常严重的事情;对于等级子系统来说,如果用户达到相应等级后,系统没有给他奖品和专属服务,则 VIP 用户会很不满意,导致用户流失从而损失收入,虽然也比较关键,但没有审核子系统丢消息那么严重。
综合来看,消息队列需要高可用性,包括消息写入、消息存储、消息读取都需要保证高可用性。
]
[技巧:常见的复杂度都要覆盖到,即使分析后不涉及也要描述,避免评审的时候被人认为遗漏了关键点]
3.1.1 高可靠
保证学生数据、选课数据、考试数据以及其他多媒体文件的存储安全
3.1.2 性能
保证选课、查成绩是下的性能即可,保证 2000qps,1000tps。
3.1.3 可扩展
1.数据库:考虑数据库的国产化。
2.业务各自独立部署。
3.2 总体架构
(1)Nginx:做反向代理与负载均衡
(2)每个分组包含一台主 MySQL 和一台备 MySQL,分组内主备数据复制,分组间数据不同步。
(3)正常情况下,分组内的主服务器对外提供消息写入和消息读取服务,备服务器不对外提供服务;主服务 (4)器宕机的情况下,备服务器对外提供消息读取的服务。
4. 详细设计
4.1 学生新增
4.2 课程设置
4.2 关键设计
1.存储:MySQL 主备设计,并定时备份。
2.接口:包拯幂等。
4.3 设计规范
1.项目使用 SpringBoot 开发
2.数据库只允许使用标准 SQL
3.通讯使用 JSON 格式
4.内部调用使用 RPC 框架
5.MySQL 使用 Innodb
6.所有项目使用开源框架
5. 质量设计
5.1 运维
1.服务器状态监控
2.接口运行状态监控
3.日志完善
5.2 成本
服务器控制在 6 台
5.3 可测试性
单元测试覆盖
6. 演进规划
6.1 功能
1.加入生涯规划
2.加入考试服务
6.2 数据库
适配达梦国产数据库
评论