【架构设计模块三】:学生信息管理系统的架构文档
前言
本文是【学生信息管理系统】详细架构设计文档,用于指导【学生信息管理系统】后续的开发、测试及运维
词汇表
Nginx:反向代理服务器
Node.js:开发语言
Koa:Node.js 开发框架
axios:基于 promise 的 HTTP 库
MySQL:关系型数据库
1. 业务背景
随着学校的规模的不断扩大,学生数量的增加,需要处理的信息也日趋增大。不仅花费大量的教师资源,处理效率也十分低下:
为提高学生管理的管理水平,优化资源,尽可能降低管理成本成为学生管理的新课题:学生管理系统是从学生管理现状出发,根据学生管理的新要求进行开发设计的,它需要解决学生信息管理数据信息量大修改不方便,对一系列数据进行分析时花费时间长等问题,帮助学生管理人员有效管理学生信息
学生信息管理系统可以通过系统规范化地管理、科学性统计和快速查询、修改、增加、删除等:提高信息的准确度以及日常管理的工作效率
学生信息管理系统主要是应用于学生各类信息的管理:总体任务是实现学生信息关系的系统化、规范化、自动化,其主要任务是统计学生各类信息进行日常管理,如查询、修改、增加、删除、以及学生选课、成绩的查询等功能设计的管理系统
基于以上,开发一个【学生信息管理系统】,主要应用于学校学生信息管理,总体任务是实现学生信息管理的系统化、规范化和自动化,其主要任务是管理学生相关信息,如学籍、课程、成绩、奖惩。
系统边界黑盒图:略。由于未涉及到外部系统,此处略去。
2. 约束和限制
使用团队目前熟悉的语言:Node.js
数据库选择:MySQL
在新学期开学前投入使用:20210901
3. 总体架构
3.1 架构分析
高性能:
不需要:一般高校师生最多 5W 人左右,且学生管理、课程选择等操作不会太多,TPS 不会很高
高可用:
不需要服务高可用:服务可以不高可用,不要影响太久即可,可停机维护
需要数据高可用:数据不要完全丢失
可扩展:业务需求比较复杂,但功能目前比较稳定,保持一定的扩展能力即可
成本 & 时间:开发投入人力和时间不能太长
安全:
仅供校园网访问
3.2 总体架构
架构图描述:
使用 Nginx 做负载均衡
服务拆分为学生、课程、权限子系统:分别承担学生管理、课程管理及权限管理功能,职责分明
MySQL 主备:主库提供服务,备库用于备份,确保数据可用性
4. 详细设计
4.1 核心功能
这里仅列举【学生注册 & 审批流程】、【课程录入 & 选课流程】
4.1.1 学生注册 & 审批流程
学生注册:
学生使用客户端调用【学生子系统】进行注册
【学生子系统】校验相关信息
基于相关信息反馈结果
学生审批:
管理员使用客户端调用【学生子系统】审批
【学生子系统】调用【权限子系统】校验权限
基于审批操作 & 校验权限返回结果
4.1.2 课程录入 & 选课流程
管理员录入课程:
管理员使用客户端调用【课程子系统】录入课程
【课程子系统】调用【权限子系统】校验权限
基于校验权限返回结果
学生选取课程:
学生使用客户端调用【课程子系统】选取课程
【课程子系统】调用【权限子系统】校验权限
基于校验权限返回结果
4.2 关键设计
高性能:基于高校实际学生人数及日常使用情况,不支持高性能
高可用:
不需要服务高可用:服务可以不高可用,不要影响太久即可,可停机维护
需要数据高可用:使用 MySQL 主备,主库用于日常使用,备库用于日常备份;若主库出现问题,尝试恢复主库,否则切为备库支撑使用
安全:仅校园网可访问
4.3 设计规范
开发阶段:
前端使用 Vue 开发
后端使用 Node.js 开发
数据库使用 MySQL,并使用 InnoDB 存储
使用 HTTP 协议传输数据,数据格式为 JSON
前端 & 后端皆使用 axios 进行网络请求
使用 Rap2 管理接口文档
使用 PostMan 在开发阶段进行自测
使用 mocha、power-assert、nyc 进行单元测试
部署阶段:
使用 Nginx 作为反向代理服务器
5. 质量设计
可测试性设计:
方案设计详尽:保证测试同学可进行各种场景
自动化接口测试:测试同学基于研发提供的接口文档,准备自动化接口测试
可维护性设计:
单元测试:每次提交代码前,研发运行单元测试,保障
可运维性设计:
关注 MySQL 存储量
关注 3 个子系统对应的 Node 进程
安全设计:
仅校园网可访问
成本设计:
4 台机器:1 Nginx 前置机、1 后端服务机器、2 台 MySQL 机器
6. 演进规划
规划:
1-2 期快速开发,1 期可先交付,用于旧数据迁移
2 期在开学前交付,便于学校进行课程管理
3 期在开学后 8 周内交付,用于考试
一期
完成【学生子系统】:实现账号分配、账号绑定、信息查询等功能
完成【权限子系统】:实现权限管理
目标:用于学生信息的管理——实现初步信息化,先将全校师生信息管理起来
二期
完成【课程子系统】:实现课程录入、选课、排课等功能
目标:用于课程管理
三期
完善【课程子系统】:实现试卷区域分割、评分判断等
目标:实现考试管理
版权声明: 本文为 InfoQ 作者【Ryoma】的原创文章。
原文链接:【http://xie.infoq.cn/article/9f3689d0f1c5fe5bd0ab8847d】。文章转载请联系作者。
评论