学生管理系统
前言
本文档为学生管理系统的设计文档, 用于说明系统架构以及大致流程,指导后续系统开发。
词汇表
Spring: Java 生态系统中的开发框架.
MySQL: 关系性数据库.
Nginx: HTTP 服务器和反向代理.
1. 业务背景
随着学校招生规模不断扩大, 学生数量的增加, 传统的纸质化人工操作流程耗时费力,成本高。为了提高学生管理效率,进行信息化管理。需要开发学生信息管理系统, 包括学生信息管理,选课, 考试流程等主要功能。
2. 约束和限制
1.开发团队 3 人,研发力量有限,研发周期 3 个月
2.开发费用 30 万,后期维护费用 5 万
3.现有团队技术上使用 Java 技术栈
3. 总体架构
3.1 架构分析
高可用
属于管理系统, 可以在深夜或者周末, 节假日进行维护. 对可用性要求不会很高.
高性能
学生人数不多,除了特殊场景比如选课需要考虑高性能外,其他场景无需特殊设计.
可扩展
为应对后续的功能扩展,在代码层面做好模块分离
安全性
数据库主备复制,防止数据丢失.
3.2 总体架构
1)采用 Nginx 做反向代理,路由到不同后台子系统, 后台子系统处理逻辑, 访问 MySQL。
2)一台主 MySQL 和一台备 MySQL,主备数据复制。
4. 详细设计
4.1 核心功能
4.1.1 注册登录过程
1.注册账号,学校管理员通过才算成功
2. 输入账号密码登入,校验账号是否存在,账号密码是否匹配。
4.1.2 学生信息管理
学生信息输入,修改,查看
4.1.3 课程管理
选课,排课,课程考试。
4.2 关键设计
存储可靠性
MySQL 中,每个分组有一主一备两台 MySQL 服务器,MySQL 服务器之间复制消息以保证消息存储高可用。如果主备间出现复制延迟,恰好此时 MySQL 主服务器宕机导致数据无法恢复,则部分消息会永久丢失,这种情况不做针对性设计,DBA 需要对主备间的复制延迟进行监控,当复制延迟超过 30 秒的时候需要及时告警并进行处理。
4.3 设计规范
1)使用 Spring + Nginx 开发
2)MySQL 使用 Innodb 存储引擎
5. 质量设计
可测试性
单元测试,GUI 集成测试,API 测试。
可维护性
系统分为 3 个子系统,便于维护.
可观测性
系统较为简单, 日志即可. 为了方便问题分析及追溯, 日志保存 180 天及以上.
后台服务对于错误信息需要打印, 写逻辑所有日志均要打印。
安全性
学校采用内网方式,无需考虑安全性
评论