模块四作业
作业要求
基于模块 4 第 6 课的估算结果和 Redis sentinel 的初步方案设计,完善考试试卷存储方案,具体包括:
• 完善 Redis 的数据结构设计,明确具体使用哪种 Redis 数据结构。
• 设计具体的读写流程(可以文字描述也可以序列图描述,序列图要有文字辅助说明)。
• 对照模块 4 第 6 课的性能估算结果,计算 Redis sentinel 集群的服务器数量和性能
提示
1. 性能可以有一定冗余。
千万级学生管理系统的考试试卷存储方案需求汇总
假设全国有 1 万间学校,每一间学校每一个学期最多有 200 门课,一年 2 次考试,每门考试的答案 20 判断题、20 选择题、4 道大题,存储系统只保留最近 6 年的考卷。
在校学生考卷的存储量:
一年:10000*100(课)*2(考试次数)*50(题目)*2(学期)=200MB
假设存储 20 年卷的存储量:200MB*20=4GB
2. 试卷请求 QPS:5 万/s;
Redis 的存储方案设计
数据结构设计
key: 学校 ID + 年份+学期 ID+课程 ID+ 考试 ID
Value :List,JSON 格式
读写分析
1.老师提交题目,按照 key 保存。
2.老师需要修改题目时,按照 key 将全部考卷内容返回,修改后,再按照 key 保存。
3.试卷请求时,按照 key return 考卷内容
4.如果需要查询某一家学校,某一年份,某一学期,某一课程,可以按照前缀来查询即可。
Redis sentinel 集群的服务器数量
选择 3 台服务器。单机可支持 TPS/QPS 5~10 万,这样已经足够应付试卷请求 QPS:5 万/s, Master 故障的时候 sentinel 自动切换。
既然已经可以应付试卷请求的 QPS, 老师提交修改试卷的 TPS 肯定远低于这个值,这个数量可以支援读写的需求。
评论