学生管理系统详细架构设计
学生管理系统详细架构设计
前言
本文是学校学生信息管理系统详细架构设计文档,用于指导学生管理系统后续的开发、测试和运维。
词汇表
Nginx:异步框架的网页服务器,也可以用作反向代理、负载平衡器和 HTTP 缓存。
1. 业务背景
随着学校的规模的不断扩大,学生数量的增加,需要处理的信息也日趋增大。不仅花费大量的教师资源,处理效率也十分低下。目前学生管理系统多为手工纸面操作,由此产生下列问题:
· 学生信息管理数据信息量大,修改不方便,对一系列数据进行分析时花费时间长等问题。
· 信息的准确度不高,日常管理的工作效率低下。
基于以上信息,我们需要实现一个简单易操作,有一定处理能力的学生管理系统软件。
2. 约束和限制
1. 尽量降低成本。
2. 由于系统需要保存大量的学生信息,所以尽量保证数据不要丢失
3. 总体架构
3.1 架构分析
可扩展:
由于学生管理的业务需求比较复杂,所以系统要具有一定的可扩展性,可以方便的增加业务需求。可以按照功能将学生管理系统拆分成学生管理、课程管理和权限管理三个子系统,降低内部复杂度,提升系统可扩展性。
数据高可用:
由于学生数据信息量比较大,课程信息和学生成绩对学校和学生来说对非常重要,因此数据不要全部丢失。为了保证系统数据的高可用,本系统设计了主备数据库,若主数据库宕机,可以用备数据库对数据进行恢复。
3.2 总体架构
学生管理系统采用 BS 架构,共分为:Web 层,应用层和数据层。客户端与服务端采用 json 传递数据。
1) Web 层部署 Nginx。前端页面部署在此, 实现浏览器请求的负载均衡。
a) 管理员、教师和学生通过浏览器登陆系统后,会将相关前端页面加载到浏览器,然后用户通过这些页面操作学生管理系统, 相关操作通过这些页面发出 http 请求发到应用服务器,并将返回的数据处理后显示给用户。
2) 应用层:应用部署了学生子系统、课程子系统和权限子系统。
a) 应用服务接收 web 服务的 http 请求。若需要访问数据库,应用服务会通过 JDBC 访问 mysql 数据库,进行相关业务处理,并将处理结果返回给 web 服务。
3) 数据层:部署了 MySQL 主备数据库,用来保存学生信息,课程信息以及相关权限信息。
a) 直接用 MySQL 的主从复制来实现数据复制
4. 详细设计
4.1 核心功能
学生登录流程:
排课流程:
4.2 关键设计
为了支持业务的可扩展开发,系统划分为三个子系统,方便将来业务划分。
为了防止数据丢失,采用 mysql 主备设计。
4.3 设计规范
前端和服务端采用 http 通信,各子系统之间采用 tcp 通讯。子系统访问数据库用 JDBC。各系统之间数据格式采用 json
5. 质量设计
可测试性:用户通过浏览器页面可以直接进行功能测试。后端也提供 swagger 进行 api 测试。
可维护性:部署采用 jenkins+docker,减少环境影响带来的部署问题。系统捕获出错信息,并打印到日志中,方便出错时快速定位。
可观测性:可以在浏览测观测相关页面。
成本:3 台后端服务器+1 台 nginx+2 台 mysql 数据库服务器
6. 演进规划
系统已经划分为三个子系统,将来添加新的业务,可以往这三个子系统添加。若是新增的业务不能规划到这三个子系统中,还可以增加新的子系统。
评论