架构训练营模块三作业
前言
本文是外包学生管理系统详细架构设计文档,用于指导外包学生管理系统后续的开发、测试和运维。
词汇表
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. 演进规划
第一期先完成这个,后期可以根据服务访问量来决定是否合并子系统,和拆分更加细的子系统。
评论