架构 1 期模块四作业
千万级学生管理系统的 Redis sentinel 考试试卷存储方案
1.考试试卷存储性能的需求
试卷请求 QPS:1000 万(用户预估量) * 20(课)/ 20(周末不考试) / 4(每天 4 堂考试)/ 1 分钟 = 250 万请求/分钟 ≈ 5 万/每秒
试卷提交 TPS:1000 万 * 20(课)/ 20(周末不考试) / 4(每天 4 堂考试)/ 30 分钟 = 1700/每秒
2.数据结构
选择 list,list 有序且可以重复,题目一道一道的放
key:学校 ID+学号 ID+试卷 ID
Column Family:test
Column:result,score,其中 result 是 JSON 格式
3.部署架构
试卷存储和访问使用 redis sentinel 存储,其部署架构为主从复制,可采取“二次读取”应对读写分离带来的复制延时,也可忽略复制延时,因为上传试卷和考试时间可能间隔比较久。
4.具体读写流程:
1)学生登录考试系统,权限系统经过验证,学生登录成功。
2)学生请求考试试卷,redis 读取试卷,返回结果。
3)学生提交试卷,redis 保存试卷内容并返回提交结果。
5.Redis sentinel 服务器数量及性能
redis 单机支持 5 万-10 万 TPS,在校学生单次考试结果存储量为 1000 万 * 20(课)* 1000(答案)= 0.2T=204.8G
因此服务器的适量为 204.8G/128G≈2 台,考虑到性能冗余,将服务器增加到 3 台。
评论