写点什么

架构训练营模块三作业

作者:钟文苑
  • 2021 年 12 月 30 日
  • 本文字数:1321 字

    阅读完需:约 4 分钟

前言

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

词汇表

Nginx :是一个高性能的 HTTP 和反向代理 web 服务器

1. 业务背景

随着学校的规模的不断扩大,学生数量的增加,需要处理的信息也日趋增大。不仅花费大量的教师资源,处理效率也十分低下。

  • 优化资源:为提高学生管理的管理水平,尽可能降低管理成本成为学生管理的新课题,学生管理系统是从学生管理现状出发,根据学生管理的新要求进行开发设计的,它需要解决学生信息管理数据信息量大修改不方便,对一系列数据进行分析时花费时间长等问题,帮助学生管理人员有效管理学生信息。

  • 提高效率:学生信息管理系统可以通过系统规范化地管理、科学性统计和快速查询、修改、增加、删除等,提高信息的准确度以及日常管理的工作效率。

基于以上两点,本系统主要是设计应用于学生各类信息的管理,总体任务是实现学生信息关系的系统化、规范化、自动化其主要任务是统计学生各类信息进行日常管理,如查询、修改、增加、删除、以及学生选课、成绩的查询等功能设计的管理系统。

2. 约束和限制

学生管理系统存在以下限制:

  1. 出现故障时允许丢失当时请求的数据,已经存储的数据不允许丢失。

  2. 不同角色的权限不同

3. 总体架构

3.1 架构分析

3.1.1 高性能分析

由于学校的学生数量有限,系统峰值 QPS 不会超过一千,所以不需要高性能。

3.1.2 高可用分析

由于学校的教学任务并不需要依赖学生管理系统,所以可以容忍学生管理系统的停机维护或问题修复。但是学生管理系统需要保证学生信息的不丢失。

3.1.3 可扩展分析

学校学生数量不会发生很大变化,系统架构设计好之后可以用很多年,不需要更多的接口扩展。

3.2 总体架构

1、通过 Nginx 接入,将请求转发到不同的子系统:学生子系统、课程子系统和权限子系统。

2、数据库采用一台主 MySQL 和一台备 MySQL,主备数据复制,保证数据高可用。正常情况下,主服务器对外提供消息写入和消息读取服务,备服务器不对外提供服务;主服务器宕机的情况下,备服务器对外提供数据读取的服务。

4. 详细设计

4.1 核心功能

4.1.1 学生管理

4.1.1.1 系统登录

4.1.1.2. 账号分配

4.1.1.3 账号绑定

4.1.1.4. 组织管理层级

4.1.1.5. 文件上传/下载

4.1.1.6. 信息查询

4.1.2 课程管理

4.1.2.1. 课程录入

4.1.2.2. 选课功能

4.1.2.3. 排课功能

4.1.2.4. 教材选择

4.1.3 权限管理

4.1.3.1. 角色管理

4.2 关键设计

[必选,描述系统的一些关键设计点是如何实现和取舍的]

4.2.1 数据库存储设计

数据库中包含学生表,权限定义表,课程表,以及选课表

其中学生表保存学生的基本信息、身份确认信息和权限级别;

权限定义表供权限管理子系统使用,用来定义各种不同等级的权限,即对不同权限可以使用哪些功能进行边界确定;

课程表用来定义各种课程信息,包含先修课,年级,专业等等;

选课表用来定义学生的选课信息。

4.3 设计规范

  1. 服务器基于 Java 语言,采用 SpringBoot 框架开发

  2. MySQL 使用 Innodb 存储引擎

  3. 基于 Mybatis,操作 MySQL 数据库

  4. 服务器依托于 Nginx 作为反向代理

  5. 客户端与服务器,采用 HTTPS 交互,采用 JSON 传递数据

5. 质量设计

5.1 可测试性

对各个子模块建立功能测试流程,保证整体功能可验证。

5.2 可观测性

对系统的关键指标进行监控,包括在线人数、访问功能、系统负载等信息。

6. 演进规划

发布于: 刚刚
用户头像

钟文苑

关注

还未添加个人签名 2020.02.28 加入

还未添加个人简介

评论

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