写点什么

[架构实战营] 模块三作业

作者:Geek_0ed632
  • 2021 年 12 月 25 日
  • 本文字数:1215 字

    阅读完需:约 4 分钟

前言

本文是外包学生管理系统的详细架构设计文档,用于指导消息队列后续的开发、测试和运维。

词汇表

  • nginx:一高性能的 HTTP 和反向代理 web 服务器;

  • springboot2.x : spring 软件框架,便于快速开发;

  • mybatis:数据持久层框架;

  • mysql:一个流行的关系型数据库管理系统;

1. 业务背景

随着学校的规模的不断扩大,学生数量的增加,需要处理的信息也日趋增大。不仅花费大量的教师资源,

处理效率也十分低下。

为提高学生管理的管理水平,优化资源,尽可能降低管理成本成为学生管理的新课题,学生管理系统是从

学生管理现状出发,根据学生管理的新要求进行开发设计的,它需要解决学生信息管理数据信息量大修改

不方便,对一系列数据进行分析时花费时间长等问题,帮助学生管理人员有效管理学生信息。

因此学生信息管理系统可以通过系统规范化地管理、科学性统计和快速查询、修改、增加、删除等,提高

信息的准确度以及日常管理的工作效率。

本系统主要是应用于学生各类信息的管理,总体任务是实现学生信息关系的系统化、规范化、自动化,其

主要任务是统计学生各类信息进行日常管理,如查询、修改、增加、删除、以及学生选课、成绩的查询等

功能设计的管理系统。

2. 约束和限制

  1. 数据可靠性要求:保障已存储数据不会丢失;

  2. 性能要求:要求支撑 1000qps 的访问量;

  3. 成本要求:要求成本在 30 万以下;

3. 总体架构

3.1 架构分析

3.1.1 高可靠

主要目的是实现学生信息管理的系统化、规范化和自动化,其主要任务是管理学生相关信息,如学籍、课程、成绩、奖惩,所以主要考虑数据高可靠,保障已存储数据不能丢失;

3.1.2 性能

为保障选课等集中操作场景下的性能,需要保证业务模块 1000qps 以上的性能;

3.1.3 可扩展

为了满足高校未来的发展,以及学生管理系统日后的复杂性需求,需要一个可扩展的系统;


3.2 总体架构

  1. 使用 nginx 集群对外暴露服务,并把请求分发至不同的子系统中;

  2. 系统拆分成三个子系统,便于后期运维与能力的扩展;

  3. 数据存储高可用,主备 MySQL 集群,主备数据复制,定时备份至冷存,保障数据不丢失;

4. 详细设计

4.1 核心功能

4.1.1 学生子系统

注册,信息查询,账号管理。

4.1.2 课程子系统

课程信息管理,选课。

4.1.3 权限子系统

账号角色管理,权限分配,账号信息管理。


4.2 关键设计

4.2.1 高可靠

  1. 存储:主备 MySQL 集群,主备数据复制,定时备份至冷存,保障数据不丢失;

  2. 业务:保证强一致的业务接口,所有接口皆原子化;

4.2.2 性能

  1. 水平扩容能力;

  2. 业务高性能实现;

4.2.3 可扩展

  1. 细分子系统设计;

  2. 全接口化:将所有的模块能力都由 api 接口暴露;

4.3 设计规范

  1. 前后端分离;

  2. 模块间通信均需要暴露 api 接口;

  3. 以 json 作为通讯格式;

5. 质量设计

1. 可测试性

可以通过各个功能模块的接口,来进行系统的功能、性能测试

2. 可维护性

生成 docker image,进行 docker 化部署

3. 可观测性

可以通过各个功能模块的接口、系统的日志、系统常见指标的监控来观察系统的内部运行情况

6. 演进规划

一期:完成上述三个子模块的相关功能;

二期:加入考试、网课、缴费等相关功能子模块;

发布于: 2 小时前
用户头像

Geek_0ed632

关注

还未添加个人签名 2019.08.26 加入

还未添加个人简介

评论

发布
暂无评论
[架构实战营] 模块三作业