架构实战营 - 模块四作业
考试用户行为建模和性能估算
假设有 2000 个学校,平均每个学校 30 门考试课程,每学期 2 次考试。
假设每张试卷 20 道判断题,每题 100 个字;20 道选择题,每题 200 字;4 道大题,每题 200 字。
试卷数量:2000(学校)*30(课)*2(次) = 12 万
每张试卷大致需要存储空间:(20*100 + 20*200 + 4*200)*2Byte ≈ 14KB
每学期试卷所需存储空间:12 万*14KB ≈ 2GB
假设学校的考试都安排在某一个月内,考试的时候请求试卷,提交答案,中间答题过程浏览器本地完成,由于考试集中在上午 4 小时和下午 4 小时, 且请求试卷集中在考试开始的前 1 分钟,提交答案集中在考试结束前的 30 分钟,因此估算如下:
请求试卷:1000 万 * 20(课)/ 20(周末不考试) / 4(每天 4 堂考试)/ 1 分钟 = 250 万请求/分钟 ≈ 5 万/每秒
部署模式
试卷请求 QPS 达到 5 万,按照经验数据,redis 单机支持 QPS:5 万-10 万,可以使用主从复制模式部署,考虑实现故障自动切换,使用哨兵模式部署 redis 集群。
存储结构
使用 Hash 存储试卷
Redis key:学校 ID+年级+课程 ID
Hash key:试卷 ID+题型+题号
Hash value:对应题目
过期时间:学期结束
读写流程
根据 学校 ID+年级+课程 ID 从 Redis 读取整个 Hash 内容。
评论