写点什么

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

作者:流火
  • 2022 年 4 月 29 日
  • 本文字数:997 字

    阅读完需:约 3 分钟

现有资料

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

课程数量预估:

2021 年,全国共有高等学校 3012 所,其中,普通本科学校 1238 所;本科层次职业学校 32 所;高职(专科)学校 1486 所;成人高等学校 256 所。各种形式的高等教育在学总规模 4430 万人,高等教育毛入学率 57.8%。

全国普通、职业本专科共招生 1001.32 万人,其中,普通本科招生 444.60 万人;职业本科招生 4.14 万人;高职(专科)招生 552.58 万人。

全国普通、职业本专科共有在校生 3496.13 万人,其中,普通本科在校生 1893.10 万人;职业本科在校生 12.93 万人;高职(专科)在校生 1590.10 万人。

全国共有高等教育专任教师 188.52 万人,其中,普通本科学校 126.97 万人;本科层次职业学校 2.56 万人;高职(专科)学校 57.02 万人;成人高校 1.97 万人。


估算: 每个学校 教师 700 人 学生 2 万 人。

千万级学生管理系统 得出 500 所 学校


试卷内容预估:英语考试内容最大 100 KB



试卷使用时间预估:假设学校的考试都安排在某一个月内,考试的时候请求试卷,提交答案,中间答题过程浏览器本地完成,由于考试集中在上午 4 小时和下午 4 小时,且请求试卷集中在考试开始的前 1 分钟,提交答案集中在考试结束前的 30 分钟。


因此估算如下:

• 试卷: 100 KB * 20 (课) * 3(只有前三年考试)* 500 所 ≈ 3G ≈ 5G

• 创建试卷:教师创建 时间可在 考试前即可。

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


• 提交试卷: 存储 结果 即可 Hbase 集群。

存储性能需求汇总


试卷存储: 5 G

试卷请求 QPS:5 万/s;

试卷存储架构



存储方案

【技术】 Redis

【数据结构设计】

ScoredSet

Key:学校 ID + 课程 ID + 考试时间。

Value: score 顺序 json 题目内容

读写流程

  1. 生成试卷:教师登录系统,根据 课程 ID 和考试时间 生成 考试试卷内容

  2. 获取试卷:学生登录系统,根据 学校+课程+加考试时间 获取 试卷内容。试卷内容 使用 Sored Set 存储,可以根据 score 获取 题目内容 进行答题 或者 跳过,随后在进行解答

  3. 提交试卷:直接记录 题目答案,推送到 Hbase。


部署方案

试卷请求 QPS 为 5 万/s,试卷存储为 5 G Redis 单机读取性能为 10W 左右,因此单机就可以满足读取性能要求,为保障 系统高可用 使用 redis 哨兵模式 一主两从,Sentinel 监控 当主服务器进入下线状态时,sentinel 可以将该主服务器下的某一从服务器升级为主服务器继续提供服务,从而保证 redis 的高可用性。

Redis Sentinel



发布于: 刚刚阅读数: 3
用户头像

流火

关注

还未添加个人签名 2018.01.31 加入

还未添加个人简介

评论

发布
暂无评论
设计千万级学生管理系统的考试试卷存储方案_流火_InfoQ写作社区