写点什么

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

作者:smile
  • 2022 年 3 月 06 日
  • 本文字数:822 字

    阅读完需:约 3 分钟

【作业要求】

基于模块 4 第 6 课的估算结果和 Redis sentinel 的初步方案设计,完善考试试卷存储方案,具体包括:

• 完善 Redis 的数据结构设计,明确具体使用哪种 Redis 数据结构。

• 设计具体的读写流程(可以文字描述也可以序列图描述,序列图要有文字辅助说明)。

• 对照模块 4 第 6 课的性能估算结果,计算 Redis sentinel 集群的服务器数量和性能。


一、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 服务器为三台)。

用户头像

smile

关注

还未添加个人签名 2021.04.07 加入

还未添加个人简介

评论

发布
暂无评论
千万级学生管理系统的考试试卷存储方案_架构实战营_smile_InfoQ写作平台