学生管理系统架构设计文档
前言
本文是外包学生系统详细架构设计文档,用于系统后续的开发、测试和运维。
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 学生系统三期
业务演进:增加视频课程和家长体系,让学生可以通过远程完成课程,家长也能及时了解学生情况。
架构演进:引入支持视频格式的缓存服务器架构,接入外部消息系统(短信、微信)向家长发送信息。
版权声明: 本文为 InfoQ 作者【Bear】的原创文章。
原文链接:【http://xie.infoq.cn/article/eb5da76904ba6cbe63715c124】。文章转载请联系作者。
评论