千万级考试试卷存储方案
需求:
考试数据评估:
一、Redis 数据结构设计:
1、试卷题目存储数据结构设计
• 使用 redis String 数据结构
• key: 课程号 + 试卷编号(根据场景,每门课程每次考试都有唯一的试卷编号)
• value: 试卷内容
2、试卷答案存储数据结构设计
• 使用 redis Hash 数据结构
• hashKey: 课程号 + 试卷编号
• hashValue:试卷答案。
二、读写流程
Redis 中存储当天的考试题目,及考试答案。
考生考试时先从 redis 里读取考试试题
考生答题完毕,插入考生答题记录到 Redis,并将具体的答题信息写入到 HBASE 中。
老师评分,查询 Redis,进行评分,并将结果同步到 HBASE 及 MySQL 中。
三、性能估算
1、试卷请求 QPS 约为 5w/s,而单台 Redis QPS 预估 5-10w/s。因此需要考虑对试卷内容进行缓存,同时评估缓存容量。
2、,考虑到单台 Redis 数据量内存为 2-4G,因此 Redis 缓存无需考虑缓存分片,单机存储即可,考虑到高可用需要,Redis 最终方案选择为 Redis Sentinel(两台 Redis:一台主 Redis,一台从 Redis。Sentinel 服务器为三台,配置为 8c16g),对于读写我们也可以采用 bit 方式可以极大节省空间。
评论