架构训练营模块三作业
前言
写出外包学生管理系统的架构文档
1. 业务背景
本系统主要应用于学校学生信息管理,总体任务是实现学生信息管理的系统化、规范化和自动化,其主要任务是管理学生相关信息,如学籍、课程、成绩、奖惩。
系统主要有以下四个方面的具体需求:
1)学生管理:系统登陆、账号分配、账号绑定、组织管理层级、文件上传下载、信息查询
2)课程管理:课程录入、选课功能、排课功能、教材选择
3)考试管理:发起考试、评分判定、平时成绩
4)权限管理:系统使用者有学生、教师、管理员、辅导员,分别对应不同的职责。
2. 约束和限制
该项目只服务于一所学校,师生人数约 1000 人
学生数据非常重要,需要长期可靠保存
作为外包项目,在实现所有功能的前提下,尽可能采用低成本,快速交付的方案
3. 总体架构
3.1 架构分析
3.1.1 高性能
目标用户总是在 1000 人左右,平均每天访问量预计 2000~3000
每学期选课可能引发短时高访问量,通过各年级错峰选课的策略,预计在线人数峰值在 200 人左右
本系统非实时交互系统,对响应请求的最大容忍时间为 60s
基于以上访问数据,单应用服务器即可满足,无需集群。
3.1.2 高可用
本系统对服务的高可用性要求较低。在白天(8:00AM~8:00PM)的最长容许 down 机时间是 1 小时,夜间 down 机可以等到第二天上班解决。
本系统对数据的高可用性要求很高。所有数据必须永久安全保存。如果数据大面积丢失会遭到教育部门的处罚。
基于对数据高可用的需求,数据库服务器将采用主备机制。
3.1.3 可扩展
外包项目,暂时没有可扩展的需求。
3.1.4 安全
网络服务器基本安全需求,防止黑客拖库,篡改信息
为防止账号被盗,后期可以引入登陆二次验证机制
3.2 总体架构
Nginx:请求转发至不同应用服务器。未来如果各子系统有多台服务器,Nginx 也负责负载均衡的工作。
学生子系统:涉及学生相关的操作,账号分配、账号绑定、基本信息录入
课程子系统:包括课程的录入、选课、排课已经考试相关的发起、评定操作
权限子系统:包括用户角色分配,用户登陆验证,用户可访问接口和数据库定义
MySQL:所有信息数据的持久化管理,采用主备模式,尽可能防止数据丢失
4. 详细设计
4.1 核心功能
4.1.1 账号注册
学生在注册页面填入基本信息:学号、姓名、密码、邮箱、手机号、身份证、学院、班级
学生子系统创建新账户,发送邮件和短消息验证邮箱、手机号的有效性
辅导员在学生子系统中确认该学生的注册有效
学生子系统将账户激活,并通过邮件通知该学生
4.1.2 登陆
学生在登陆页面填入学号、密码
权限子系统验证密码,并发送短消息进行二次验证
学生输入验证码
权限子系统验证,通过后创建 session token
4.1.3 发布新课程
管理员录入新课程,并确定时间、人数、地点、任课老师
教务为课程添加教材
4.1.4 选课
学生登陆后,课程子系统列出对应的必选和选修课程,以及目前可选的上课时间
学生选择一门课(上课时间、地点和老师)并提交
课程子系统确认课程仍有剩余名额,并添加该学生的注册信息,并更新剩余名额
4.1.5 发布考试
教师登陆系统,课程子系统列出该教师正在教授的课程列表
教师挑选一门课程,并选择考试
教师设定知识点、范围、难易程度
课程子系统检索题库,并自动生成试卷
教师确认试卷内容,并打印
4.1.6 评分判定
教师上传签名过的试卷,并在系统中填入评分
课程子系统将试卷图片存储在文件服务器中
课程子系统将评分存入 MySQL 数据库
4.2 关键设计
4.2.1 MySQL 主备机制
所有的数据访问(增改查)都是连接 MySQL 主服务器,备服务器不对外提供服务
采用 MySQL 的主从复制来实现数据复制
如果 MySQL 主机 down 了,无法重启,必须由管理员手工将备机改成主机
4.2.2 数据访问安全性控制
用户登陆后会产生 session token,存在浏览器 cookie 中,有效期为 15 分钟
权限子系统会缓存 session token 对应的角色列表
任何对学生子系统,课程子系统的访问第一步都需要在连接权限系统,确保 session token 仍然有效,并获得对应的角色列表
4.3 设计规范
前端采用 Vue 框架
后端采用 Spring boot 框架
MySQL 使用 Innodb 存储引擎
前后端间,各个子系统之间用 HTTP + JSON 进行交互
5. 质量设计
5.1 管理员后台
监控各个子系统运行数据:当前请求数量+CPU、内存使用
重启业务和数据库服务器脚本
将 MySQL 备机切换成主机的步骤和运行脚本
5.2 成本
6 台服务器:3 台业务服务器+2 台 MySQL 服务器+1 台 Nginx 服务器
公网域名服务
短信服务费
学校已有邮件服务器
试卷打印由学校已有打印机提供
存储试卷图像的文件服务器是学校已有的 FTP 服务器
6. 演进规划
该外包项目目前只签订了一期的合同
评论