架构实战训练营模块三
前言
本文是外包学生管理系统的详细架构设计文档,用于指导消息队列后续开发、测试和运维
词汇表
1. 业务背景
随着学校的规模不断扩大,学生数量的增加,需要处理的信息也日趋增大。需要有一款管理系统,统一管理学生信息,用来提高学生管理水平,降低人员管理成本。
学生管理系统是从学生管理现状除非,根据学生管理的要求进行开发设计的,它需要解决学生信息管理信息量大修改不方便,对一系列数据进行分析时花费时间长等问题,帮助学生管理人员有效学生信息。
本系统最终主要应用于学校学生信息管理,主要实现学生信息关系的系统化、规范化、自动化,主要任务是管理学生相关信息,如学籍、课程、成绩、奖惩。
2. 约束和限制
3. 总体架构
3.1 架构分析
3.1.1 数据高可用
对于学生管理系统学生数据在机房出故障、或者磁盘损坏情况,数据不能够全部丢失,允许部分数据丢失。如果数据全部丢失会导致整个学校运转出故障,
后期学校需要花费大量人力物力对数据进行修复。
3.1.2 业务可扩展
学生管理系统当前业务需求就比较复杂,随着管理系统的功能丰富,学校从人工管理逐渐过渡到管理系统管理,必然涉及到更复杂的功能。所以在项目前期需要考虑业务上的可扩展性。
3.2 总体架构
3.2.1 系统架构图
采用 nginx 做请求转发,根据业务功能,拆分成学生子系统、权限子系统、课程子系统。拆分多个子系统后,后期容易扩展。数据高可用采用 MySQL 主备方式,存在一定的数据延迟,但总体上满足业务需求以及数据可靠性
3.2.1.1 学生子系统
学生基本信息:
根据学生实际情况划分学院,分类管理。
3.2.1.2 权限子系统
账号登录:
学生、教师账号登录校验,账号基本信息管理
账号分配:
学生账号系统生成,给定相应权限,可以进行密码更改。教师账号由管理者(教务)通过系统生成。
权限控制:
学生、教师登录后页面访问权限控制,教师有对学生成绩和试卷评定的权限。
3.2.1.3 课程子系统
课程录入:
由管理员对相应课程体系进行录入、供学生、教师进行在线选择。
选课功能:
学生可以在线对自己的课程体系进行选择。
排课功能:
根据学生选定的课程和教学体系安排,对应教师、教室、时间进行统一规划安排。
课程查询:
课程体系、课程安排、课表、教师、教材查询。
成绩查询:
学生可以查询考试成绩。
4. 详细设计
[必选,描述核心场景或者流程的实现机制]
4.1 核心功能
4.1.1 账号登录
教师录入学生基本信息后,学生的初始账号和密码由系统默认生成,学生可以通过默认的账号密码登录系统,登录系统后可以自己修改账号密码。
4.1.2 权限控制
权限管理系统主要管理学生、教师拥有的权限,在学生和教师访问不同资源时,判断当前用户是否有此权限。
4.2 关键设计
4.2.1 数据库存储可靠性
数据存放在 MySQL 中,2 台机器一主一备,数据全部写入主,备节点做数据同步备份,备节点上需要有监控进程监控数据同步是否正常。如果同步不正常需要进行告警通知。
4.2.2 性能问题
抢课系统会出现一点的性能问题,在设计阶段需要控制针对,短期抢课出现的一些流量峰值情况。
4.3 设计规范
1.子系统对外暴露接口使用 HTTP 协议,内部服务交互使用 RPC 通信。
2.所有外部接口参数需要进行严格校验,入库密码,手机号需要进行加密处理。
3.MySQL 采用 Innodb 存储引擎,需要做主备结构。
4.代码异常情况需要捕获异常,打印相关日志,需要具备可调试性。
5. 质量设计
6. 演进规划
评论