写点什么

极客时间架构训练营模块三作业

作者:李晨
  • 2022-10-26
    北京
  • 本文字数:1286 字

    阅读完需:约 4 分钟

极客时间架构训练营模块三作业

前言

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

修订历史

  1. 版本号:1.0;变更内容:外包学生管理系统架构文档;修订者:李晨;日期:2022.10.24

词汇表

MySQL:关系式数据库

1.业务背景

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

为提高学生管理的管理水平,优化资源,尽可能降低管理成本成为学生管理的新课题,学生管理系统是从学生管理现状出发,根据学生管理的新要求进行开发设计的,它需要解决学生信息管理数据信息量大修改不方便,对一系列数据进行分析时花费时间长等问题,帮助学生管理人员有效管理学生信息。

因此学生信息管理系统可以通过系统规范化地管理、科学性统计和快速查询、修改、增加、删除等,提高信息的准确度以及日常管理的工作效率。

2.约束和限制

  1. 能够支撑管理 5000 名学生

  2. 数据不能全部丢失

  3. 成本不能超过 20 万

  4. 要考虑可扩展性

  5. 系统可以容忍小于 3 小时的不可用时长

3.总体架构

3.1 架构分析

3.1.1 高性能

能够支撑管理 5000 个学生,所以高性能 pass 掉

3.1.2 高可用

学生管理系统是辅助系统,短时间挂掉的话不会对学校的日常运行造成过大的影响

学生的数据可以丢失几条,甚至几十条,但是如果一个学校的学生数据全部都是的话,是不可以接受的

综上所述,服务高可用此阶段可以不用考虑,此阶段需要考虑的是存储高可用

3.1.3 可扩展

由于是只管理本校的学生信息,所以不会上云

该版本的业务也不会太过复杂

综上所述,根据简单原则和演进原则,可扩展并不是该阶段需要考虑的复杂度来源之一

3.1.4 成本

  1. 人力成本

  2. 服务运行成本

3.1.5 安全

需要考虑功能安全,例如隐私数据加密、sql 注入、跨站脚本攻击等


综合来看,需要考虑存储高可用以及功能安全

3.2 总体架构


  1. 使用 nginx 实现后端服务的反向代理

  2. 将系统拆分为三个子系统,分别是学生服务、课程服务、权限服务

  3. 数据库采用 mysql,设计为主备架构,保证存储高可用

4.详细设计

4.1 核心功能

4.1.1 学生信息查询


4.1.2 学生在线选课


4.1.3 评分判定


4.2 关键设计

  1. 存储高可用

  2. MySQL 采用主从架构,保证消息的存储高可用。如果主备间出现复制延迟,恰好此时 MySQL 主服务器宕机导致数据无法恢复,则部分消息会永久丢失,这种情况不做针对性设计。DBA 需要对主备间的复制延迟进行监控,当复制延迟超过 10 秒的时候需要及时告警并进行处理

  3. 可扩展

  4. 对学生管理系统进行业务拆分,拆分成三个子系统,每个子系统负责自己单独的业务逻辑

4.3 设计规范

  1. 系统采用前后端分离的方式进行开发

  2. 前端使用 vue 框架开发,提升开发效率

  3. 后端使用 springboot 框架开发,并采用 restful 风格的 api 接口

  4. 网络协议采用 https 协议

  5. MySQL 使用 InnoDB 存储引擎

5.质量设计

5.1 可测试性

各个服务的各模块接口可以不依赖外部服务独立测试

5.2 可维护性

各服务独立部署可以保证服务上下线便利性

5.3 可观测性

通过 APM 或者监控数据库来观测系统日常运行状态

5.4 成本

  1. 开发团队控制在 3-4 人,开发周期控制在 1-1.5 个月

  2. 测试服务器数量控制在 3 台左右

  3. 生产服务器数量控制在 6 台左右

6.演进规划

6.1 一期

完成基本业务功能,保证按时开发完成并上线

6.2 二期

提升系统的服务高可用指标

6.3 三期

如果后期业务增多,复杂性提升,考虑引入微服务

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

李晨

关注

stay hungry,stay foolish 2021-07-27 加入

鄙视"PPT架构师",立志成为一个能干实事的架构师

评论

发布
暂无评论
极客时间架构训练营模块三作业_李晨_InfoQ写作社区