架构实战营 - 模块四作业
千万级学生管理系统的考试试卷存储方案
Redis 数据结构设计
1,课程列表
采用 List,key:学校代码,value:课程列表
2,试卷列表
采用 List,key:学校代码+课程代码,value:试卷列表
3,试题列表
采用 List,key:学校代码+课程代码+试卷代码,value:试题列表
4,考生答题结果列表
采用 List,key:学校代码+课程代码+试卷代码+考生代码,value:考生答题结果列表
读写流程
1,教师出题:读取试卷的试题列表->插入题目
2,考生作答:读取试卷试题列表->提交答案
服务器数量及性能
使用 redis 主要是为了支撑读取性能。假设学校的考试都安排在某一个月内,考试的时候请求试卷,提交答案,中间答题过程浏览器本地完成,由于考试集中在上午 4 小时和下午 4 小时,且请求试卷集中在考试开始的前 1 分钟,提交答案集中在考试结束前的 30 分钟,因此估算如下:
• 请求试卷:1000 万* 20(课)/ 20(周末不考试) / 4(每天 4 堂考试)/ 1 分钟= 250 万请求/分钟≈ 5 万/每秒。
• 提交试卷: 1000 万* 20(课)/ 20(周末不考试) / 4(每天 4 堂考试)/ 30 分钟= 1700/每秒
采用 Redis Sentinel ,一主二从。redis 单机读取可达到 10W+,3 台 QPS 可到 30W+,满足 5w 的 QPS 需求;
评论