基于外包学生管理系统的架构文档
前言
本文是外包学生管理系统架构设计文档,以下简称为管理系统。本文主要内容包括管理系统的主要功能模块简介,各功能模块架构关系描述,架构设计核心与规范说明,用于知道后续详细架构设计,开发与运维管理。
词汇表
Mysql:Oracle 开源数据库,存储管理系统信息。
SpringBoot:开源开发框架,提供依赖注入,切面编程,中间件快速引入等开发特性。
Nginx:开源高性能服务器中间件,提供负载均衡,反向代理等功能。
1. 业务背景
随着学校招生人数的增加,学生选课种类的丰富,学生信息管理信息化的需求,原本线下人工统计选课的方式及原有系统的不足导致学生管理产生了多方面的不足:
可用性问题:原有系统性能有限,在学生集中选课时出现页面卡顿,选课页面提交失败,系统奔溃等问题。
效率问题:原有系统功能有限,学生信息收集部分仍以来线下表格填写,后续人工录入系统,学生只能查看不能修改提交。
扩展性问题:原有系统使用年限长,原有开发团队已不再,使用语言版本过时,无法进行系统后续功能的拓展可迭代。
基于以上背景,开发新一代管理系统。
2. 约束和限制
1.不进行系统拆分,部署维护简单
2.一次性交付,后去需求变化不会太大,一套架构可以用很多年
3.尽快上线
4.满足高可用性
3. 总体架构
管理系统中学生管理子系统会请求课程管理子系统与权限管理子系统进行权限查询与信息查询,课程管理会请求权限管理子系统进行权限查询。
3.1 架构分析
3.1.1 高可用
对于管理系统,需要保证在绝大部分时间保证高可用性,尤其是在选课,查询成绩,入学开学填写学籍信息时。
3.1.2 高性能
对于管理系统,不会出现爆发式的流量增加,理论上最大 tps 应该小于等于系统全部用户数,包括在校生及教师和管理员,在测试期间,保证全部用户数的压力测试通过即可。
3.1.3 可扩展
管理系统一次性上线后,需求的增加和用户数的增加基本不会出现,可暂不考虑扩展性。
3.2 总体架构
使用 nginx 做入口反向代理和负载均衡服务器
分别部署学生子系统、课程子系统、权限子系统
数据库采用主 MySQL 和一台备 MySQL,使用实时同步。
4. 详细设计
4.1 核心功能
4.1.1 登陆
登陆页面输入账号密码后请求权限子系统进行权限的认证和查询,返回权限相关信息并根据实际的权限规则请求学生管理子系统或管理子系统。
4.1.2 账号分配与绑定
管理员通过权限管理子系统进行账号的录入与权限的分配,学生绑定账号时输入账号并请求权限管理子系统进行账号的绑定。
4.1.3 权限管理
管理员通过权限子系统进行权限与角色的创建与分配。
4.1.4 课程管理
管理员通过课程子系统进行课程录入,并根据对应的课程进行教材选择,选择后进行排课管理,教师可在课程管理子系统查看对应的排课信息,学生通过课程管理子系统进行选课与课表信息查询。
4.1.5 考试管理
教师通过权限子系统进行考试的设置,学生通过学生课程子系统完成每日作业与学习资料的上传,通过课程子系统查看考试成绩。
4.2 关键设计
4.2.1 存储可靠性
由于学生信息是涉及毕业等重要节点的依据,所以学生信息不可丢失,存储架构采用 Mysql 数据库主从实时同步的模式。
4.2.3 服务高可用
学生管理系统在学生日常学习中有大量的使用需求,所以可用性需要满足高可用,采用子系统多节点部署的方式,通过 nginx 进行多节点的负载均衡。
4.2.4 服务高性能
学生管理系统没有流量暴增的使用场景,对服务的响应也没有硬性的要求,满足常规的 3 秒响应时长即可,各模块区间可无须必须调用接口,简单数据才用查询数据库或缓存的方式即可,降低网络开销与复杂性的增加。
4.2.5 安全
学生子系统可选择部署在校园内网中,学生在校时通过校园网内网访问,提供 nginx 外部代理端口,学生非在校时通过代理 ngxin 进行系统访问,可在 nginx 上配置访问控制策略。
4.3 设计规范
1)系统使用 SpringBoot 开发框架,页面使用 BootStrap 框架
2)MySQL 使用 Innodb 存储引擎,表设计符合第三范式
3)请求方式使用 Http 请求方式,报文格式使用 Json 格式
5. 质量设计
5.1 可测试性:使用 mockapi 进行接口测试和压力测试,页面采用人工测试。
5.2 可维护性:设计文档等具备满足二次开发时作为参考的条件
5.3 可观测性:部署服务器的监控使用 Prometheus 进行资源的监控与查看,服务状态通过配置日志埋点数据进行服务耗时与服务响应状态的监控。
5.4 成本:根据总预算进行服务器资源的购买和中间件的选择。
6. 演进规划
6.1 管理系统一期
完成需求文档中的基本功能,并保证可用性等性能要求。
6.2 消息队列二期
增加预选课,学校朋友圈等功能。
版权声明: 本文为 InfoQ 作者【刘帅】的原创文章。
原文链接:【http://xie.infoq.cn/article/b32cd8db85f6507edc4caced2】。未经作者许可,禁止转载。
评论