写点什么

【架构实战营】模块三

作者:Henry | 衣谷
  • 2021 年 11 月 10 日
  • 本文字数:1017 字

    阅读完需:约 3 分钟

前言

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


词汇表

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 三期

测试、验收


用户头像

我思故我在。——笛卡尔 2017.12.09 加入

盖士人读书,第一要有志,第二要有识,第三要有恒。

评论

发布
暂无评论
【架构实战营】模块三