写点什么

千万级学生管理系统的考试试卷存储方案 - 模块四

用户头像
hello
关注
发布于: 5 小时前
千万级学生管理系统的考试试卷存储方案-模块四

要求:

考试数据评估:

存储架构设计

一、Redis 数据结构设计:

1、试卷题目存储数据结构设计

•      使用 redis String 数据结构 

•      key: 课程号 + 试卷编号(根据场景,每门课程每次考试都有唯一的试卷编号)

•      value: 试卷内容

2、试卷答案存储数据结构设计

•      使用 redis Hash 数据结构 

•      hashKey: 课程号 + 试卷编号

•      hashValue:试卷答案。


二、读写流程

1、将考试题目,考试答案存储在 HBASE。

2、Redis 中存储当天的考试题目,及考试答案(只含选择题、判断题答案)。

3、考生考试时先从 redis 里读取考试试题并返回页面展示。

4、考生答题完成后提交试试卷,插入该考生答题记录,具体答题信息写入 HBASE,异步触发对比选择题答题、判断题答案,并将结果写入对应考生考试记录中。

5、老师评分,查询 HBASE,将提取填空题和问答题进行评分,并将结果同步到 HBASE 及 MySQL 中。


三、性能估算

1、试卷请求 QPS 高达 5W/s,而单台 Redis QPS 可达 8W/s。因此需要考虑对试卷内容进行缓存,同时评估缓存容量。

2、根据网上查询:全国大致 3000 大学,500 专业课,平均每个学校估算开设 100 个专业,考虑到每个院校专业试卷不一样,一次考试生成大约 30W(3000 所院校*100 门专业)套试卷,每天大约 1.5W 套(30W 试卷/20 天)试卷,每天存储大约为 1.5G(1.5W 套*100KB),,考虑到单台 Redis 数据量内存为 2-4G,因此 Redis 缓存无需考虑缓存分片,单机存储即可,考虑到高可用需要,Redis 最终方案选择为 Redis Sentinel(两台 Redis:一台主 Redis,一台从 Redis。Sentinel 服务器为三台)。


用户头像

hello

关注

还未添加个人签名 2019.03.18 加入

还未添加个人简介

评论

发布
暂无评论
千万级学生管理系统的考试试卷存储方案-模块四