架构实战营 - 模块三作业
前言
本文是学生管理系统详细架构设计文档,用于指导学生管理系统后续的开发、测试和运维
1. 业务背景
随着学校的规模的不断扩大,学生数量的增加,需要处理的信息也日趋增大。不仅花费大量的教师资源,处理效率也十分低下。为提高学生管理的管理水平,优化资源,尽可能降低管理成本成为学生管理的新课题,学生管理系统是从学生管理现状出发,根据学生管理的新要求进行开发设计的,它需要解决学生信息管理数据信息量大修改不方便,对一系列数据进行分析时花费时间长等问题,帮助学生管理人员有效管理学生信息。因此学生信息管理系统可以通过系统规范化地管理、科学性统计和快速查询、修改、增加、删除等,提高信息的准确度以及日常管理的工作效率。本系统主要是应用于学生各类信息的管理,总体任务是实现学生信息关系的系统化、规范化、自动化,其主要任务是统计学生各类信息进行日常管理,如查询、修改、增加、删除、以及学生选课、成绩的查询等功能设计的管理系统。
2. 约束和限制
1.团队只有 3 个人,大家都会 JAVA,有一个是 PHP 高手
2.资金不充裕
3.研发时间不超过 3 个月
3. 总体架构
3.1 架构分析
3.1.1 高性能
学校人员有限,最多万人,无需单独考虑高性能设计
3.1.2 高可用
学生相关数据要确保不能丢失,此处通过主备 mysql 实现热备,
每日定时备份数据,实现冷备。
3.1.3 可扩展
系统包含学生管理、课程管理、考试管理、权限管理,业务需求较复杂、为了后期扩展需求
将系统按业务拆分成学生子系统、课程子系统、权限子系统
学生子系统:学生管理
课程子系统:课程管理、考试管理
权限子系统:权限管理
3.1.4 成本
5 台服务器(8c16)即可满足系统运行需求,成本设计可不考虑
3.1.5 安全
不涉及用户隐私等数据,安全可不考虑
3.2 总体架构
(1)使用 nginx 做反向代理,统一对外出口
(2)学生子系统负责学生管理功能模块、课程子系统负责课程管理和考试管理模块功能、权限子系统负责权限管理模块功能开发
(3)存储使用 mysql,使用主备模式进行部署
4. 详细设计
4.1 核心功能
4.1.1 账号生成
4.1.2 账号登录
4.1.3 组卷
4.2 关键设计
4.2.1 数据高可用设计
(1).热备份:使用 mysql 主从同步实现
(2). 冷备份:按日备份数据
4.2.2 单点登录设计
(1).3 个子系统规划在同一个域名下,通过不同上下文做代理
(2).3 个子系统 tomcat 之间做 session 共享
4.3 设计规范
(1)使用 springboot+springMVC+mybatis 作为子系统开发框架
(2)mysql 使用 innodb 存储引擎
(3)系统之间交互使用 http 协议
5. 质量设计
5.1.1 可测试性
无
5.1.2 可维护性
使用 logback 打印运行日志,协助线上问题定位
5.1.3 可观测性
使用 zabbix 作为运营监控平台
5.1.4 成本
无
5.1.6 安全
使用 shiro 框架做用户权限管控
6. 演进规划
6.1 学生管理系统一期
实现学生管理、课程管理子系统
6.2 学生管理系统二期
实现权限管理
评论