学生管理系统详细架构文档练习
前言
本文对学生管理系统的系统架构进行总体描述,为后续研发人员开发系统、测试人员测试系统、实施人员部署系统等工作提供依据和指导。
词汇表
Vue:用于构建用户界面的渐进式框架
Nginx:高性能的 HTTP 和反向代理 web 服务器
Spring Boot:简化 Spring 应用的搭建和开发过程
Spring Cloud:开源微服务解决方案框架
MySQL:轻量级关系型数据库管理系统
1. 业务背景
随着学校规模不断扩大,学生数量增加,需处理信息量越来越大,以下问题日益凸显:
占用大量教师资源,处理效率低下
资源利用率差,管理水平低,管理成本高
不方便进行数据修改、统计查询
为提高日常管理工作效率,进行规范化管理,提高信息统计准确度,需要能满足现在学生管理需求的学生管理系统。此系统应该达到以下目标:
实现学生信息关系的系统化、规范化、自动化(量级:10W)
能对学生各类信息进行日常管理,如:查询、修改、增加、删除学生选课、成绩等功能
2. 约束和限制
系统必须在 2022 年 3 月份前上线
成本不能超过 100 万
数据库必须使用 MySQL
成本不能超过 100 万
必须采用前后端分离的开发方式
服务器必须采用 Linux 系统(centos 7.0 及以上)
3. 总体架构
3.1 架构分析
3.1.1 高可用
计算高可用:学生管理系统虽然不是学校的核心业务系统,几个小时的宕机不会对学校的秩序造成特别坏的影响,但为了提高系统持续可用时间,采用微服务实现子系统,以便后期可以集群部署。
存储高可用:学生管理系统虽然不是学校的核心业务系统,但数据的丢失对学校秩序的影响比较大,故数据必须进行备份。
3.1.2 高性能
优先采用任务分解方案,将业务拆分成不同的业务子系统实现,不同业务子系统部署到不同的业务服务器上,通过 Nginx 来进行反向代理。
同时预留任务分配方案,当业务服务器出现性能瓶颈的时候,通过增加同类型业务服务器节点来提升系统整体性能。
3.1.3 可扩展
预计未来两年内会有新的业务需求出现,为此需要对系统进行拆分,对可预测到的需求进行隔离,不至对系统整体带来影响,造成系统不稳定。
3.2 总体架构
鉴于以上架构分析,结合实际业务,将系统划分为:学生子系统、课程子系统、权限子系统等;采用 Nginx 进行反向代理;数据存储采用 MySQL 的主备架构,得到总体架构图如下:
1)各子系统独立部署在不同的服务器上,可以是物理机也可以是虚拟机;
2)通过 Nginx 进行反向代理将各个请求分发到对应的子系统业务处理服务器;
3)数据库包含一台主 MySQL 和一台备 MySQL,正常情况下,主服务器对外提供写入和读取服务,备服务器不对外提供服务;
4)主服务器宕机的情况下,备服务器对外提供读取服务;
5)客户端采取轮询的策略写入和读取数据;
6)前端资源部署在 Nginx 服务器上。
4. 详细设计
4.1 核心功能
4.1.1 学生选课
注:此处仅以学生选课场景为例。
4.2 关键设计
1)系统拆分
通过将学生管理系统拆分为学生子系统、课程子系统、权限子系统等,降低系统整体的耦合度,降低单个系统业务逻辑处理复杂性,让业务流程的处理更清晰、更合理,提高系统的可理解性和可维护性。
2)消息存储
数据库包含一台主 MySQL 和一台备 MySQL,正常情况下,主服务器对外提供写入和读取服务,备服务器不对外提供服务;主服务器宕机的情况下,备服务器对外提供读取服务。这样既满足正常业务处理需求,也可以满足数据安全需求,不会丢失数据。
4.3 设计规范
1)接口设计至少要达到 Restful2 级成熟度
2)前后端采用 json 格式传递数据
3)Vue 版本:2.6.9
4)Nginx 版本:1.18;Nginx 采用轮询
5)Java JDK 版本:java 8
6)Spring Boot 版本:2.2.1
7)Spring Cloud 版本:Hoxton.SR6
8)MySQL:采用 5.7 版本, 使用 Innodb 存储引擎;主备之间的复制采用数据复制
9)子系统之间的调用响应时间要控制在 50ms 以内
10)Maven 版本:3.5.2
5. 质量设计
5.1 可测试性
接口测试:1、swagger 接口;2、postman;
业务测试:专门的测试环境,直接在测试环境下进行操作。
配置测试:通过修改配置文件里面的参数,测试程序运行是否正常。
5.2 可维护性
通过日志分析问题原因,定位问题。
通过分析 MySql 数据状态,定位问题。
5.3 可观测性
本系统提供统一日志输出,各子系统内以及系统间的调用都会有相应的日志(包含执行时间、业务调用方、被调用方、传入参数、传出参数),记录业务执行过程;系统出现错误时,也会记录相应错误日志。
通过 Linux 系统本身的 htop、glances 等工具检测服务器的运行情况。
暂时不提供专门的运维平台和管理平台。
5.4 成本
部署本架构共需一台 Nginx 服务器、三台业务服务器、两台数据服务器,共六台服务器,加上软件开发成本,可以在预算内完成系统上线。
6. 演进规划
6.1 学生管理系统一期
优先学生子系统、课程子系统等核心业务模块的开发,权限模块采用数据库脚本设定的方式。
6.2 学生管理系统二期
实现权限模块、系统管理平台,完善服务注册、服务发现、网关等非核心业务模块。
评论