写点什么

外包学生管理系统架构文档

发布于: 6 小时前

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 学生管理系统二期

增加日志查询、系统配置管理、数据报表


用户头像

还未添加个人签名 2017.10.20 加入

还未添加个人简介

评论

发布
暂无评论
外包学生管理系统架构文档