模块四作业-考试试卷存储方案
要求
基于模块4第6课的估算结果和 Redis sentinel 的初步方案设计,完善考试试卷存储方案,具体包括:
• 完善Redis的数据结构设计,明确具体使用哪种 Redis 数据结构。
• 设计具体的读写流程(可以文字描述也可以序列图描述,序列图要有文字辅助说明)。
• 对照模块4第6课的性能估算结果,计算 Redis sentinel 集群的服务器数量和性能。
数据结构设计
采用 String 类型
key:课程id+考试id
value:用json保存试卷内容
读写流程
Redis sentinel集群的服务器数量和性能
学生总量约1000万,假设每门学科每年2次考试,每个学生平均一学期20门课,一个课程同意学期有200个学生,同一个学校,一个课程通常使用同一个试卷,因此,试卷数量=课程数量;考试采取机考的方式,每门考试的答案20判断题、20选择题、4道大题(答案200字以内);假设教师在考试前一个周内提交试卷,提交时间集中在工作日工作时间的8小时;假设每份试卷20k;
1.试卷数量=课程数量=1000w*20*2/200=200w
2.每年试卷存储量:200w*20k=40G
3.写-教师录入试卷:50w/(5*8*3600)=3/s,可以忽略不计
4.读-学生考试读取试卷:1000万 * 20(课)/ 20(周末不考试) / 4(每天4堂考试)/ 1分钟 = 250万请求/分钟 ≈ 5万/s
单台redis性能为5w-10w(QPS),单台64G存储即可,需要在故障时自动切换,采用一主一备,另外需要两个sentinel 进行监控和自动切换
因此,需要4台64G Redis sentinel集群服务器。