外包学生管理系统的架构设计
前言
本文是学生管理系统的架构详细架构设计文档,用于指导消息队列后续的开发、测试和运维
1. 业务背景
随着学校的规模的不断扩大,学生数量的增加,需要处理的信息也日趋增大。不仅花费大量的教师源,处理效率也十分低下。
为提高学生管理的管理水平,优化资源,尽可能降低管理成本成为学生管理的新课题,学生管理系统是从学生管理现状出发,根据学生管理的新要求进行开发设计的,它需要解决学生信息管理数据信息量大修改
不方便,对一系列数据进行分析时花费时间长等问题,帮助学生管理人员有效管理学生信息。
因此学生信息管理系统可以通过系统规范化地管理、科学性统计和快速查询、修改、增加、删除等,提高
信息的准确度以及日常管理的工作效率。
本系统主要是应用于学生各类信息的管理,总体任务是实现学生信息关系的系统化、规范化、自动化,其主要任务是统计学生各类信息进行日常管理,如查询、修改、增加、删除、以及学生选课、成绩的查询等功能设计的管理系统。
2. 约束和限制
1.学校已有机房 包含四台服务器
2.学校有现有 MySql 数据库
3. 总体架构
3.1 架构分析
1.高并发:学生数量不多高并发的复杂度不是很高
2.高可用:学生管理系统可以接受的当机时常较高,但数据库数据不能全部丢失需要做数据库的主备
3.可扩展:需求基本稳定
3.2 总体架构
1)采用 Nginx 反向代理做任务分配
2)每个分组包含一台主 MySQL 和一台备 MySQL,分组内主备数据复制,分组间数据不同步。
3)正常情况下,分组内的主服务器对外提供消息写入和消息读取服务,备服务器不对外提供服务;主服务 器宕机的情况下,备服务器对外提供消息读取的服务。
4. 详细设计
1.采用多服务架构,划分为 学生子系统,课程子系统,权限子系统
2.子系统服务器使用 Spring Boot 开发
4.1 核心功能
4.1.1 学生注册流程
1.学生通过浏览器提交注册信息
2.Nginx 分析学生请求的域名返向代理到学生子系统
3.学生子系统保存学生的注册信息到 MySql 主库
4.MySql 主库同步到 MySql 备库
4.1.2 学生选课流程
1.学生通过浏览器提交选课信息
2.Nginx 分析学生请求的域名返向代理到学生子系统
3.课程子系统将收到的信息进行业务处理并保存到 MySql 主库
4.MySql 主库同步到 MySql 备库
4.2 关键设计
1.各业务子系统采用 Http 无状态请求调用 WebApi 方式 接收前端发来的请求,
Api 设计要符合 ResFul 接口规范
2.请求包头统一包含以下内容:
{
"requestID":123456,
"time":"2021-0727",
"api":"StudentManage",
"caller":"StudentService"
}
4.3 设计规范
1)子系统服务器使用 Spring Boot 开发
2)MySQL 使用 Innodb 存储引擎
3) API 采用 Resful 风格
5. 质量设计
5.1 学生管理系统管理后台开发权限给部分老师和管理员
6. 演进规划
一次性交付,无需考虑太多后期演化,后期可加入扩展服务器添加新功能
评论