外包学生管理系统架构方案
前言
本文是学生管理系统的架构设计文档,目标是指导学生管理系统的开发、测试、交付以及运维。
词汇表
Nginx:一个高性能的反向代理服务,是系统请求的入口。
MySQL:开源关系性数据库管理系统,用作结构化数据的存储。
一、业务背景
随着学校的规模的不断扩大,学生数量的增加,需要处理的数据也日益增长。纯人工处理这些数据的矛盾日益凸显,主要有如下几个:
需要消耗大量的人力资源进行重复、枯燥的数据处理工作;
人工处理数据不具有稳定性,也没有固定的流程和规范,不同的人处理的质量有差别;
在数据处理的高峰时段比如开学、选课等,学生等待的时间过长。
为提高学生相关数据的管理效果,优化人力资源、稳定数据处理质量、提升数据处理效率,进而提升整体教学流程质量,一个实用的学生管理系统尤为必要。
本系统主要是应用于学生各类信息的管理,总体任务是实现学生信息关系的系统化、规范化、自动化,其主要功能是统计学生各类信息进行日常管理,如查询、修改、增加、删除、以及学生选课、成绩的查询等功能设计的管理系统。
二、约束和限制
2022 年 7 月 30 日前完成;
系统一次性投入成本不超过 100 万月;
处于数据安全的考虑,系统部署在学校已有机房;
三、架构设计
3.1 架构分析
下面根据业务背景对系统的扩展性、性能、可用性进行分析。
3.1.1 扩展性分析
学生管理系统的业务复杂度较低,且业务发展也较为稳定,因此,拆分成功能聚合度高的子模块进行开发即可。
3.1.2 性能分析
学生管理系统的目标用户为学生和相关的教职工,数量级为万级,且不存在特别明显的高峰,因此不需要复杂的架构来支撑性能。
3.1.3 可用性分析
学生管理系统的可用性主要体现在数据可用性,因此数据库需要是主备结构来满足这个要求。
3.2 总体架构
整个系统的入口是 Nginx,业务系统有 3 个子系统:学生子系统、课程子系统、权限子系统。数据都存储在 MySQL 中,MySQL 采用主备模式实现数据高可用。
3.3 架构详细描述
3.3.1 架构层次(rank)
如 3.2 中的架构图,整体架构分为 3 个层次,依次为 Nginx、业务系统(前端和服务端)、数据库。对于 Ngxin 和 MySQL 主要是安装、启动、配置和少量的脚本编写(运维);中间的业务系统实现业务逻辑,需要进行开发,为了提升开发效率,采用 spring-boot 技术栈进行开发,子系统间的 api 通过 restful 接口暴露,实现子系统间的交互以及前端、服务端之间的交互。
3.3.2 架构的角色(role)和关系(relation)
架构中的角色如下:
Nginx:反向代理、负载均衡,系统入口。
业务系统实现具体业务功能,其分为 3 个子系统,各个子系统的角色如下:
学生子系统,该子系统实现学生数据录入、学生注册、学生数据维护功能。
课程子系统,该子系统实现课程数据录入、选课、排课、作业下发、作业提交、课程资料发布、课程讨论功能。
权限子系统,该子系统实现角色管理、角色权限管理、用户管理、用角色管理功能。
各个子系统间的交互通过 http 协议,对外暴露 restful 的 api,提供服务能力。
MySQL:数据库,实现数据存储。为各个子系统创建各自的数据库。
3.3.3 架构的规则(rule)
系统数据初始化
系统数据初始化数据分为两块:系统运行的初始化数据由系统管理员完成,业务数据的初始化由接口老师完成。
学生数据初始化
系统正式运行后,学生数据的初始化工作由学生按系统要求自主填报,并由老师审核后生效。获得对应的权限。
课程数据维护
课程数据由学校课程维护人员按照实际教学需求维护。
评论