外包学生管理系统的架构设计
前言
本文是学生管理系统架构设计文档,用于指导学生管理系统后续的开发、测试和运维。
1. 业务背景
随着学校的规模的不断扩大,学生数量的增加,需要处理的信息也日趋增大,目前的学生信息处理系统存在以下问题:
成本问题:需要花费大量教师资源。
效率问题:学生信息管理数据信息量大修改不方便,对一系列数据进行分析时花费时间长。
基于以上背景,我们需要引入学生信息管理系统,可以通过系统规范化地管理、科学性统计和快速查询、修改、增加、删除等,提高信息的准确度以及日常管理的工作效率。
2. 约束和限制
可扩展:业务需求比较复杂
数据高可用:数据不要全部丢失
3. 总体架构
3.1 架构分析
高性能:学校的师生数量一般在 10w 以内,并发访问量不大,因此对性能要求不高。
高可用:学生管理系统是学校管理的一部分,且非主要业务,其崩溃对学校的运营影响不大,但是学生信息一般是集中录入或者学生自己注册,如果数据丢失重新恢复就非常麻烦,因此需要一定的存储高可用。
可扩展:将来会有新的业务接入,因此需要一定的可扩展性。
3.2 总体架构
① 系统分为学生子系统、课程子系统、权限子系统;用户访问学生子系统、课程子系统前,需要经过权限子系统的检查;
② 用 MySQL 存储数据,包含一台主 MySQL 和一台备份 MySQL,主备数据复制;
③ 用 Nginx 作为接入网关。
4. 详细设计
4.1 核心功能
1、用户登录
2、操作学生子系统
3、操作课程子系统
4.2 关键设计
1、数据存储高可用
数据存储在 MySQL 中,采用主备架构,使用 binlog 同步到备库。正常情况下,由主 MySQL 提供服务,主 MySQL 异常时,由备 MySQL 提供服务。
2、可扩展
将业务拆分为 3 个子系统,方便扩展。
3、安全
所有请求经过权限子系统的鉴别,有操作权限时再转发到相应的子系统。
4.3 设计规范
1、MySQL 使用 Innodb 存储引擎。
2、API 采用 Resful 风格。
3、系统间的通讯数据格式采用 json。
5. 质量设计
1、可测试性:MySQL 主备可以手动切换。
2、可维护性:可暂停服务进行系统升级、手动切换 MySQL 主备等。
3、可观测性:用户的操作日志、管理平台。
4、成本:控制在 20 万以内。
6. 演进规划
学生管理系统一期:实现学生管理系统基本功能。
学生管理系统二期:管理平台,以及根据需求扩展功能,如实现学生数据的分析。
评论