外包学生管理系统架构文档
1、业务背景
随着学生管理系统业务的不断发展,系统内部复杂度越来越高,带来了一些挑战:
可扩展:业务功能的扩展和修改会引起系统内部相关依赖代码的大量修改,给系统功能的稳定性带来较大的隐患;
数据可靠性:系统宕机后需要保证用户数据不丢失。
基于以上背景,我们需要将系统拆分为学生子系统、课程子系统和权限子系统,同时数据存储采用主备模式。
2、约束和限制
(1)必须在两个月内完成
(2)成本不能超过 50 万
3、总体架构
3.1 架构分析
3.1.1 高可用
学生子系统、权限子系统、课程子系统各部署两个结点;系统数据采取主备复制保证数据不丢失。
3.1.2 可扩展
三个子系统跟随业务发展进行修改时不影响外部子系统功能稳定性。
3.1.3 高性能
不涉及。
3.2 总体架构
3.2.1 学生子系统
对外通过 nginx 轮询方式提供学生信息维护功能,通过 api 访问权限子系统获取用户权限(数据权限和操作权限)。
3.2.2 课程子系统
对外通过 nginx 轮询方式提供课程信息维护、选课、考试功能,通过 api 访问权限子系统获取用户权限(数据权限和操作权限)。
3.2.3 权限子系统
对外通过 nginx 轮询方式提供权限维护功能;对内提供 api 权限查询服务,两个结点的 api 服务可用性由嵌入其他子系统的 api sdk 负责切换服务提供结点。
4、详细设计
4.1 核心功能
4.1.1 权限管理
4.1.2 学生管理
4.1.3 课程管理
4.1.4 选课
4.2 关键设计
(1)系统高可用
每个子系统部署两个结点,避免单结点宕机导致系统整体不可用;权限服务 api sdk 通过权限子系统提供的心跳接口检测权限 api 服务的可用性。
(2)数据可靠性
由于有 Mysql 一主一备两台数据库服务器,可保证恢复出较短时间之前的备份数据,业务可接受主备复制延迟带来的短时间内的数据丢失。
4.3 设计规范
(1)三个子系统采用 Spring boot + jdbc 开发
(2)Mysql 采用 InnoDB 存储引擎
(3)权限 api 服务采用 restful 风格的 webservice
5、质量设计
成本:总成本控制在 50 万以内
可测试性:不涉及
可维护性:不涉及
可观测性:不涉及
6、演进规划
6.1 学生管理系统一期
包含学生子系统、权限子系统、课程子系统
6.2 学生管理系统二期
增加日志查询、系统配置管理、数据报表
评论