写点什么

作业:架构实战营模块 3

作者:Poplar89
  • 2021 年 12 月 30 日
  • 本文字数:1080 字

    阅读完需:约 4 分钟

前言

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

1. 业务背景

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

  1. 相比原有人工管理,提供更多管理能力。

  2. 省去人工整理、备份数据的成本。

主要实现以下能力:

  1. 教师可以实现学生管理、课程管理、作业批改、安排课表等工作。

  2. 学生可以实现,查询课表、查询成绩、作业提交等功能。

2. 约束和限制

约束和限制:

  1. 高可用:数据不能全部丢失、应用可用性达到基本可用(不可用时间小于 99%,即每年 87 小时)

  2. 可扩展性:业务需求比较复杂。

  3. 高并发:至少支持 1000 名学生的并发访问。

  4. 能够公网访问

3. 总体架构


3.1 架构分析

  1. 存储高可用

对于学生管理系统来说,学生信息、课程信息数据丢失,是非常严重的事情;

  1. 存储高性能

由于系统管理类功能居多,因此存储层是影响系统性能的主要因素。

  1. 应用高可用

对于学生管理系统来说,部分内容短暂的不可用是可以接受的,

  1. 应用高性能

由于系统管理类功能居多,因此应用层性能压力不大。


综合来看,存储高可用、存储高性能是本系统的主要需求。

3.2 总体架构

由于系统业务比较复杂,因此将系统分为学生子系统、课程子系统、权限子系统。

学生子系统:主要为学生提供个人信息管理、课程信息查询、作业提交、考试查询、考试成绩查询等功能。

课程子系统:主要为老师提供课程管理、考试管理、作业管理等功能。

权限子系统:主要对学生账号、教师账号进行管理、审批。


三个系统通过存储层实现互通。

4. 详细设计

4.1 核心功能

4.1.1 学生注册与审核

4.1.2 学生课程中心


4.2 关键设计

4.2.1 存储高性能

由于学生、课程、考试、作业等数据的并发访问压力并不会很高,因此 MySQL 即可满足需求,并很容易通过索引增加访问性能。

4.2.2 存储高可用

存储采用主从架构,复制算法采用多数复制,防止数据丢失。

4.3 设计规范

  1. 负载均衡采用 Nginx 进行

  2. 应用服务器采用 SpringBoot + Mybatis

  3. MySQL 使用 InnoDB 存储引擎

5. 质量设计

可维护:

部署:应用使用 spring-boot-maven-plugin 插件进行打包,在服务宕机时,可以很容易进行重启。

配置:配置全部写在 app.conf 中,参数修改也非常容易。

扩展:应用性能不足以支撑时,可以很容易部署更多实例,通过 nginx 进行负载均衡,以满足性能要求。

可测试:

由于多数功能都为管理类功能,提供完善的详细设计文档,以供测试同学进行白盒测试。

可观测性:

通过 nginx 日志可以很容观察应用的响应日志及耗时等情况。

成本:

前期可以合并部署的方式进行。

6. 演进规划

一期:权限管理子系统、学生管理子系统先行收录学生信息。

二期:提供课程管理功能、考试管理功能。

用户头像

Poplar89

关注

还未添加个人签名 2018.12.07 加入

还未添加个人简介

评论

发布
暂无评论
作业:架构实战营模块 3