学生管理系统详细设计
前言
本文是学生管理系统详细架构设计文档,用于指导学生管理系统后续的开发、测试和运维。
词汇表
Nginx:Nginx 是异步框架的网页服务器,也可以用作反向代理、负载平衡器和 HTTP 缓存。该软件由伊戈尔·赛索耶夫创建并于 2004 年首次公开发布。2011 年成立同名公司以提供支持。2019 年 3 月 11 日,Nginx 公司被 F5 Networks 以 6.7 亿美元收购。 Nginx 是免费的开源软件,根据类 BSD 许可证的条款发布。
1. 业务背景
学生管理成为学校教学管理中十分重要又相当复杂的管理工作之一,过去传统的靠人力手工登记,已经随着当前学生人数的增多,越来越不符合教育和管理的要求。而计算机的运算速度快,处理能力强等特点,恰好可以解决这一疑难问题。因此为了保证学校的信息流畅,工作高效,设计一个学生管理系统已经是相当有必要。这不但能为广大教工人员减轻了学生管理的工作,而且对于推动教学的发展也起到非常重要的作用。
开发其系统主要是为了帮助广大教师提高工作效率,节约资源,提高学籍信息的精确度,实现学生信息管理工作流程的系统化、规范化和自动化。
2. 约束和限制
必须在 2021.08.31 号完成上线;
成本不能超过 20 万;
支持 2 万名学生及 200 教职工的使用;
保证学员信息数据的安全可靠;
3. 总体架构
3.1 架构分析
3.1.1 高可用
学生管理系统宕机后并不会影响教学的开展,因此学生管理系统的高可用要求并不是很高。
3.1.2 高性能
根据约束和限制里提到的需要支撑 2 万学生及 400 多名教职员工使用可知,在高性能方面无太高要求,一般的硬件服务器及系统架构即可满足日常使用。
3.1.3 可扩展
因学生管理系统的对接的外部系统较多,加上业务需求比较复杂,因此在可扩展性方面要求较高。
3.1.4 成本、安全
由于在约束和限制里明确提出此项目费用不能超过 20 万,因此必须在硬件、人力成本上做控制。
采用阿里云 ECS 及 Mysql 服务器。人员团队数量控制在小于 4 人左右;
同时约束和限制里也提出,不允许丢失学员数据,因此必须保证学员数据的安全,可采用主备数据库保证数据安全;
安全的其他方面依托阿里云的安全服务来保证;
3.2 总体架构
学生管理系统整体作为一个部署单元部署在两台服务器上,前面采用 nginx 做为反向代理两台应用服务器,存储采用 mysql 一主一备,保证存储安全可靠。
所有功能模块在一个工程里,业务复杂度不高时,开发效率高,部署简单
整体架构简单,便于理解
数据存储一主一备,能保证存储安全可靠
4. 详细设计
系统架构图里几个组件起到作用:
Nginx: Nginx 反向代理应用服务器,同时可以起到负载均衡的作用;
业务服务器:即学生管理系统部署运行的服务器。可以通过部署多台业务服务器达到横向扩展的目的;
数据库服务器:数据库主要存储业务数据。采用主备两台数据库服务器保证数据安全;
4.1 核心功能
4.1.1 学生管理功能
4.1.2 考试管理功能
4.1.3 课程管理功能
4.1.4 权限管理功能
4.2 关键设计
数据可靠性:MySQL 以主备方式部署,通过冗余的方式保证数据的可靠性
可扩展性:做好各个功能模块的划分,整个系统划分成大的功能模块:学生管理、课程管理、考试管理、权限管理。在各个模块做到高内聚,面向接口编程实现解耦。方便以后系统的演进;
4.3 设计规范
应用程序使用 Spring Boot 开发
采用 Mybatis 做数据持久化映射
MySQL 采用 5.8 版本, 且表使用 Innodb 存储引擎
接口采用 restful 风格
5. 质量设计
5.1 可测试性
重要核心功能要有相应的单元测试
可通过 swagger ui 来对接口进行测试
5.2 可维护性
因系统都是部署在阿里云上,因此硬件的可维护性可依托阿里云得到保障
系统采用了清晰的模块划分,强制要求面向接口编程,因此软件的可维护性也能有保障
5.3 可观测性
系统使用 springboot actuator 提供接口查看关键状态
同时代码要求记录必要的 log,方便日常系统运行情况的观察
5.4 成本
本系统在保证高可用的前提下一共需要 5 台服务器,将成本尽量控制的很低;
多数都采用开源产品减少投入成本
6. 演进规划
6.1 一期
先上线学生管理、课程管理、考试管理、权限管理这四个功能模块,保证系统满足学生及老师日常教学使用
6.2 二期
对接学校财务系统、就业指导等系统
版权声明: 本文为 InfoQ 作者【缘分呐】的原创文章。
原文链接:【http://xie.infoq.cn/article/d74837dc7aaaf344a1136f4f4】。未经作者许可,禁止转载。
评论