写点什么

【架构实战营】模块三作业

用户头像
Abner S.
关注
发布于: 16 小时前
【架构实战营】模块三作业

外包学生管理系统架构设计

1. 业务背景

随着学校的规模的不断扩大,学生数量的增加,需要处理的信息也日趋增大。不仅花费大量的教师资源,处理效率也十分低下。为提高学生管理的管理水平,优化资源,尽可能降低管理成本成为学生管理的新课题,学生管理系统是从学生管理现状出发,根据学生管理的新要求进行开发设计的,它需要解决学生信息管理数据信息量大修改不方便,对一系列数据进行分析时花费时间长等问题,帮助学生管理人员有效管理学生信息。

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

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

2. 约束和限制

  1. 必须在 2021 年 9 月 1 日开学前完成

  2. 成本不能超过 25 万

  3. 尽可能保证数据安全

  4. 平台设计要遵循国家法律法规、校规校纪

  5. 采用开源免费软件

3. 总体架构

 

3.1 架构分析

3.1.1 高可用

系统平台要保证一定的可靠性,不可完全丢失,在意外丢失部分数据后,可人工进行补充修复,在平时可容忍的宕机时间为小时级,学生时间相对充裕,偶尔宕机不会影响使用。

3.1.2 高性能

在校学生多不超过 5 万人,且更多在学期初和学期末使用,选课等操作时一般是以班级为单位分批次填报,没有特别大的并发量。考试时交卷操作可能会产生一定的并发。

3.1.3 可扩展

业务需求比较复杂,需要一定的扩展性

3.2 总体架构

  • 数据库使用 MySQL 主备方案,保证数据的安全,当主库宕机或损坏,切换到备机继续运行

  • 平台拆分为“学生子系统”、“课程子系统”、“权限子系统”三个模块,降低因为一台服务器故障对其他功能造成的影响

  • 使用 Nginx 将请求分发到相应的服务器

  • 后续扩展功能只需要在相应的模块中添加补充或者新增模块

4. 详细设计

4.1 核心功能

4.1.1 学生课程管理


4.1.2 教师课程管理


4.2 关键设计

  • 数据可用性

数据库采用主备存储,一定程度上保证了数据的可靠性,降低数据丢失的风险,当主库宕机,人工切换至备库,当主库恢复,将宕机前未来及同步数据备份。

  • 业务拆分

业务拆分成三个模块,利于以后平台复杂功能的扩展

  • Ngnix 反向代理

利用 Nginx 反向代理,将请求分发到相应的服务器,不影响其他模块功能及性能

4.3 设计规范

  • 业务模块开发使用 Spring Boot 2.5 + Mybatis 3.3

  • 安全框架使用 Spring Security

  • JDK 采用 Open JDK 1.8+

  • MySQL 使用 InnoDB 存储引擎

  • 数据传输使用 json 格式

5. 质量设计

  • 可测试性

  • 提供可测试 API

  • 可维护性

  • 完善的部署文档

  • 可观测性

  • 管理后台具备系统性能监测功能

  • 记录操作记录可追溯

  • 成本

  • 将项目成本控制在 25 万以下

6. 演进规划

  • 项目一期

  • 在项目截止日期前,完成“学生子系统”、“课程子系统”、“权限子系统”功能的开发,并保证能够正常运行

  • 项目二期

  • 根据校方使用提出的反馈进行修改优化

  • 完善修复项目开发中出现的问题

  • 建立服务监测模块

发布于: 16 小时前阅读数: 15
用户头像

Abner S.

关注

还未添加个人签名 2018.03.16 加入

还未添加个人简介

评论

发布
暂无评论
【架构实战营】模块三作业