架构实战营模块三作业
外包学生管理系统的架构文档
前言
本文是外包学生管理系统的详细架构设计文档,用于指导系统后续的开发、测试和运维。
词汇表
Nginx: HTTP 和反向代理 web 服务器
MySQL: 关系型数据库管理系统
1. 业务背景
随着学校的规模的不断扩大,学生数量的增加,需要处理的信息也日趋增大。不仅花费大量的教师资源,处理效率也十分低下。
为提高学生管理的管理水平,优化资源,尽可能降低管理成本成为学生管理的新课题,学生管理系统是从学生管理现状出发,根据学生管理的新要求进行开发设计的,它需要解决学生信息管理数据信息量大修改不方便,对一系列数据进行分析时花费时间长等问题,帮助学生管理人员有效管理学生信息。
系统总体需求:系统主要应用于学校学生信息管理,总体任务是实现学生信息管理的系统化、规范化和自动化,其主要任务是管理学生相关信息,如学籍、课程、成绩、奖惩。
1. 系统使用者有学生、教师、管理员、辅导员等。
2. 学生:维护个人信息;在线选课;上传日常笔记或文件;查看个人信息、课程表、个人成绩等信息;
3. 教师:上传考试试题;批改作业;维护学生成绩;上传资料等;
4. 管理员:发布课程信息;权限维护等;
5. 辅导员:辅导员可以查看学生的信息,可以设置学生的奖惩信息等;
2. 约束和限制
1.必须在 2021.09.01 号完成(新学期要使用)
2.必须可以支持 10000 人(在校学生将近 1w 人)
3.服务器有限;
4.前期可以先做学生管理和课程管理,后期需要新增考试管理;
3. 总体架构
3.1 架构分析
高性能:不需要,由于只需要服务 10000 名学生,每秒峰值最多就几百,对系统性能要求不高。
高可用:需要,很多数据是手工录入,不希望丢数据,所以需要数据高可用。
可扩展:需要,系统需求涉及到学生管理,课程管理,需要扩展新的需求,比如考试管理等,有一定的复杂度。
安全:要求低,校内人员使用,不涉及金融、证券和资金。安全复杂度低。
成本:开发周期短;硬件成本低;
总结:架构的复杂度主要集中在业务可扩展性和数据高可用上。
3.2 总体架构
1)使用 NGINX 负责请求接入。
2)按模块划分子系统:学生、课程和权限。
3)数据库采用 mysql 主备架构。
4. 详细设计
4.1 核心功能
系统可分为四个子系统,其中考试管理子系统第二期考虑;
面向用户有:学生、教师、辅导员、管理员等;
4.2 关键设计
1、系统采用三层架构模型进行开发;
数据表现层:负责用户和系统之间的交互,主要表现在将系统的数据按照 用户的业务操作按照一定的规则显示在页面上
业务逻辑层:完成各个子系统之间的通信和交互,以实现系统的业务功能
数据处理层:实现系统的数据和数据库之间的交互
4.3 设计规范
1. 前后端分离,RESTful API 规范;
2. 后端服务使用 SpringBoot 开发,做数据持久化映射;
3. 前端页面使用 Vue 开发;
4. MySQL 使用 5.7 社区版,InnoDB 引擎。
5. 质量设计
1.可测试性设计:RESTful API 构造 mock 数据;
2.可维护性设计:增加管理后台;
3.可运维性设计:增加管理后台;
4.安全/成本设计:
6. 演进规划
第一期完成学生信息子系统、课程信息子系统、权限信息子系统的开发。
第二期完成考试管理子系统的开发。
版权声明: 本文为 InfoQ 作者【袁小芬】的原创文章。
原文链接:【http://xie.infoq.cn/article/c15f7b459efc7dedeb59ed7e5】。未经作者许可,禁止转载。
评论