Module-3:外包学生管理系统架构设计文档
前言
本文是外包学生管理系统详细架构设计文档,用于指导外包学生管理系统后续的开发、测试和运维
词汇表
Nginx:是一个高性能的 HTTP 和反向代理 web 服务器
Mysql:一个关系型数据库管理系统
Laravel: 是一套简洁、优雅的 PHP Web 开发框架 (PHP Web Framework)
Swoole: 是一个面向生产环境的 PHP 异步网络通信引擎
Quasar:一款开源的基于 vue 的 GUI 框架
1. 业务背景
随着学校的规模的不断扩大,学生数量的增加,需要处理的信息也日趋增大。带来了以下问题:
占用大量的教师资源处理学生信息。
人工处理数据效率低,容易出错,不易维护。
基于以上问题,我们需要引入学生管理系统,实现学生信息关系的系统化、规范化、自动化,主要任务是统计学生各类信息进行日常管理,如查询、修改、增加、删除、以及学生选课、成绩的查询等功能设计的管理系统。
2. 约束和限制
必须在 2022.06.30 号完成
成本不能超过 50 万
数据库采用 Mysql
3. 总体架构
3.1 架构分析
3.1.1 高可用
对于学生系统来说,数据丢失后会影响学校的教学运作,且需要大量的人工重新录入,是非常严重的事情。
3.1.2 高性能
基于用户规模的预估,不需要高性能考虑。如果对选课有高并发场景的需要,可以通过排队等技术方案解决。
3.1.3 可扩展
预计本系统将使用 3 到 5 年,对于数据量的要求不高,但要考虑各种需求扩展。
3.1.4 安全性
数据涉及学生隐私,权限涉及系统安全,对管理后台密码做强度要求即可。
3.2 总体架构
整个系统拆分为:学生子系统、课程子系统、权限子系统
使用 Nginx 负责请求接入,把请求反向代理到具体的子系统
数据存储需要一定的高可用,采用 MySql 主、备架构
4. 详细设计
4.1 核心功能
4.1.1 核心业务流程分析:
4.2 关键设计
1)业务扩展性
拆分为 3 个子系统,各子系统负责不同领域的业务实现,便于后续扩展其他功能
2)数据存储可靠性
数据存储在 MySQL 中,每个分组有一主一备两台 MySQL 服务器,MySQL 服务器之间复制数据以保证数据存储高可用。如果主备间出现复制延迟,恰好此时 MySQL 主服务器宕机导致数据无法恢复,则部分消息会永久丢失,这种情况不做针对性设计,DBA 需要对主备间的复制延迟进行监控,当复制延迟超过 30 秒的时候需要及时告警并进行处理。
3)前后分离
管理员、教师的使用场景主要以 PC 端为主,主要功能基本都是 crud,学生的使用场景更多需要考虑移动的实现。所以学生子系统考虑采用前后分离的开发模式。前端使用 vue3 ,后端使用 laravel 框架提供接口。教师跟管理员端借助 DCatAdmin 扩展可快速搭建权限体统跟管理后台系统。
4.3 设计规范
权限子系统开发使用 Laravel9+dcatadmin
课程子系统开发使用 laravel9+dcatadmin
学生子系统开发使用 laravel9 + swoole ;quasar + vue3 开发前端系统
服务间数据响应采用 json 格式
接口遵循 Restful 风格
5. 质量设计
5.1. 可测试性
api 接口使用 apifox 进行管理,并配置自动化测试用例
laravel 框架内集成了单元测试,功能测试等模块,可方便快速开发测试
前后分离,学生端使用 Quasar 框架,也集成了 单元测试、浏览器测试功能,可单独进行测试。
5.2. 可维护性
管理后台可使用 modules 扩展分模块进行开发。
5.3. 可观测性
管理系统自身是一个管理后台,具有一定的可观测性。
使用 laravel 框架 DCatAdmin 扩展,后台的操作已自带日志管理,记录关键操作。
可搭建 telescope 扩展进行系统监测,日志分析,异常记录管理等
6. 演进规划
6.1 学生管理系统一期
以实现核心功能为主,先保证系统能正确运行起来,满足核心场景的使用需求。过程中再不断收集教师学生的反馈。
6.2 学生管理系统二期
在听取使用者的反馈后不断完善系统,进一步挖掘用户需求,从性能及用户体验上完善系统。性能上可以考虑使用 swoole ,目前借助 laravel9 框架的 octane 扩展可以非常方便的使用 swoole ,性能可得 10 以上的提升。
6.3 学生管理系统三期
设计开发基于 SaaS 平台架构的学生管理系统,可供面向更多的客户
版权声明: 本文为 InfoQ 作者【Jadedev】的原创文章。
原文链接:【http://xie.infoq.cn/article/d87118c9061b29e61778c24b7】。未经作者许可,禁止转载。
评论