写点什么

千万级学生系统考试试卷存储架构设计

作者:Trent
  • 2022 年 4 月 29 日
  • 本文字数:562 字

    阅读完需:约 2 分钟

一、考试模块存储性能需求

  1. 考试模块性能需求

  2. 在校学生考试结果存储:2.4T;

  3. 离校学生考试结果存储:每年增长 0.6T;

  4. 试卷请求 QPS:5 万/s;

  5. 提交试卷 TPS:1700/s。

二、考试试卷存储方案

考虑到试卷请求的 QPS 达到 5W/S,提交试卷 TPS 微 1700/S,使用 redis 来进行试卷的存储。

2.1 数据结构设计

使用 redis 的有序集合 zset 来存储试卷。该数据结构的特点:去重和排序。

  • key 的构成:学校 id-院系 id-专业 id-课程 id-学期(如 2021 秋季学期为 202101,春季学期 202100)

  • score:题目的顺序编号

  • member:题目,对于其中的小题用 zset 嵌套。在题目中需要关联题库中的题目 id

2.2 试卷操作分析

2.2.1 构建试卷操作

添加试题:根据老师关联的学校 id-院系 id-专业 id-课程 id-学期 作为试卷的 key,向试卷集合中添加实体;

删除试题:根据 key 和指定题号删除试题;

修改试题:根据 key 和指定题号读取试题修改后再进行保存。

2.2.2 读取试卷操作

读取试卷:根据 key 读取对应的试卷并返回;

三、redis 集群服务器数量

由于单张试卷的数据量较大,单个 key 取回的记录预计为 100K,QPS 为 5W/S,请求的数据量为 5G/S;

在校生 1000 万对应的试卷数量为 300W(平均每 30 人共享一门课程的试卷,没人平均有 10 门考试),预估数据量 50G。

对于 redis 来说,单机的 QPS 可以达到 5W/S,结合数据量,sentinal 集群 3 台、主机 1 台、从机 5 台。sentinal 集群的机器配置为 8C16G,主机和从机都是 32C64G 的配置。


用户头像

Trent

关注

还未添加个人签名 2018.05.02 加入

还未添加个人简介

评论

发布
暂无评论
千万级学生系统考试试卷存储架构设计_架构训练营_Trent_InfoQ写作社区