前言
本文是外包学生管理系统详细架构设计文档,用于指导外包学生管理系统后续的开发、测试和运维。
词汇表
MySQL: 关系型数据库管理系统
Nginx: 高性能的HTTP反向代理Web服务器。
1. 业务背景
随着学校的规模的不断扩大,学生数量的增加,需要处理的信息也日趋增大。由此带来了几个明显的问题。
1. 效率问题:学生数量的增加,需要处理的信息也日趋增大,不仅花费大量的教师资源,处理效率也时分底下。
2. 成本问题:学生信息管理数据信息量大修改不方便,对一些列数据进行分析时花费时间长,很难科学性统计和快速查询,修改,增加,删除学生信息。
基于以上背景,我们需要一个学生管理系统应来解决实现学生信息关系的系统化,规范化,自动化,来完成统计学生各类信息日常管理任务,如查询,修改,增加,删除,以及学生选课,成绩的查询等功能。
2. 约束和限制
1.成本不能超过1000万
2.数据库采用MySQL
3.质量标准符合ISO9001-XXXX标准
3. 总体架构
学生通过学生子系统进行系统的登录和注册,以及学生信息的完善,学生可以通过课程子系统进行课程的查看以及课程的选课,老师可以进行课程的查看以及修改课程。
3.1 架构分析
3.1.1数据高可用
对于学生管理系统来说,数据不要全部丢失,一旦全部丢失后,人工成本将非常高。
3.1.2可扩展
对于学生管理系统来说,业务需求比较复杂,所以我们拆分多个子系统来针对这个。
3.2 总体架构
1)采用数据库主备的架构,包含一台主MySQL和一台备MySQL,主备数据复制。
2)拆分多个子系统来实现。
3)通过Nginx反向代理到不同的子系统中。
4. 详细设计
4.1 核心功能
4.1.1 学生登录注册
学生管理系统设计1个角色:学生
学生登录,通过学生子系统进行登录,然后通过权限子系统判断当前登录的学生是否有相关的登录权限。
学生注册,通过学生子系统进行注册,然后通过权限子系统针对当前注册的账号进行学生权限的赋能。
4.1.2 学生选课
学生选课,通过课程子系统进行选课,通过权限子系统来判断当前学生是否有该课程的权限。
4.2 关键设计
1)数据存储可靠性
学生数据存储在MySQL中,一主一备两台MySQL服务器,MySQL服务器之间复制消息以保证消息存储高可用。如果主备之间复制延迟,恰好此时MySQL主服务器宕机导致数据无法恢复,则部分学生数据会永久丢失,这种情况,不做正对性设计,DBA需要对主备件的复制延迟进行监控,当复制延迟超过30秒的时候需要及时警告并进行处理。
4.3 设计规范
1)子系统服务器使用Spring Boot + Tomcat开发;
2)MySQL使用Innodb存储引擎;
3)服务间接口数据采用JSON格式;
4)服务间接口的响应时间不超过50ms;
5. 质量设计
5.1 可测试性
5.2可维护性
5.3可观测性
5.4成本设计
6. 演进规划
第一期先完成这个,后期可以根据服务访问量来决定是否合并子系统,和拆分更加细的子系统。