写点什么

学生管理系统详细架构文档练习

作者:御道而行
  • 2021 年 11 月 13 日
  • 本文字数:2057 字

    阅读完需:约 7 分钟

前言

本文对学生管理系统的系统架构进行总体描述,为后续研发人员开发系统、测试人员测试系统、实施人员部署系统等工作提供依据和指导。

 

词汇表

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

       实现权限模块、系统管理平台,完善服务注册、服务发现、网关等非核心业务模块。


用户头像

御道而行

关注

还未添加个人签名 2018.09.14 加入

还未添加个人简介

评论

发布
暂无评论
学生管理系统详细架构文档练习