写点什么

外包学生管理系统详细架构设计文档

作者:Geek_7d539e
  • 2023-01-03
    福建
  • 本文字数:1303 字

    阅读完需:约 4 分钟

1. 业务背景

学校对学生的管理,传统上都是手工的方式,随着规模扩展,带来几个明显的问题:

  • 效率低

  • 花费大量的教师资源

  • 管理不规范



2. 约束和限制

1、由于学校预算的限制,项目成本不得超过 10 万。

2、系统资料不得丢失。

3、在校学生人数有 5 万人,期中、期末会有同时考试的情况。

4、开发语言使用 Java。


3. 总体架构

3.1 架构分析

系统主要分为 4 个子系统,分别为学生管理系统、权限管理系统、考试管理系统、课程管理系统,通过 Nginx 进行访问;数据部分采用 Mysql 主备方式,保证数据的可靠性。

1)学生管理子系统:学生信息的管理

2)权限管理子系统:角色管理,不同角色权限的管理

3)考试管理子系统:考试内容的管理,试卷生成,成绩批改,考试安排等

4)课程管理子系统:课程安排、

布置/批改作业

、签到等

5)数据采用 Mysql 主从备份,记录所有的数据信息。


3.1.1 高可用

由于期中、期末存在同时考试的情况,考试模块需要考虑高性能、高可用。


3.2 总体架构


此次架构分为三层:网关层、业务服务层、数据层。

网关层:

  • 使用 Nginx 作为服务器网关,主要用于请求的负载均衡与服务路由分发,学生信息的相关请求路由到学生子系统,课程信息、考试相关的请求路由到课程子系统,教师、权限相关的请求路由到权限子系统。

业务服务层:

  • 业务服务层由三个子系统组成:学生子系统、课程子系统、权限子系统。

数据层:

  • 数据层由一主一备两台 Mysql 数据库服务器组成,主数据库负责日常所有业务数据的读写,并实时备份数据到备库。

  • 由于业务性能要求不高,不需要做读写分离。

  • 备库负责存储备份数据并在主库出现故障时临时切换到备库,保障可用性。

  • 部分开发与运维同学使用数据库工具查询 or 统计数据时,可连接备库进行查询,这样可以保障主库的稳定性。

4. 详细设计

4.1 核心功能



4.2 关键设计

1.系统拆分为多个子系统,单独部署、开发,降低耦合,有利于业务的后期扩展

2.数据存储采用 mysql, 主机负责读写,主备间通过 binlog 同步,如果主机挂了,会丢失部分数据,而在这一时间段内子系统读写数据库操作失败,用户需要等数据切换到备机再操作一次。


4.3 设计规范

(1) 使用前后端分离的技术,前端使用 react 框架进行编写,后端使用 java 语言并使用 spring boot 构建应用,前端代码部署在 nginx,前后端使用 restful 规范进行交互。

(2) 数据库使用 mysql 8.0,innodb 引擎,一主一备,使用同步复制模式。ORM 框架使用 mybatis。

5. 质量设计

可测试性:

  • http 接口建立 postman 测试用例。

  • Dubbo 接口通过 Dubbo 管理控制台建立测试用例。

  • 超级管理员具有学生信息、教师信息、权限信息的删除权限,这样能保证测试后的一些测试脏数据可以通过超级管理员进行删除。

可维护性:

  • Dubbo 具有控制台进行管理。

  • mysql 可通过运维控制台进行管理。

可观测性:

  • 系统性能观测,Dubbo、zookeeper、服务器、mysql 等,使用云平台提供的控制台进行系统监控。

  • 业务数据由于没有多少,不需要监控。

成本:

  • 目前云服务器的成本还是比较低的,而且由于性能要求不高,整体服务器可以选普通的服务器即可。


6. 演进规划

6.1 项目一期

完成学生管理、权限管理、课程管理、三个子系统的开发

6.2 项目二期

根据一期系统的使用体验及优化建议,进行优化,同时开发

考试管理、通知推送,简单的系统运维监控。

用户头像

Geek_7d539e

关注

还未添加个人签名 2020-06-12 加入

还未添加个人简介

评论

发布
暂无评论
外包学生管理系统详细架构设计文档_Geek_7d539e_InfoQ写作社区