写点什么

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

作者:π
  • 2022-11-06
    广东
  • 本文字数:836 字

    阅读完需:约 3 分钟

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

前言

本文是在明确学生管理系统考试需求后对考试试卷存储方案的一个详细架构设计文档,用于指导考试模块后续的开发、测试和运维。


1. 概述


经过架构师设计好的千万级学生管理系统,决定采用用 Redis 存储考试试卷,现在需要对这个架构再进一步的进行详细的方案设计。

存储架构图如下:


2.存储分析


假设有 100 所学校,每个学校每学期安排 60 门学科,每门学科每学期 2 次考试,考试采取机考的方式,每次考试设置 A、B 两套试卷,每套试卷的答案 20 判断题、20 选择题、4 道大题(答案 200 字以内),题目和答案可以为文字或图片。

则考试试卷记录的存储量为:

• 试卷总存储量:100 * 80(学科)* 2(考试次数)*2(AB 卷) * 20(试题)* 2(学期) * 3(只保留最新三年试卷)= 7G。

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

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


3.详细设计

学生考试题目可以复用,因此可以按学科维护一套题库。由于学生考试请求试卷时 TPS 达到 5 万/秒,在如此高并发情况下不宜直接从题库中生成一套试卷,所以需要每次考试前从题库中按老师的要求生成若干套试卷。


【数据结构设计】

Key:学校 ID + 学科 ID + 学期 ID+ 试卷类型+试卷 ID。

Value:String 类型, 采用 JSON 格式。


【读写分析】

1. 老师选择学科、学期和 AB 卷类型生成试卷,系统从题库中生成题目按照 key 保存考题至 Value;

2. 学生请求试卷,按照 key 读取 Value;


【服务器数量与性能】

单台 Redis 服务器在可以支持 10W+并发量,学生考试请求试卷 QPS 估算为 5 万/s,则单台服务器即可满足需求,但系统的可用行角度考虑,在增加少量服务器成本情况下保障高可用,可按最低集群数量 3 台部署。

系统采用 Redis sentinel 模式,一主两从三哨兵。

综上,采用三台服务器情况下可获得 30W+QPS 高性能服务。

用户头像

π

关注

还未添加个人签名 2019-01-31 加入

还未添加个人简介

评论

发布
暂无评论
千万级学生管理系统试卷存储方案设计_架构实战营_π_InfoQ写作社区