写点什么

模块三作业:外包学生管理系统

用户头像
吴传卜
关注
发布于: 21 小时前

前言


本文主要用于描述"外包学生管理系统"(后面简称“学生管理系统”)的架构设计,用于指导后续的结构设计、开发测试、运维部署,通过阅读本文让大家对学生管理系统建立一个清晰的认识

1. 业务背景

为了提高学校的学生管理能力,提升管理效率,提高学校的数字化水平,学校决定开发一套学生管理系统。


此学生管理系统的主要功能如下:


  1. 能够完成学生登记注册,备案存档,信息维护等学生基础信息的管理

  2. 能够完成课程录入,课程编辑修改,教室排课,学生选课,生成课程排期信息等一系列课程管理操作

  3. 能够根据学校不同的职能角色和组织层级灵活的设置系统权限



学生外包管理系统黑盒边界图

2. 约束和限制

  1. 必须在 2021 年 6 月 1 号完成架构设计

  2. 必须在 2021 年 8 月 30 号完成全部功能并部署上线

  3. 数据库采用 Mysql

  4. 总体成本预算 30 万

  5. 要能支撑 50 万学生信息的管理和维护

  6. 计算机系一名教师要全程参与并定时向校领导汇报

3. 总体架构

系统边界白盒架构图:



系统内部架构图:



3.1 架构分析

3.1.1 高可用


计算高可用:对于学生管理系统假如系统意外发生故障,一般情况下,可以联系网络管理员进行恢复,并不会造成较大损失。


存储高可用:学生的关键信息都存储在 mysql 数据库里面所以,mysql 数据库一定要保证高可用,数据不能丢失,而且还要定时做数据的快照和备份,防止意外情况发生,学生和课程信息找不到影响正常的教学安排


3.1.2 高性能


我们是内部管理系统没有高性能的要求,大部分时间都是内部教室和学生使用,第一个版本可能仅仅就部分教师和管理人员使用


3.1.3 可扩展


暂时没有扩展性的要求


3.1.4 安全性


内网系统,安全性可稍后考虑


3.1.5 成本


我们的系统架构相对简单,硬件设施也很少,暂不需要考虑成本方面的问题


3.1.6 可维护


服务异常后能够手动或自动重启系统回复即可,可维护性可在后续版本中考虑


3.1.7 可观测


暂不需要

3.2 总体架构


学生管理系统总体架构图


1)全部的 http 访问通过 nginx 配置被分配到学生子系统和课程子系统,每个系统都有两个实例保证可用


2*)不同服务之间要通过 rest api 接口进行通信*


3*)服务采用 Java 的 SpringBoot 框架进行开发,部署使用 tomcat 服务器*


4*)Mysql 采用主备的方式主服务发生意外,备用的服务器继续提供读写服务*


5*)每天要对 Mysql 数据进行一次全量备份,备份到内网其他机器上,发生意外可以进行比对恢复*

4. 详细设计

4.1 核心功能

学生选课流程:



4.2 关键设计

1)数据存储高可用


数据备份机器上开启一个 cron 的定时任务,每天凌晨 1 点对全部的数据进行全量备份,每天一个,数据备份个数最大为 7 个,超出 7 个自动删除最后最早的一个

4.3 设计规范

1)jdk 使用 java8,java 框架使用 springboot2.5.3


  1. 数据库采用 mysql 5.7 ,存储引擎为 innodb

  2. 接口统一使用 rest 方式定义,接口请求通过 okhttp client 进行发送和接受

5. 质量设计

暂时不涉及质量的指标,以最终功能能够验收并实现为准

6. 演进规划

2021 年 9 月 30 号实现第一版,能够进行基础管理功能,并进行使用和需求反馈收集


2021 年 12 月 30 号完成第二版本 spring cloud 服务注册服务发现方式的重构让项目更加高可用,并进行下一阶段的扩展性业务需求的收集整理


2022 年的 1 月 30 号之前完成第三版本的功能架构设计和方案设计,并要求在 2022 年 6 月 30 号前发布上线

用户头像

吴传卜

关注

https://www.cnblogs.com/buoge 2017.11.10 加入

https://www.cnblogs.com/buoge

评论

发布
暂无评论
模块三作业:外包学生管理系统