写点什么

架构实战营 - 模块三作业

作者:🐢先生
  • 2023-02-25
    浙江
  • 本文字数:1333 字

    阅读完需:约 4 分钟

前言

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


修订历史


词汇表


1.业务背景

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

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

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

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


2.约束和限制

系统可外网访问。

数据存储期限:学生在校期间 + 离校后 3 年数据。

3.总体架构

3.1 架构分析

  • 高性能:对于一个学生管理系统来说,一个学校一般也就几千人,并且又只是一个管理类的系统,对性能要求不高。

  • 高可用:可用性方面主要体现在存储高可用方面,要保证数据不要全部丢失;计算高可用方面要求不高,毕竟是学校内部用系统。

  • 可扩展:考虑到业务需求比较复杂,架构设计的时候需要保证系统后期扩展方便。

  • 成本:开发一个内部用学生管理系统,成本也不会太高。

  • 安全:只要做到必要的角色权限控制以及保证数据的一个安全性即可。

3.2 总体架构

  • 使用 Nginx 作为负载均衡器分发请求。

  • 整个系统拆分为学生子系统、课程子系统和权限子系统,保证系统的一个可扩展性。需要特别注意:这里不是微服务架构,不需要设计基础设施。

  • 为了保证数据的一个高可用,存储方面采用 MySQL 主备架构,主备间的数据复制采用 MySQL 本身的数据复制功能即可。


4.详细设计

4.1 核心功能

学生查看信息以及选课


教师发布课程


4.2 关键设计

  • 系统可扩展

考虑到学生管理系统的需求比较复杂,系统需要保证有一个好的扩展性,所以架构设计的时候,我们把整个系统拆分成了学生子系统、课程子系统和权限子系统,来降低系统的一个复杂度,并且这么拆分之后,便于后期更好地扩展新的业务功能。

为什么不考虑微服务呢,只是一个简单的系统拆分?对于一个内部用的学生管理系统,使用微服务就增加了系统的复杂度,不符合"简单原则"和"合适原则"。

  • 数据高可用

对于学生的一些数据,我们是需要保证不丢失的。架构设计中选择 MySQL 的一个主备架构,数据复制方式直接使用 MySQL 本身的数据复制功能。

4.3 设计规范

  • 系统的基础框架采用 SpringBoot 实现。

  • 前后端分离,后端通过 Swagger 提供 API 接口。

  • MySQL 使用 InnoDB 存储引擎。

  • 子系统之间的通信使用 HTTP 协议,数据格式使用 JSON。

  • 缓存框架使用 Redis。

5.质量设计

  • 可测试性:可全链路压测。

  • 可维护性:可全链路跟踪,快速定位系统问题。

  • 可观测性:通过运维平台,聚合系统的一些关键指标信息和服务器的一个关键指标(CPU、内存等使用情况)

  • 成本:复杂度不涉及高性能以及计算高可用,整体成本相对来说比较低。


6.演进规划

第一期质量设计比较简单,系统运行稳定之后,进行第一个迭代,优化质量设计相关内容。

如:可观测性方面提供更多指标信息。

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

🐢先生

关注

还未添加个人签名 2018-01-19 加入

还未添加个人简介

评论

发布
暂无评论
架构实战营-模块三作业_架构实战营_🐢先生_InfoQ写作社区