外包学生管理系统 - 架构设计文档
前言
本文是外包学生管理系统详细架构设计文档,用于指导外包学生管理系统的开发、测试和运维
修订历史
——————————————————————————
| 版本号 | 变更内容 | 修订者 | 日期 |
——————————————————————————
| V1.0 | 编写设计文档 | 八一君 | 2022/12/26 |
——————————————————————————
词汇表
VUE :前端架构
Druid :数据库连接池
Dubbo:远程架构调用框架
Nginx:负载均衡
1 业务背景
由于学生数量众多,线下存储学生相关信息存在相当大的困难,且浪费人力物力。基于此背景我们要实现以下功能
实现学生信息线上录入功能,方便查询
实现课程线上维护,便于学生对课程的选择、分数的查看
实现老师和学生不同身份在系统的协同操作
2 约束和限制
必须使用 MySQL
必须在 2022.06.30 日完成
费用不可超过 100 万
数据不可丢失
3 总体架构
业务架构图
系统架构图
3.1 架构分析
3.1.1 高性能
支撑 1000 人访问,系统允许短暂不可访问,不会影响学校整体管理,学校教学不是太依靠该系统来管理所以高可用要求不高,后续有需要可扩展多台业务服务器处理。
3.1.2 高可用
存储设备一主一备,保障数据不丢失
3.1.3 可扩展
目前主要的模块分为学生管理、课程管理、权限管理,后续可再拓展其他模块如活动管理
3.1.4 成本
框架采用 MVC,组件也都采用开源节约成本
3.2 总体架构
采用 Nginx 进行负载
协议层控制可以灵活更换访问协议,dubbo 或 HTTP
多子系统方便后续扩展
开源数据库连接池便于维护
MySQL 主备防止数据丢失
4 详细设计
4.1 核心功能
4.1.1 学生登录
4.1.2 教师登录
4.2 关键设计
4.2.1 可扩展
系统拆分为多个子系统,具有可插拔性,通过权限系统配置灵活使用,为后期扩展铺好道路
4.2.2 安全
数据库采用一主一备,当主数据库发生问题时可以切换备库使用,不影响系统的实用性;待主库修复好可采用 binlog 同步信息恢复使用
4.3 设计规范
整体采用 SpringMvc 架构
前段架构采用 VUE
协议采用 HTTP 协议
数据传输使用 JSON 格式
MySQL 引擎采用 Innodb
数据库连接池使用 Druid
5 质量设计
5.1 可测试性
系统整体架构较简单,分成 3 个子系统可以做单接口测试,也可全链路测试,易于测试
5.2 可维护性
Nginx 应用已比较广泛、且业务子系统不多,数据库也只有一主一备,易于维护
5.3 可观测性
系统具有 log 能力,日常运营可通过日志观察处理
学校学生人数比较稳定,mysql 统计数据能力也可以处理
5.4 成本
都采用开源组件,都是免费
系统架构简单,不需要太多人参与,节省人力
6 演化规化
第二期可扩展子模块 考试管理、活动管理,方便查询成绩以及学校组织活动管理
第三期可扩展业务系统机器数量和存储 mysql 数量,优化权限系统接入多学校使用
评论