学生管理系统详细架构设计文档
前言
词汇表
1. 业务背景
目前,随着学校规模日益增大,学生人数不断增长,在处理大量学生信息时,耗费大量教师人力资源,且效率仍旧低下。为了提高学生信息维护和管理效率,提高信息录入速度,对学生信息规范管理,以及对相关信息进行科学统计。现需要建设一个学生信息管理系统,本系统主要是应用于学生各类信息的管理,总体任务是实现学生信息关系的系统化、规范化、自动化,其 主要任务是统计学生各类信息进行日常管理,如查询、修改、增加、删除、以及学生选课、成绩的查询等 功能设计的管理系统。
2. 约束和限制
3. 总体架构
3.1 架构分析
为满足系统可用性需求,需要做集群部署,由单独的 Nginx 服务器进行负载转发给不同的集群应用。
3.1.1 高可用
生管理系统对学生信息保存的可用性有一定要求,要保证全量数据安全,防止大面积丢失数据,因此架构中设计采用 MySql 主备模式,准实时备份数据到备机保证数据不丢失。
3.1.2 可扩展
学生管理系统业务规则较多,需要对业务模块进行拆分,具体拆分为学生子系统、课程子系统和权限子系统。让各个子系统相对独立,便于后期版本扩展迭代。
3.2 总体架构
1)接入层使用 Nginx 作为路由转发,将请求转发到各个子系统的集群机器上。
2)应用层按照业务功能划分三个子系统进行分布式集群部署,每个子系统部署三台机器通过 Nginx 进行负载均衡 RPC 调用,保证系统高可用。
3)存储层包含一台主 MySQL 和一台备 MySQL,主备数据采用半同步复制方式,每日备份一次全量数据,兼顾存储效率与和数据安全。
4. 详细设计
4.1 核心功能
4.1.1 学生作业、笔记信息上传下载功能
4.1.2 课程管理
4.1.2 考试管理
4.2 关键设计
1)学生管理系统数据安全和可靠性
Mysql 采用主备架构,运用 3m 策略在主数据库故障时,通过 vip 虚拟节点自动切换备机,实现数据存储高可用。
2)学生管理系统可扩展拆分
将应用分为学生子系统、教师子系统和权限子系统,学生子系统中包含个人管理注册模块、文件上传下载模块、选课模块。教师子系统中包含考试模块、题库模块、课程模块。权限子系统包含登陆单点校验、权限验证等模块功能。
4.3 设计规范
1)学生管理系统各应用服务使用 Spring Boot2.x 作为基础开发框架。
2)MySQL 使用 Innodb 存储引擎。
3)客户端调用后台服务接口采用 restfulAPI 方式调用,依赖 Nginx 做负载转发,采用轮询策略作为负载算法。
4)子系统间采用 http 方式进行调用,数据格式为 json,并采用 springboot2.x 作为开发框架,接口响应时间不超过 50ms。
5. 质量设计
6. 演进规划
6.1 学生管理系统一期
包含基本的学生信息录入、权限管理、考勤管理、笔记试卷等文件上传下载功能、课程录入、人工排课、选课功能。
6.2 学生管理系统二期
实现自动排课、题库自动生成试题、通过外设进行签名等功能
评论