架构实战营模块四作业
设计千万级学生管理系统的考试试卷存储方案
【作业要求】
基于模块 4 第 6 课的估算结果和 Redis sentinel 的初步方案设计,完善考试试卷存储方案,具体包括:
• 完善 Redis 的数据结构设计,明确具体使用哪种 Redis 数据结构。
• 设计具体的读写流程(可以文字描述也可以序列图描述,序列图要有文字辅助说明)。
• 对照模块 4 第 6 课的性能估算结果,计算 Redis sentinel 集群的服务器数量和性能。
存储预估
试卷:假设试卷分为选择题 10 题,填空题 5 题,简答题 8 题,填空题题干+选项约 200 汉字,填空题约 100 汉字,简答题约 250 汉字,试卷上有 10 张图每张图 url 100 字节,每张试卷存储字节约: 200*10*3+100*5*3+250*8*3+100*10=15K,增加 5K 预留元信息和空白,共 20K
中国 2022 年有 4000 万大学生,每个大学的专业分布不一样,试卷也不一样,初步按照每个专业 200 人预估,每学期十门课,试卷存储数量为:4000W/200*10=200W,缓存共占用:38G
故采用一台 64GRedis 缓存,因为平台针对所有高校必须具备高可用设计,故线上使用 2 台 64GRedis 缓存服务,3 台 Redis Sentinel 作为高可用监控,共 5 台 Redis 服务器。
压缩:可使用类似胡曼压缩算法,压缩比约 50%,故每台 Redis 存储约 25G 试卷信息。
QPS 预估
按照 4000W 学生,每周考试 5 次计算,考试周平均每人有 5 场考试, 一共有 2 亿人场次考试需求.考试周期按照 3 周统计,每天上午一场 下午一场 每天 2 场,共 3 周,则考试场次为:5*3*2=30.
在考试后 30 秒内大家打开试卷,则请求 QPS 为:2 亿/30*60=11 万, 按照每台 Redis 能够负载 10WQPS 预估,2 台 Redis 压力是 OK 的。
可以考虑加入服务器本地缓存逻辑,按照每 500 学生一份试卷考虑。
评论