架构实战营 - 模块三作业
外包学生管理系统架构文档
前言
本文是学生管理业务系统详细架构设计文档,用于指导学生管理系统后续的开发、测试和运维。
词汇表
Nginx:一种代理服务器。
MySQL:一种开源关系型数据库。
OAuth2:认证框架。
Vue :前端开发框架。
1. 业务背景
随着学校的规模的不断扩大,学生数量的增加,需要处理的信息也日趋增大。不仅花费大量的教师资源,处理效率也十分低下。本系统主要是应用于学生各类信息的管理,总体任务是实现学生信息关系的系统化、规范化、自动化,具体如下:
提高管理水平,优化资源,尽可能降低管理成本:从学生管理现状出发,根据学生管理的新要求进行开发设计,它需要解决学生信息管理数据信息量大修改不方便,对一系列数据进行分析时花费时间长等问题,帮助学生管理人员有效管理学生信息。
提高信息准确度及工作效率:通过系统规范化地管理、科学性统计和快速查询、修改、增加、删除等,提高信息的准确度以及日常管理的工作效率。
本系统主要是应用于学生各类信息的管理,总体任务是实现学生信息关系的系统化、规范化、自动化,其主要任务是统计学生各类信息进行日常管理,如查询、修改、增加、删除、以及学生选课、成绩的查询等功能设计的管理系统。
2. 约束和限制
无
3. 总体架构
3.1 架构分析
3.1.1 高性能
一个学校的内部系统,总用户数量一般在几千到几万,对性能要求不高,没有特别的高性能设计。
3.1.2 高可用
学生管理系统的可用性要求并不高,对系统不可用的容忍度比较大,但应该避免数据丢失带来的损失。所以应该采用主从结构,从库用作备份,也可缓解部分查询压力。
3.1.3 可扩展
业务简单,适当考虑可扩展性。
3.1.4 成本
无。
3.1.5 安全
无。
3.2 总体架构
Nginx 用作代理,把请求转发到各个子系统。
学生子系统负责学生管理业务。
课程子系统负责课程管理业务。
权限子系统负责权限管理。
所有子系统位于同一个 mysql 实例,建立不同的数据库。
学生子系统和课程子系统需要调用权限子系统用于鉴权。
学生子系统需要调用课程子系统用于选课。
MySQL 数据库采用主备架构,主库用于写入和查询,备库可用作查询。
4. 详细设计
4.1 核心功能
4.2 关键设计
1 权限系统
系统用于“认证”和“授权”,采用 RBAC0 权限模型,OAuth2 作为认证框架,JWT 作为授权协议。
基于 Spring Security 开发。
2 使用 mysql 数据库主从复制策略。
4.3 设计规范
1 系统后端使用 Spring Cloud 开发。
2 系统前端使用 Vue 。
3 系统提供 restful 接口,数据传输使用 json。
5. 质量设计
5.1 成本
无。
5.2 可测试性
无。
5.3 可维护性
提供设计文档和帮助文档。
5.4 可观测性
无。
6. 演进规划
第一阶段:核心功能,学生管理,权限管理,选课,成绩查询
第二阶段:统计功能,学生成绩统计,选课统计等
评论