写点什么

【架构训练营 - 模块三】

作者:默光
  • 2022 年 2 月 21 日
  • 本文字数:1635 字

    阅读完需:约 5 分钟

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

前言

该文档主要是外包学生管理系统的详细架构文档,用于指导外包学生管理系统的开发、测试和运维。

词汇表

  • Nginx

  • MySQL

  • Spring Boot


1.业务背景

随着学校的规模的不断扩大,学生数量的增加,需要处理的信息也日趋增大。不仅花费大量的教师资源,处理效率也十分低下。由此导致以下几个问题:


  • 管理效率低下

  • 学生信息管理缺乏规范

  • 无法科学分析学生学习情况


基于以上问题,我们开发设计了学生管理系统,应用于学生各类信息的管理,总体任务是实现学生信息关系的系统化、规范化、自动化,其主要任务是统计学生各类信息进行日常管理,如查询、修改、增加、删除、以及学生选课、成绩的查询等功能设计的管理系统。

业务背景图


2.约束和限制

  • 本项目投资经费为 200 万元

  • 项目里程碑(2022 年 01 月 01 日~2022 年 05 月 31 日):

  • **第一迭代(2022 年 01 月 01 日-2022 年 02 月 01 日):**完成登陆注册、权限管理功能

  • **第二迭代(2022 年 02 月 01 日-2022 年 03 月 01 日):**完成学生信息管理功能

  • **第三迭代(2022 年 03 月 01 日-2022 年 04 月 01 日):**完成课程上传以及排课功能

  • **第四迭代(2022 年 04 月 01 日-2022 年 05 月 01 日):**完成学生选课、考试、评分功能

  • **第五迭代(2022 年 05 月 01 日-2022 年 05 月 31 日):**完成后台运维管理功能

  • 本项目采用业内主流技术

  • 采用一主一备的 MySQL 数据库,保证数据不会丢失

  • 采用 Nginx 进反向代理

  • 采用 Spring Boot 框架作为脚手架,提供开发效率

  • 本项目对数据存储有不同的实效性要求

  • 学生学籍信息要永久保留

  • 发布课程信息,至少保留 1 年

  • 学生考试成绩和奖惩记录,要永久保留

3.总体架构

3.1 架构分析

  • 高可用:针对学生管理系统,学籍信息丢失会给学生带来很大麻烦

  • 高性能:针对抢课功能模块,课程信息无疑是热点数据,需要保证在 50000TPS

  • 可拓展:因为项目处于初创期,目前只服务于 XX 学校,与业务方的沟通之后,发现需要针对课程考试模块要具有一定的可拓展性能

  • 成本、安全:目前只服务于一个学校,只要部署 4 台服务器;涉及到学生学籍信息,需要进行加密存储

3.2 系统架构

系统架构图


总体架构分为三层:数据层、服务层、网关层


  • 数据层:采用一主一备的 MySQL。一般情况下在主数据库上进行数据的读写,并实时将 binlog 日志在 MySQL 备份数据库进行重放;在主数据库出现故障时,进行主备切换,保证数据服务不会中断。

  • 服务层:基于业务分析和提升项目开发效率,将服务拆分为:学生子系统、课程子系统、权限子系统;每个开发小组负责一个子系统的开发;

  • 网关层:采用 Nginx 作为流量网关和服务网关。一方面利用请求熔断机制,扛住在高并发时的调用压力,防止把整个系统拖垮,保证核心功能(学生管理模块)的可用性;另一个方面,根据不同的请求,路由到不同的服务子系统上。

4.详细设计

4.1 核心功能

4.1.1 账号录入及激活

账号录入及激活时序图


4.1.2 课程录入及选课时序图

课程录入及选课时序图


4.2 关键设计

4.2.1 数据的高可用

由于数据存储采用 MySQL 的主备架构,主备之间采用消息复制的方式进行同步。在日常运维过程中,需要考虑消息复制延迟问题,保证数据延迟不超过 30s,并做好日常报警监控。同时,要在日常运行过程中,演练主备切换。

4.2.2 抢课功能的高性能

针对抢课过程中,预估 TPS 会达到 50000TPS,需要考虑在高并发情况下,数据库压力以及不能影响到其他功能的正常使用。

4.3 设计规范

  • 采用 Spring Boot+MyBatis 框架进行开发

  • MySQL 数据库采用 Innodb 引擎

  • 错误码规范:子系统编码+具体业务错误码;学生子系统:M01,课程子系统:M02,权限子系统:M03

  • 采用 Fegin 作为 web 服务器客户端

  • 表的开发设计以及具体开发规范,可参考《阿里巴巴 Java 开发手册》

5.质量设计

5.1 成本

  • 人力成本:前端(2 人)、后端(4 人),UI(1 人),BA(1 人),日常运维(1 人)

  • 服务器成本:4 台服务器(2 台服务器+2 台数据库)

5.2 可测试性

  • 核心业务单元测试覆盖率达到 85%

  • 核心业务全链路压测

5.3 可维护性

  • MySQL 主机出现故障时,可自动切换备机

  • 当某个业务功能出现故障时,可进行业务故障隔离,保证其他业务能够正常进行

5.4 可观测性

  • 提供日志查看界面

  • 提供 jvm、CPU 等性能指标监控界面

6.演进规划

学生管理系统项目,采用敏捷开发,分为五个迭代,不断循序渐进,促使项目顺利落地。

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

默光

关注

还未添加个人签名 2019.06.18 加入

还未添加个人简介

评论

发布
暂无评论
【架构训练营-模块三】