模块三作业
前言
本文是外包学生管理系统的架构文档,用于指导学生管理系统的后续开发、测试和运维。
词汇表
Nginx:是一款轻量级的 Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在 BSD-like 协议下发行。其特点是占有内存少,并发能力强。
MySQL:是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL 是最好的 RDBMS (Relational Database Management System,关系数据库管理系统)应用软件之一。
JWT:JSON Web Token (JWT)是一个开放标准(RFC 7519),它定义了一种紧凑的、自包含的方式,用于作为 JSON 对象在各方之间安全地传输信息。
1. 业务背景
随着学校的规模的不断扩大,学生数量的增加,需要处理的信息也日趋增大。不仅花费大量的教师资源,处理效率也十分低下。
为提高学生管理的管理水平,优化资源,尽可能降低管理成本成为学生管理的新课题,学生管理系统是从学生管理现状出发,根据学生管理的新要求进行开发设计的,它需要解决学生信息管理数据信息量大修改不方便,对一系列数据进行分析时花费时间长等问题,帮助学生管理人员有效管理学生信息。
因此学生信息管理系统可以通过系统规范化地管理、科学性统计和快速查询、修改、增加、删除等,提高信息的准确度以及日常管理的工作效率。
本系统主要是应用于学生各类信息的管理,总体任务是实现学生信息关系的系统化、规范化、自动化,其主要任务是统计学生各类信息进行日常管理,如查询、修改、增加、删除、以及学生选课、成绩的查询等功能设计的管理系统。
系统主要应用于学校学生信息管理,总体任务是实现学生信息管理的系统化、规范化和自动化,其主要任务是管理学生相关信息,如学籍、课程、成绩、奖惩。
2. 约束和限制
项目一期需要在一个半月内完成。
采用 Spring Boot 2.5.6 + Spring Cloud 2020.0.4
数据库采用 mysql。
服务器统一采购阿里云。
质量标准符合 ISO9001-XXXX。
可用性 99%。
成本不能超过 500 万。
可支持 5 万学生同时在线。
3. 总体架构
3.1 架构分析
高性能
假设学校有 5 万人,100 个人抢课或 1000 个人抢课对系统性能的要求并不高。
高可用
学生管理系统短时间挂掉影响不大,学校的其他管理并不完全依赖于学生管理系统;学生信息是人工录入或者学生注册的,因此对于信息丢失有非常严格的要求,允许丢失少量学生信息,但不可丢失全部。
可扩展
从业务需求来看,系统具有一定的复杂度。
成本
单个学校成本不是问题。
安全
不涉及证券、金融、资金以及个人隐私。
结论:
可扩展:业务需求比较复杂;
数据高可用:机房故障或磁盘出问题,数据不要全部丢失。
3.2 总体架构
如上图所示架构包括三层:接入层、业务层、数据层。
1)接入层:Nginx 负责请求接入,经过其反向代理将请求分发到具体的业务子系统。
2)业务层:包含学生子系统、课程子系统及权限子系统三大业务子系统,其中考试由课程子系统实现,老师由权限子系统实现。
3)数据层:采用 MySQL 主从备份,由于系统访问不大,读写均由主库负责。
4. 详细设计
4.1 核心功能
学生选课流程
4.2 关键设计
1)信息存储可靠性
消息存储在 MySQL 中,采用一主一备两台 MySQL 服务器,MySQL 服务器之间复制消息以保证消息存储高可用。
2)请求访问的安全性
利用 JWT 实现授权功能,用户发起的每一次请求均需携带 JWT,验证合法后,具体子系统再对请求做合理的响应。
4.3 设计规范
1)采用 Spring Boot + Spring Cloud 开发。
2)MySQL 使用 Innodb 存储引擎。
3)java 开发需遵从《阿里巴巴开发规范》。
4)使用 git 进行代码分支和版本管控。
5)所有返回前端的 response 必须是 HttpResult<T>类。
5. 质量设计
可测试性:
http 接口建立 postman 测试用例。
可维护性:
超级管理员具有超级权限,可对系统的异常数据进行管理。
mysql 可通过运维控制台进行管理。
可观测性:
通过系统运行日志查看系统运行状态。
业务数据可以通过管理员账户登录查看。
成本:
对于单所学校的学生管理系统,研发投入成本以及服务器成本并不高。
6. 演进规划
6.1 学生管理系统一期
完成学生管理、课程管理以及权限管理
6.2 消息队列二期
实现考试管理以及一期部分功能的完善
评论