写点什么

模块三作业 外包学生管理系统详细架构设计

作者:小朱
  • 2021 年 11 月 15 日
  • 本文字数:1360 字

    阅读完需:约 4 分钟

外包学生管理系统

 

前言

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

 

词汇表

 

1. 业务背景

随着学校规模的扩大,要处理的学生信息管理数据量越来越多,统计学生相关数据信息花费时间越来越长,学生信息管理效率日趋低下。因此,提高信息的准确度和日常管理的工作效率显得非常有必要。基于以上背景,我们需要实现外包学生管理系统,总体任务是实现学生信息管理的系统化、规范化、自动化,主要任务是学生各类信息日常管理(新增、修改、查询、删除)及学生选课、数据统计等功能的实现。


2. 约束和限制

题目要求采用备选架构一将系统拆分为学生子系统、课程子系统、权限子系统。

数据不能全部丢失。

 

3. 总体架构

3.1 架构分析

3.1.1 高性能

计算高性能:系统用户为学校学生、老师、辅导员,用户量不大,并发访问量不大,所以不需要考虑计算高性能。

存储高性能:用户量不大,访问量不大,所以不需要考虑存储高性能。采用常用关系型数据库比如 MySQL 就可以。

3.1.2 高可用

计算高可用:由于是学校内部自己使用的系统,如果应用服务器短时宕机仍能接受,所以不需要考虑计算高可用。不需要

存储高可用:可以容忍系统数据少量丢失,少量丢失的数据可以人工修复。但是不能容忍大量甚至全部数据丢失,故需要考虑存储高可用。

3.1.3 可扩展

按题目要求将系统拆分为学生子系统、课程子系统、权限子系统。

3.1.4 可测试性

不宜划分过多的子系统。

 

3.1.5 可观测性

运行过程中打印相关日志,便于排查问题。采用常用的 log4j 即可。

 

3.1.6 成本

由于对于高性能、高可用、可扩展要求不高,所以成本不宜过高。

 

3.2 总体架构

外包学生管理系统是学校内部使用的独立的系统,不与其它系统有交互,故无需画出系统边界白盒图。

系统架构图也是部署架构图如下:


应用架构图如下:


功能示意图如下:


外包学生管理系统由 3 个子系统组成:学生子系统、课程子系统、权限子系统。其中,权限子系统是基础子系统,学生子系统、课程子系统均依赖它,从它那获取用户是否有权限访问当前资源;学生子系统主要负责学生相关信息的管理,当进行课程相关操作时,则需要访问课程子系统;课程子系统主要负责课程相关信息的管理,必要时也需要访问学生子系统。

 

4. 详细设计

4.1 核心功能

4.1.1 学生选课流程


4.2 关键设计

1)消息存储可靠性

消息存储在 MySQL 中,每个分组有一主一备两台 MySQL 服务器,MySQL 服务器之间复制消息以保证消息存储高可用。如果主备间出现复制延迟,恰好此时 MySQL 主服务器宕机导致数据无法恢复,则部分消息会永久丢失,这种情况不做针对性设计,DBA 需要对主备间的复制延迟进行监控,当复制延迟超过 30 秒的时候需要及时告警并进行处理。

2)安全性

防止未登录用户访问系统;

防止 sql 注入

4.3 设计规范

1)   学生子系统、课程子系统、权限子系统均采用 Spring Boot 框架开发

2)   Mysql 采用一主一从架构,使用 Innodb 存储引擎

3)   3 个子系统之间接口调用采用 http 协议,数据包格式采用 json

4)   子系统之间接口访问超时时间:5 秒

5. 质量设计

5.1.4 可测试性

不宜划分过多的子系统。

 

5.1.5 可观测性

运行过程中打印相关日志,便于排查问题。采用常用的 log4j 即可。

 

5.1.6 成本

由于对于高性能、高可用、可扩展要求不高,所以成本不宜过高。

 

6. 演进规划

开发阶段快速迭代,小步快跑,等基本完善后正式推出给其他人用

 

发布于: 2 小时前阅读数: 7
用户头像

小朱

关注

还未添加个人签名 2021.06.29 加入

还未添加个人简介

评论

发布
暂无评论
模块三作业 外包学生管理系统详细架构设计