Bootstrap

架构训练营模块三作业

前言

本文是外包学生管理系统详细架构设计文档,用于指导外包学生管理系统后续的开发、测试和运维。

词汇表

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. 演进规划

第一期先完成这个,后期可以根据服务访问量来决定是否合并子系统,和拆分更加细的子系统。