架构实战营作业 M03
前言
本文是学生管理系统的详细架构设计文档,用于指导整体系统开发、测试、运维
词汇表
学生自助平台:指学生用于自助信息管理、查询的操作平台
教师自助平台:指教师用于自助信息管理、课程、考试等信息管理的操作平台
1. 业务背景
随着学校的规模的不断扩大,学生数量的增加,需要处理的信息也日趋增大。不仅花费大量的教师资源, 处理效率也十分低下。
为提高学生管理的管理水平,优化资源,尽可能降低管理成本成为学生管理的新课题,学生管理系统是从 学生管理现状出发,根据学生管理的新要求进行开发设计的,它需要解决学生信息管理数据信息量大修改 不方便,对一系列数据进行分析时花费时间长等问题,帮助学生管理人员有效管理学生信息。
因此学生信息管理系统可以通过系统规范化地管理、科学性统计和快速查询、修改、增加、删除等,提高 信息的准确度以及日常管理的工作效率。
本系统主要是应用于学生各类信息的管理,总体任务是实现学生信息关系的系统化、规范化、自动化,其 主要任务是统计学生各类信息进行日常管理,如查询、修改、增加、删除、以及学生选课、成绩的查询等 功能设计的管理系统。
从功能角度,整体系统可以分为 3 个组成部分:
学生自助平台:给学生提供查询个人信息、课程信息、选课、考试结果查询等功能的平台
教师自助平台:给教师提供管理学生信息、录入课程信息、考试信息等功能的平台
学生管理系统:实际的后端程序,用于支撑上述 2 个交互系统。
2. 限制 &约束
整体项目必须在日期 xxx 前完成
整体成本不能超过 xxx 万
3. 总体架构设计
整体架构采用了微服务的架构。按照业务功能又细分为 3 个子系统:
学生子系统:用于实现学生信息的 CRUD 等操作
课程子系统:用于实现课程信息的 CRUD 等操作
权限子系统:用于权限控制
整体系统使用 B/S 结构。通过 Web 界面提供学生自助平台、教师自助平台的功能。
外层通过 Nginx 提供统一的访问 API,学生自助交互平台和教师自助交互平台通过 HTTP + JSON 方式和后台系统进行交互。
每个子系统可以酌情使用多机器部署,使用 Nginx + KeepAlive 来避免单点故障
4. 详细架构设计
4.1 核心功能
4.1.1 课程信息录入流程
整个信息录入流程包含下面几个步骤:
教师登录教师自助平台,录入信息,提交信息
课程信息发送到课程子系统,课程子系统调用权限子系统进行鉴权操作
鉴权通过,课程子系统写入实际信息到数据库
课程子系统返回响应,界面显示录入结果
4.2 关键设计
1) 灵活权限管理
整个系统多个场景设计到权限控制,如:
学生个人信息的权限控制,信息隔离
学生个人媒体资产的权限控制
学生信息和老师信息之前关联的权限控制
课程信息和学生信息、老师信息之间的权限控制
...
为加强整体架构设计的扩展性,系统使用 Shiro 配合 RBAC 的设计思路来构建整体的权限控制方案,并单独拆分权限控制子系统来方便系统迭代和演进。
4.3 设计规范
1)后端技术栈使用 SpringBoot + Shiro + MyBatis
2)数据库使用 MySQL(Innodb 存储引擎)
3)前端技术栈(学生自助平台、教师自助平台)使用 Vue+Webpack
4)前后端之间使用 HTTP+JSON 格式进行交互,消息格式满足基础格式固定,形如:
5. 架构质量设计
5.1 数据安全
由于该系统为实际生产系统,学生、考试、课程等信息又是高校相对重要的一种数字资产。所以数据存储安全要求相对较高。但是顾全到整体技术度和成本,考虑使用 MySQL 主备的方案来进行核心数据的存储。且可以酌情选择将数据库数据定期冷备到三方存储,加强数据防丢保障。
6. 架构演进规划
6.1 学生管理系统一期
包含下述主要功能:
学生账号信息管理
组织管理层级信息管理
学生个人学习资料管理、权限控制
学生信息查询,如课程、成绩、文件查询
课程管理信息管理功能
教师侧排课功能、教程选定功能等
考试信息管理
6.2 学生管理系统二期
包含下述主要功能:
学生账号信息增加三方信息绑定功能,三方如手机号、微信号等,并增加账号自助找回功能
增加学生个人学习资料支持媒体类型
增加课程习题功能、作业功能
...
版权声明: 本文为 InfoQ 作者【Shawn Liu】的原创文章。
原文链接:【http://xie.infoq.cn/article/1f134a4dcd9609ea3e4856f08】。未经作者许可,禁止转载。
评论