写点什么

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

作者:波波
  • 2021 年 11 月 20 日
  • 本文字数:576 字

    阅读完需:约 2 分钟

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

1、存储性能需求评估

1.1 分析过程:

对于试卷来说,每一门课程对应一张试卷,假设每个学生平均每学期 20 门课程考试,假设平均每套试题存储大小为 1M,总的试题存储量为:1M*20(课程)*2(学期)=40M,平均每年以 40M 速度增长。

假设学校的考试都安排在某一个月内,考试开始前,提前将试题存入数据库中,考试开始时,学生请求考试试卷,考试结束后对试卷进行归档,因此估算如下:

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

  • 写入试卷:由出题老师录入,几乎没有 TPS 要求。

1.2 结论:

  • 考试试题存储:每年增长 40M;

  • 试卷请求 QPS:5 万/s;

  • 提交试卷 TPS:1/s。

2、选择存储系统

2.1 存储架构逻辑选择

2.2 考试存储架构分析


2.3 存储架构图


3、设计存储方案

【数据结构设计】

使用 String 这种数据结构,key 就是对于科目的 id,value 就是试题序列化后的 JSON 字符串。

【读写分析】

读:考试开始时,学生根据考试科目 id 直接直接从 redis 读取试卷 JSON 字符串,再反序列化成试题对象,考生便可开始答题。

写:出题老师提前将试题序列化成 JSON 串后,根据考试课程 id 写入到 redis 中。

【性能评估】

从第一节分析的结论看出,主要的压力来自读请求,考试开始时所有学生读取的是同一份试卷。对于 5w/s 的 QPS 请求,可以采用 2 核 4G 的两台 redis 服务器主从架构。单台 redis 的 QPS 能到 10w/s,这里使用一台冗余来保证可靠性。


用户头像

波波

关注

还未添加个人签名 2017.12.20 加入

还未添加个人简介

评论

发布
暂无评论
千万级学生管理系统的考试试卷存储方案设计