写点什么

架构实战营 - 模块四作业

用户头像
en
关注
发布于: 2 小时前

学生考试管理系统存储方案需求分析

假设有 1000 个学校,每个学校 100 门需要考试课程,一共 4 个年级(8 学期),每学期 2 次考试,每次考试有 3 套备选试卷。同一科目两次考试直接时间间隔较长,可以只考虑一次考试所需存储空间。

假设每张试卷 20 道判断题,每题 100 个字;20 道选择题,每题 200 字;4 道大题,每题 200 字。

  • 试卷数量:1000(学校)*100(课)*3(备选卷) = 30 万

  • 每张试卷大致需要存储空间:(20*100 + 20*200 + 4*200)*2 ≈ 15KB

  • 试卷所需存储空间:30 万*15KB ≈ 5GB


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

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

存储结构

  • 使用 Hash 存储试卷

  • Redis key:学校 ID+年级+课程 ID

  • Hash key:试卷 ID

  • Hash value:直接将内容用 json 序列化后存储为 String 类型

  • 过期时间:考试结束后

读写流程

根据 学校 ID+年级+课程 ID 从 Redis(主从皆可) 读取整个 Hash 内容,然后随机一张试卷返回

性能预估

请求试卷大致 5 万 QPS,Redis 单机性能大致 5 万 QPS,由于请求数据较大(3 张试卷 45K),性能有一定程度下降,需要一主一从两台 Redis。

考虑 Redis 可能发生故障,无法提供服务,剩下的服务器要能满足性能需求,需要额外一台 Redis 服务器。

综上,需要 3 台服务器,一主两从。

容量预估

5G 数据可以全部存在一台 Redis 内存中,不需要数据分片。


用户头像

en

关注

还未添加个人签名 2020.10.21 加入

还未添加个人简介

评论

发布
暂无评论
架构实战营 - 模块四作业