模块三课后作业 - 详细架构设计文档 - 外包学生管理系统
前言
本文是外包业务学生管理系统的详细架构设计文档,用于指导学生管理系统的开发、测试和运维。
词汇表
Nginx:轻量级的高性能的 HTTP 和反向代理 web 服务器。
MySQL:最流行的关系型数据库管理系统
SpringBoot:简化配置来进一步简化了 Spring 应用搭建的
MyBatis:开源的持久层框架,它支持定制化 SQL、存储过程以及高级映射。
1 业务背景
随着学校的规模的不断扩大,学生数量的增加,需要处理的信息也日趋增大。不仅花费大量的教师资源,处理效率也十分低下。
为提高学生管理的管理水平,优化资源,尽可能降低管理成本成为学生管理的新课题,学生管理系统是从学生管理现状出发,根据学生管理的新要求进行开发设计的,它需要解决学生信息管理数据信息量大修改不方便,对一系列数据进行分析时花费时间长等问题,帮助学生管理人员有效管理学生信息。
因此学生信息管理系统可以通过系统规范化地管理、科学性统计和快速查询、修改、增加、删除等,提高信息的准确度以及日常管理的工作效率。
本系统主要是应用于学生各类信息的管理,总体任务是实现学生信息关系的系统化、规范化、自动化,其主要任务是统计学生各类信息进行日常管理,如查询、修改、增加、删除、以及学生选课、成绩的查询等功能设计的管理系统。
2 约束和限制
1)、必须在 2022.03.30 号完成
2)、数据库采用 MYSQL
3)、要求通过公网域名访问
4)、在校学生和教辅人员的人数在 6000 左右,需支持最大在线访问人数在 2000
5)、学校经济条件不算太好,需要在一定程度上考虑成本,但是也要兼顾质量。
3 总体架构
系统边界白盒图
3.1 架构分析
3.1.1 高性能
支撑管理 6000 个学生,一般系统均可满足需求,高性能要求较低。
3.1.2 高可用
对于外包学生管理系统,如果个别学生数据丢失,可采用人工方式或通过备份找回数据,但如果数据服务器损坏或大批量数据遗弃,则问题很严重。所以,对数据高可用有要求。
3.1.3 可扩展
为了后续业务需求的复杂度和变化性,需要在一定程度上满足可扩展性。
3.1.4 安全、成本
需要在一定程度考虑成本,为学校节约成本。安全方面,学校未做过多要求。
综合来看,外包学生管理系统需要满足可扩展和数据高可用,包括业务功能需求可扩展,数据存储高可用
3.2 总体架构
(1)、采用数据主从备份架构,服务器按业务功能拆分,每台服务器布署一个子系统。
(2)、通过 Nginx 反向代理对请求进行转发,按不同业务请求转发到对应业务子系统服务器。
(3)、学生、课程、权限三大子系统,分别对应一台服务器,只是拆分成子系统,并非微服务设计。
(4)、存储上,包括一台主 MYSQL 和一台备 MYSQL,实现主备数据复制。
4 详细设计
4.1 核心功能
系统时序图-课堂成绩:
系统时序图-考试成绩:
业务架构图:
4.2 关键设计
(1)、Nginx 请求按业务分流转发,采用前后端动静分离,具体比较不错的性能,保守估计可支撑 10000 人以下的在线访问。
(2)、三个子系统按业务功能,分别布署在三台服务器上,各个业务子系统,可以单独开发、测试、上线,降低耦合,具有很好的灵活性和扩展性。
(3)、数据库存储,采用 Mysql 主从备份,提供最好的灾备能力,并能保证一定时间内的数据一致性。
(4)、硬件 5 台服务器,相对成本不算高,并且按功能布署的三台业务服务器,具有相对较高的性能。
4.3 设计规范
(1)、 后端使用 SpringBoot、Mybatis、Shiro 框架,用 Maven 对项目工程进行管理和拆分。
(2)、数据库 MySQL,使用 Innodb 存储引擎。
(3)、前后端分离,前端采用 Vue 框架实现。
(4)、前端静态页面、JS、图片等资源,部署在 Ngnix 上
(5)、前后端通讯、服务调用采用 http 协议,json 数据交换格式 ;
服务调用使用 httpClient 发送和接收。
5 质量设计
5.1 可测试性
不用考虑
5.2 可维护性
不用考虑
5.3 可观测性
除系统日志外,对重要业务操作、权限操作日志、管理授权、用户登陆需要提供日志查询界面。
5.4 成本、安全
按照采购硬件计算成本,不再做减少其他成本支出;
没有特殊安全要求,采用常规安全级别。
6 演进规划
6.1 一期
按照业务需求,完成各个子系统的交付,满足教师、学生、辅导员、管理的日常使用。
6.2 二期
根据客户需求,完善报表、监控等功能。
评论