写点什么

考试试卷存储方案

作者:天天向上
  • 2021 年 11 月 21 日
  • 本文字数:578 字

    阅读完需:约 2 分钟

用户行为建模和性能估算 - 考试

假设每门学科每年 2 次考试,每个学生平均一学期 20 门课,考试采取机考的方式,每门考试的答案 20 判断题、20 选择题、4 道大题,全国一共有 10 万学校。每场考试的只有一份试卷,试卷分和基本信息和题目信息,考试前学校为对应班级的所有学生分配对应考试的权限,一个考生同时只会有一场考试的权限,

考试试卷的性能评估:

• 试卷大小:10 万学校 * 20(课)* 3(年级数量)*100KB(每场考试试卷大小) / 20(周末不考试)/ 4(每天 4 堂考试)/ = 7.2G,为避免考试集中在最后几天,容量设计为 16G。

• 请求试卷:1000 万 * 20(课)/ 20(周末不考试) / 4(每天 4 堂考试)/ 1 分钟 = 250 万请求/分钟 ≈ 5 万/每秒。


性能要求:

  • 试卷请求 QPS:5 万/s

  • 同时考试的试卷存储大小:16G


存储架构设计:

  • 存储架构图

为保证高可用,配置 3 个哨兵(4C8G)和 1 主 2 从的 Redis 服务器(8C16G)


  • 数据结构

考试基本信息使用 Hash 数据结构存储

key:"exam_base_"+学校 ID+班级 ID

value:{"考试 ID":1, "学科":"语文","考试时长":120,"满分":100,......}

考试题目信息使用 List 数据结构存储

key:"exam_paper_"+考试 ID

value:考试题目的列表

  • 读写分析

老师制定好考试试卷和考试时间之后,学生管理系统后台任务提前 10 分钟将考试基本信息和题目信息缓存到 redis 中,学生登录后,点击开始考试,根据学生的学校 ID 和班级 ID 从 redis 获取自己的考试 ID,根据考试 ID 获取考试题目信息。


用户头像

天天向上

关注

还未添加个人签名 2018.09.20 加入

还未添加个人简介

评论

发布
暂无评论
考试试卷存储方案