写点什么

模块三:外包学生管理系统 - 架构设计文档

作者:jiaoxn
  • 2022 年 4 月 21 日
  • 本文字数:1901 字

    阅读完需:约 6 分钟

1. 前言

本文是外包学生管理系统的架构文档,用于指导外包学生管理系统的后续开发、测试和运维等工作。

2. 词汇表

  • Nginx:一个高性能的HTTP和反向代理web服务器。

  • MySQL:最流行的开源的关系型数据库管理系统之一。

  • redis:开源的key-value存储系统,支持网络、可基于内存亦可持久化的日志型数据库。

  • binlog:用来记录Mysql内部对数据库的改动(只记录对数据的修改操作),主要用于数据库的主从复制以及增量恢复。

  • 主备:主机和备机之间同步数据,当主机不可用后,切换到备机提供服务,用于数据库高可用方式。

3. 业务背景

随着学校的规模的不断扩大,学生数量的增加,需要处理的信息也日趋增大,对现有办公流程带来几个明显的问题:

  • 效率问题:学生信息管理数据信息量大修改不方便,对一系列数据进行分析时花费时间长。

  • 自动化问题:学生数量日益增加,现有的手动办公模式流程缓慢,重复性功能很多,需要自动化的系统解放教师的重复性工作时间。

  • 规范化问题:现有手动办公模式,每个学院都有自己的特殊的流程,全校指定的统一规范比较难推行。

4. 约束和限制

  1. 交付时间:2022 年 8 月 10 号前,8 月 11 号-8 月 30 号,系统试运行。

  2. 成本:总体建设成本不能超过 30 万元人民币。

  3. 系统需具备高扩展性,以便能够满足业务的持续性需求

  4. 系统数据及其重要,必需做到高可用

5. 总体架构

5.1 架构分析

  • 高性能:一个学校的师生人数总体不超过 5 万人,日常并发数量不超过 1 万;针对一些特殊场景,如抢课,一门课最多 3000 人同时抢课。因此,对于该系统的处理性能要求不高。

  • 高可用:学校的主要日常办公并不完全依赖本系统,因此对于业务这块来讲,高可用要求不高。但是,本系统存储的数据是很重要,对于数据的高可用要求高。

  • 可扩展:根据需要调研文档分析,该系统业务是比较复杂的,包括:学生管理、课程管理、考试管理、权限管理,在多人开发时,要充分考虑业务的可扩展性,务必做到模块划分。

  • 成本、安全:由于只在一个学校中使用,服务器成本不高;系统中不涉及学生、教师等的私密信息,不涉及资金流转,安全性上的要求也不算高。

5.2 总体架构



本架构将系统分为 3 个子系统:学生子系统、课程子系统和权限子系统,统一由Nginx做代理访问;数据层采用MySQL主备模式,保证数据的高可用。

  • 学生子系统:主要负责统一身份认证、账号管理、角色管理、每个角色的权限分配。

  • 课程子系统:主要负责完成排课管理、试卷管理、成绩管理以及课程管理。老师可以在上面进行排课、管理课程、录入成绩、布置/批改作业;学生可以查询课程、成绩、课表等信息并完成老师布置的作业。

  • 权限子系统:主要负责维护学生的学籍相关信息。学生可以修改自己的基本信息;老师可以管理学生的学籍信息。

  • MySQL主备:主数据库负责日常所有业务数据的读写,并实时备份数据到备库,备份方式使用binlog 异步同步。

6. 详细设计

6.1 核心功能

6.1.1 权限管理

用户登录系统时,从权限管理子系统中得到对应的Token以及可访问的菜单列表,Token存储在浏览器缓存中。系统实现时,菜单权限和按钮权限均通过Token来判断,之后的增删改查等操作均需要提供Token,后端接口根据Token二次判断是否有相应的操作权限。

6.1.2 学生选课

选课流程中需要着重“抢课”场景,这个场景可能会出现突增的并发压力,需要考虑到课程库存的扣减情况,尤其是需要考虑到“超扣”等特殊情况。前期设计可考虑通过数据库的锁来实现,后续根据业务实际情况,考虑使用Redis来优化实现。

6.2 关键设计

  • MySQL主备:使用一主一备的模式,主MySQL负责读和写,备用的MySQL只负责同步写,备份方式使用binlog异步同步。

  • Nginx请求负载均衡:每个子系统设计独立的URL,可根据关键字来识别。根据浏览器访问的URL来决定将请求反向代理至某个子系统,当某个子系统出现性能瓶颈时,通过 Nginx 做负载均衡

6.3 设计规范

  • 前端使用Vue 2.x全家桶 + ElementUI,后端使用Spring Boot框架。

  • 前端代码规范以及编辑器VS Code遵循部门规范,不能搞特殊化。

  • 前端采用qiankun微前端框架,尽量做到每个子应用由一个同事负责开发。

  • 后端采用微服务框架,尽量做到每个微服务由一个同事负责开发。

  • 前后端之间的调用采用Restful风格的接口调用。

  • 使用Swagger展示接口API

  • 前后端统一使用Docker部署,数据库不能使用Docker部署。

7. 质量设计

  • 可测试性:后端接口完备的单元测试功能。

  • 可维护性:详细的数据库、接口设计文档,详细硬件以及网络文档,详细的部署文档,部署的系统要具备开机自启动功能。

  • 可观测性:完善的系统日志记录功能,用于分析系统上线后的问题;提供服务器资源预警功能。

  • 成本:总体成本控制在 30 万元人民币

8. 演进规划

8.1 项目一期

  • 完成学生注册、教师注册、课程、权限、选课等核心功能上线

8.2 项目二期

  • 完成考试、考核奖惩、成绩统计等辅助功能上线

发布于: 刚刚阅读数: 2
用户头像

jiaoxn

关注

还未添加个人签名 2020.07.06 加入

还未添加个人简介

评论

发布
暂无评论
模块三:外包学生管理系统-架构设计文档_「架构实战营」_jiaoxn_InfoQ写作社区