写点什么

架构训练营模块三作业

作者:沈益飞
  • 2021 年 12 月 29 日
  • 本文字数:1041 字

    阅读完需:约 3 分钟

前言

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

词汇表

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

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

用户头像

沈益飞

关注

还未添加个人签名 2018.04.02 加入

还未添加个人简介

评论

发布
暂无评论
架构训练营模块三作业