写点什么

学生管理系统架构设计文档

作者:Bear
  • 2022 年 2 月 24 日
  • 本文字数:1503 字

    阅读完需:约 5 分钟

前言

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


1. 业务背景

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

为提高学生管理的管理水平,优化资源,尽可能降低管理成本成为学生管理的新课题,学生管理系统是从学生管理现状出发,根据学生管理的新要求进行开发设计的,它需要解决学生信息管理数据信息量大修改

不方便,对一系列数据进行分析时花费时间长等问题,帮助学生管理人员有效管理学生信息。

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


2. 约束和限制


1.必须在 2022.07.30 号完成

2.成本不能超过 30 万

3.数据库采用 MySQL

4.开发语言使用 Java

5.能支持 1 万名学生教职工稳定使用

6.不少于 90%的功能响应不能超过 1 秒

7.有完整的项目全流程文档

8.测试上线期间需有人员到现场处理


3. 总体架构


根据业务模块划分,将系统设计为微服务架构,使用数据库主备确保数据安全备份不易丢失。可以在后续通过新增微服务方式,实现可扩展性。


3.1 架构分析


3.1.1 高可用

学生管理系统是记录学生信息的重要网站,对教学管理,毕业晋升有重要作用。平台如果出现故障,会影响教学任务正常进行,所以一定要保证系统稳定可靠。


3.1.2 高并发

学校场景比较统一,学生都会在统一的时间点登录系统进行登记、选课、上课和提交作业等操作,大量用户同时操作会对系统产生并发压力。


3.1.3 扩展性

面对疫情的挑战,很多教学场景发生了变化。系统需要支持后续升级,及时适应业务变更。


3.1.4 安全性

学生信息涉及个人隐私,信息泄漏会导致很多家庭隐私无法保护,需要注重数据查询、传输和存储的加密。


3.2 总体架构


1、采用 Spring Cloud 微服务架构,分成学生、课程和权限三个服务进行独立部署,当系统压力过大时,增加服务分流压力;

2、使用 Nginx 部署前端页面和路由转发,系统压力过大时也可增加 Nginx 服务器分流;

3、使用 MySQL 主备模式部署,实时同步。读写都使用主库,备库只做备份。主库宕机的情况下由备库提供服务;



4. 详细设计

针对学生、课程和权限子系统做详细设计描述。

4.1 核心功能



4.2 关键设计


1)安全性

使用 https 证书安全认证,避免数据被窃取伪造;

2)可靠性

客户信息存储在 MySQL 中,有一主一备两台 MySQL 服务器,MySQL 服务器之间复制 binlog 以保证数据同步。定时脚本监控主备间的复制延迟,当复制延迟超过 30 秒的时候需要及时告警并进行处理。

3)可用性

系统应该配置好 Java 启动脚本 JVM 可用大小,避免内存分配错误,导致系统内存过大问题;


4.3 设计规范


1)应用系统使用 Spring Cloud 架构体系,所有微服务接入 Nacos;

2)MySQL 使用 Innodb 存储引擎,utf8mb4 编码,所有表必须有主键;

3)所有操作应可以进行数据级别权限控制;

4) 接口定义符合 restful 风格;

5) 使用统一风格的错误码;


5. 质量设计


可测试性:所有系统功能需要进行测试,并记录相关测试用例和结果到测试文档中;核心模块必须进行单元测试和压力测试;

可维护性:应用系统代码需要完整交付,并且有统一运维管理文档;所有数据操作应在应用系统内完成,禁止直接操作数据库;

可观测性:应用系统需要使用统一日志框架,并且保存 180 天应用日志;对操作


6. 演进规划


6.1 学生系统二期

业务演进:增加课程评价、投票和活动公告等模块。

架构演进:需要增加 redis 进行分布式锁,防止刷票。


6.2 学生系统三期

业务演进:增加视频课程和家长体系,让学生可以通过远程完成课程,家长也能及时了解学生情况。

架构演进:引入支持视频格式的缓存服务器架构,接入外部消息系统(短信、微信)向家长发送信息。


发布于: 刚刚阅读数: 2
用户头像

Bear

关注

还未添加个人签名 2019.02.16 加入

还未添加个人简介

评论

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