学生管理系统考试试卷存储方案
-- 架构训练营模块四作业
存储性能估算
用户量预估:
学生数量 1000W
用户行为建模:
考试试卷的上传(由老师上传,并没有大的并发量)
学生考试试卷的读取
性能估算:
基础数据(一学期):
20 门机考课
考试内容:20 判断题、20 选择题、4 道大题
访问数据预估:
试卷上传:请求量小,可忽略
请求试卷:1000W * 20(课)/ 20(天, 考试时间小于 22 天)/4(每天 4 堂课)/60(秒,都是第一分钟开始查找试卷) = 5 万/秒 【QPS:5W】
存储数据预估每年:
1000w/100(每个学校每个专业 100 人) * 20(课) *2(次考试)*2(2 学期)*1M(试卷大小)= 8 T
存储系统选择
试卷读取,是读多写少的业务场景,而且读取的并发量非常大,业务要求高可用非常高
采用 Redis Sentinel 方案(分片集群)
存储方案设计
1. Redis 存储数据结构设计:
1. 学生进入考试系统,进入当前考场时,会查询到试卷 ID(这部分内容试卷部分暂不设计)
2. 试卷数据结构:
Key:试卷 ID
Value:试卷内容
采用 string 类型的 redis 数据结构
2. 读写流程:
当存储试卷是,如果试卷 ID 已经存在,直接采用覆盖方式,如果不存在就增加
读取采用 key 读取方式,性能最高
试卷有效期设置为一年,一年后将试卷迁移到冷存储数据中
3. Redis 集群机器数量估算:
预估使用 6 台机器:
1 Master
2 Slaver
3 Sentinel
评论