【架构实战营】模块三
前言
本文是外包学生管理系统的详细架构设计文档,用于指导后续的开发、测试和运维。
词汇表
Nginx 一个高性能的 HTTP 和反向代理 Web 服务器
MySQL 一个关系型数据库管理系统
Spring Boot 一个 Java 开源应用框架
1. 业务背景
随着学校的规模的不断扩大,学生数量的增加,需要处理的信息也日趋增大。不仅花费大量的教师资源,处理效率也十分低下。
为提高学生管理的管理水平,优化资源,尽可能降低管理成本成为学生管理的新课题,学生管理系统是从学生管理现状出发,根据学生管理的新要求进行开发设计的,它需要解决学生信息管理数据信息量大修改
不方便,对一系列数据进行分析时花费时间长等问题,帮助学生管理人员有效管理学生信息。
因此学生信息管理系统可以通过系统规范化地管理、科学性统计和快速查询、修改、增加、删除等,提高信息的准确度以及日常管理的工作效率。
本系统主要是应用于学生各类信息的管理,总体任务是实现学生信息关系的系统化、规范化、自动化,其主要任务是统计学生各类信息进行日常管理,如查询、修改、增加、删除、以及学生选课、成绩的查询等
功能设计的管理系统。
2. 约束和限制
1.必须在 2022.03.31 号完成
2.成本不能超过 500 万
3.数据库采用 MySQL
3. 总体架构
3.1 架构分析
3.1.1 高性能
一家学校的学生、教职工等用户量级,一般是按万计算,不会突然增长。
3.1.2 高可用
数据高可用,数据不要全部丢失。
3.1.3 可扩展
业务需求比较复杂。
3.1.4 成本、安全
账号登录,权限认证,密码等加密保存。
3.2 总体架构
1)采用 Nginx 做任务分解器。
2)拆分成 3 个业务子系统。
3)一台主 MySQL 和一台备 MySQL,主备数据复制。
4)每天做一次数据全量备份。
4. 详细设计
4.1 核心功能
4.1.1 用户注册流程
4.2 关键设计
1)数据高可用
学生信息、课程信息、考试信息等的数据丢失,对学校的运营影响非常大。
2) 可扩展
功能需求比较复杂,拆分成子系统,分而治之。
4.3 设计规范
1)任务分解器,采用 Nginx;
2)子系统使用 Spring Boot 开发,服务发现采用 Consul,配置中心采用 Apollo;
3)MySQL 使用 Innodb 存储引擎;
5. 质量设计
5.1 使用 Prometheus + Grafana,采集服务器、子系统的指标,满足可观测性;
5.2 使用 Docker 容器化部署,复用服务器资源,降低成本;
6. 演进规划
6.1 一期
环境:搭建开发环境
界面:产品原型、设计界面
系统:数据模型、功能边界
6.2 二期
环境:搭建生产环境
开发:权限子系统、学生子系统、课程子系统
6.3 三期
测试、验收
评论