学生管理系统
前言
本文是学生管理系统架构设计文档,用于指导消息队列后续的开发、测试和运维。
修订历史
词汇表
Spring Boot:Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程。
Mysql:关系型数据库
Nginx:负载均衡 web 服务器
1.业务背景
随着现在学校管理学生越来越多,需要处理的信息也日趋增大,传统人工处理效率非常底下,耗费资源。为了提高学生信息管理水平降低管理成本,开发一套学生管理系统,系统应用于管理学生各类信息,可以通过系统规范化地管理、科学性统计和快速查询、修改、增加、删除等,提高信息的准确度以及日常管理的工作效率。基于以上背景,我们需要引入学生管理系统,将进一步提高目前的管理水平。
2.约束限制
1.成本控制在 50 万元内
2.数据要有备份,数据永久保存
3.使用 mysql 数据库
4.尽量使用开源技术
5.平均响应时间为 500ms 内,最长响应时间不超 3S
3.总体架构
3.1 架构分析
3.1.1 高可用
学生系统数据较为重要,数据丢失对学校和学生都会带来很大的影响,系统偶尔不可用并在几个小时内能够恢复的话,影响不大,采用数据库主备的方式保证数据即可。
3.1.2 高性能
学生管理系统管理数据和数据处理量都比较有限,性能也没有太多追求,没必要追求高性能。
3.1.3 可扩展
目前信息化管理已经非常普及,很多需求和业务都会带来变更,所以可扩展性是非常有必要的,系统进行了合适的服务拆分,如果后面需要扩展更多需求,在现有系统上增强或者可扩展子系统完成新的业务。
3.2 总体架构
系统架构图
系统边界白盒图
4 详细设计
4.1 核心设计
学生信息查询
学生信息是学生管理系统的核心管理信息,不能随便对外泄漏,只能具备相关权限的人才能进行查询,学生信息需要在学生子系统里查询,子系统进行查询前需要对发起查询人进行身份认证,如果身份认证失败则禁止相关操作,无论查询是否完成都需保存相关操作记录。
学生选课
选课功能主要提供学生线上选课,选课是对能够进行选课的学生开放,无权限的学生不能进行选课。
课程成绩上传
老师通过上传课程成绩到系统,公布学生成绩,学生线上就能查询,成绩只能由学生自己查看,即便同一门课的同学之间成绩不能统一查看,保证学生个人成绩隐私。
4.2 关键设计
存储高可用:
数据存储在 MySQL 中,每个分组有一主一备两台 MySQL 服务器,MySQL 服务器之间复制消息以保证数据存储高可用。如果主备间出现复制延迟,恰好此时 MySQL 主服务器宕机导致数据无法恢复,则部分消息会永久丢失,这种情况不做针对性设计,DBA 需要对主备间的复制延迟进行监控,当复制延迟超过 30 秒的时候需要及时告警并进行处理。
4.2 设计规范
子系统统一使用 springboot 进行开发,统一使用 jdk8。系统之间通过 Http 进行调用,数据格式为 JSON,结构采用 rest 风格对外接口。
使用 mysql 数据库 Innodb 存储引擎。
5 质量设计
可测试性:系统较为简单,子系统少,测试难度不高,子系统留几个可测试调用接口得了。
可观测性:个子系统应该输出相关重要日志,必要时可通过日志查询问题。
可维护性:系统不复杂,暂不需要维护后台,带后期需要再加。
6.演进规划
6.1.一期
完成权限系统能够进行角色权限认证。
完成学生子系统登录、注册、查询、导入导出的等基本功能。
完成课程子系统课程录入、选课、成绩录入等基本功能。
系统快速上线基本功能使用。
6.1.二期
完善课程系统考试安排,课程安排,考题生成等
完善学生系统上报教育系统等
评论