写点什么

模块四

用户头像
Winston
关注
发布于: 1 小时前

设计千万级学生管理系统的考试试卷存储方案

 

1.用户量预估

1000 万

2. 用户行为建模和性能估算-考试

2.1. 考试

假设每门学科每年 2 次考试,每个学生平均一学期 20 门课,考试采取机考的方式,每门考试的答案 20 判断题、20 选择题、4 道大题(答案 200 字以

内),考试结果永久保存,在校学生能够看到自己曾经的考试结果

则考试结果记录的存储量为:

l 在校学生:1000 万* 20(课)* 2(考试次数)* 1000(答案)* 2(学期)* 3(只有前三年考试)= 2.4T。

l 离校学生:每年 250 万,存储量为 0.6T。

l 假设学校的考试都安排在某一个月内,考试的时候请求试卷,提交答案,中间答题过程浏览器本地完成,由于考试集中在上午 4 小时和下午 4 小时,

l 且请求试卷集中在考试开始的前 1 分钟,提交答案集中在考试结束前的 30 分钟,因此估算如下:

l 请求试卷:1000 万* 20(课)/ 20(周末不考试)/ 4(每天 4 堂考试)/ 1 分钟= 250 万请求/分钟≈ 5 万/每秒。

l •提交试卷:1000 万* 20(课)/ 20(周末不考试)/ 4(每天 4 堂考试)/ 30 分钟= 1700/每

根据上面的指标进行 redis 相关的性能及架构存储方案进行设计

l 试卷大小: 70(字)×20(判断题)+100(字)×20+100(字)×4=3800×3(一个汉字 3byte)= 12000 =(约) 1.5K

l 单机 1000M 带宽 redis 每秒可处理的试卷数:(1000×1024)/1.5 = 68 万(单机就能满足网络需求)

l 单机 2C4G 的 redis 性能参数:使用 string 类型 1.5K, qps:25000/s

l 试卷存储数据结构:string

l 根据前面的计算结果考试请求时间的 qps:50000/s,所以 redis 的提供的 slave(2C4G 读)机器需要 3 台,master(2C4G 读写)一台,sentinel 机器(1C1G3 台),一共需要 7 台 redis 设备。

 

Redis 存储方案设计-原始试卷信息

开考前由相关科目的老师将试卷上传至题库,并预热至 redis 缓存中。

数据结构设计

Key:学校 ID+院系 ID+年纪 ID+考试科目 ID

Value: 考试科目内容

读写分析:

1. 学生登录后获取到自己的学校 ID+院系 ID+年纪 ID 然后进入到考试页面选择考试科目,

通过学校 ID+院系 ID+年纪 ID+考试科目 ID 既可拿到试卷进行考试。

2. 考试结束后由相关科目的老师各自清除对应的试卷。

Redis 存储方案设计-答卷信息

数据结构设计

Key:学校 ID+学号 ID+考试科目 ID

Value: 答卷内容

读写分析:

1. 学生答题结束后,将试卷按 key:学校 ID+学号 ID+考试科目 ID 将答卷内容保存至 redis 集群中,等待相关的老师进行阅卷。

2. 老师阅卷完成并将成绩录入完成后,系统自动将答卷从 redis 中清空。

 

用户头像

Winston

关注

还未添加个人签名 2018.11.15 加入

还未添加个人简介

评论

发布
暂无评论
模块四