写点什么

外包学生管理系统详细架构设计文档

作者:Beyond Ryan
  • 2021 年 11 月 11 日
  • 本文字数:1509 字

    阅读完需:约 5 分钟

1. 业务背景

  • 随着某高校的口碑传播和规模的不断扩大,招生每年都在扩大,学生数量增加,需要处理的信息也日趋增大,不仅花费大量的教师资源,处理效率也十分低下。

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

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

经过需求调研,改平台需要包含以下功能:

  • 学生管理

  • 课程管理

  • 考试管理

  • 权限管理

2. 约束和限制

1、必须在 2021.12.31 完成

2、成本不能超过 50w

3、必须保证数据不能丢失

4、热门的课程,需要同时抢课的功能

5、该学校每年招生 5000 人,以后每年还会增长,学校总计人数不超过 2w 人,当然还要支持毕业学生的数据查询

3. 总体架构

系统边界图



3.1 架构分析

3.1.1 高性能

总用户数 2w 人,一般热门的课,抢课的时候最多不超过 1000 人同时抢,支持 TPS 1000 整体对性能要求不高

3.1.2 高可用

要求数据不能丢失,因为认为补录,工作量还是比较大的,系统白天要求能够正常提供服务,晚上可以接受服务宕机

3.1.3 可扩展

已经选用了微服务架构的模式,扩展性上没问题

3.1.4 成本、安全

成本不能超过 50w,按架构来看,没啥问题,安全上做好内网隔离

3.2 总体架构



4. 详细设计

4.1 核心功能

  1. 权限子系统

核心功能:用户登陆时校验账号密码之后,将访问学生子系统获得 token 用以鉴权,之后的所有请求将携带此 token。用来向权限子系统进行鉴权(拦截器或者过滤器统一完成)来判断是否可以进行此项操作。


2.  数据主备功能

业务数据读写在 MySQL 主库进行,并使用 binlog 同步至 MySQL 备库。

  1. 其他的功能都是业务层面的设计,这里不做详细展开

4.2 关键设计

  1. 数据储存的可靠性

数据存储在 MySQL 中,有一主一备两台 MySQL 服务器,MySQL 服务器之间通过 binlog 同步,如果主备间出现复制延迟,下好此时 MySQL 主服务器宕机导致数据无法回复,则延迟部分数据会永久丢失,这种情况不做针对性设计,运维需要做好主备间的复制延迟的监控,超过 1 分钟的时候需要及时告警并且处理。

  1. 内网隔离

Nginx 对应的服务器通过外网端口映射,可以外网访问,其他应用服务器和数据库服务器,不能暴露在外网

  1. 请求分发

Nginx 根据 URL 的轮询来进行请求分发,如果之后遇到性能瓶颈,因为要保证服务白天不能宕机,每个应用服务至少需要部署两台

4.3 设计规范

  1. 采用前后端分离方式,前端 vue, 后端使用 Spring Boot 2.2.7.RELEASE 框架,持久层框架 mybatis-plus,Nginx 1.11.5,JDK1.8,MySQL 5.7.21,服务器操作系统 centos 7.x

  2. 数据传输方式使用 json

  3. MySQL 使用 InnoDB 储存引擎,采用主备设计。

  4. 各个子系统之间的调用使用 restful 风格的接口调用

  5. 统一使用 log4j 记录日志 

5. 质量设计

可测试性:单元测试用例使用 Junit,集成测试使用 postman。

可维护性:开发设计文档,数据库设计文档,接口设计文档,复杂业务的开发逻辑文档,这些文档都必须沉淀。

可观测性:需要有监控系统,系统遇到问题,需要短信,甚至钉钉告警。

成本:控制在 50 万以内,这一块初步预估没啥问题。

 

6. 演进规划

6.1 学生管理系统一期

2021-11-01 至 2021-11-30

完成学生子系统,实现学生管理功能。

完成权限子系统,实现权限管理功能。

完成课程子系统,实现课程管理和考试管理功能。

系统试运行推广

6.2 学生管理系统二期

2021-12-01-2021-12-31

推广反馈的问题和需求收集,再完善一版

一些功能完善,比如,服务器监控完善,性能测试(是否达到 1000TPS)等等

用户头像

Beyond Ryan

关注

学习如逆水行舟,不进则退 2018.09.07 加入

学习如逆水行舟,不进则退

评论

发布
暂无评论
外包学生管理系统详细架构设计文档