千万级学生管理系统的考试试卷存储方案
1、采用 Redis sentinel 的初步方案设计
2、细化 Redis sentinel 设计方案
分析:
Redis 1C 1GB 主从版,提供 8w QPS
请求试卷:1000 万 * 20(课)/ 20(周末不考试) / 4(每天 4 堂考试)/ 1 分钟 = 250 万请求/分钟 ≈ 5 万/每秒。
少于两个节点,就没必要上 sentinel
所以方案如下
2.1 采用 1 个 master,2 个 slave,来保证 redis 数据的高可用
2.2master 和 slave 服务器上分别部署上 sentinel ,来保证 master 的高可用
3、完善 Redis 的数据结构设计,明确具体使用哪种 Redis 数据结构
分析:redis 负责试卷的存储和访问
redis 存储方案设计 - -试卷访问
【数据结构设计】
Key:学校 ID + 学院 ID + 系别 ID+年级 ID+序号。
List:试卷信息。
【读写分析】
学生登录后,查看试卷时,会根据需要学校 ID + 学院 ID + 系别 ID+年级 ID+序号,请求获取数据信息;
redis 存储方案设计 - -试卷存储
【数据结构设计】
Key:学校 ID + 学院 ID + 系别 ID+年级 ID+序号+学号 ID。
zset: 试卷答案。
score: 试卷分数
【读写分析】
由于试卷答案不能重复,且只能提交一次,所以使用 zset,
老师阅卷后可以修改 score 进行打分。方便排序
评论