架构实战营 设计千万级学生管理系统的考试试卷存储方案
一、估算一次考试的存储量
为了估算最大存储量,只以期中、期末考试为例
假设
在校学生 1000 万
每个专业 100 个学生
每份试卷 20 个选择题(每题 100 字) 20 个填空题(每题 50 字) 4 道大题(每题 200 字) 估算总共是 12K
由此可得
每次考试题目的存储量大概是 1000 万/100 * 12K = 12G
二、估算请求试卷和提交试卷的 QPS
由于考试集中在上午 4 小时和下午 4 小时,且请求试卷集中在考试开始的前 1 分钟,提交答案集中在考试结束前的 30 分钟. 所以可以估算
请求试卷 QPS: 1000 万 / 4 / 60 约等于 4 万/s
提交试卷 QPS: 1000 万/ 4 / 1800 约等于 1400/s
三、存储架构
经过存储量分析 以及 QPS 分析可以得出
1、每次考试试卷题目容量并不大 大约 12G, 但是读取试卷的操作需要 5 万的 QPS,所以可以使用 3 台 32G 的机器组成 Redis sentinel, 存储可以使用 string 数据结构, 题目使用 json 格式
2、每个学生的试卷答题需要单独存储,也就是说有 1000 万份试卷答题, 并且 QPS 只有 1400/s,适合使用 Hbase 集群存储
3、针对于老师对试卷的批改, 因为需要对试卷进行分析操作,适合关系数据库,所以这里在做批改请求时从 Hbase 集群中拉取该学生的答卷存入 mysql 做批改分析,在批改结束后将成绩等数据存回到 Hbase 集群中
评论