架构实战营:模块四作业
1、试卷存储容量估算
计算前提:1000 万学生,每个学生一个学期考 8 门,每年考 2 次。
空白试卷存储预估
每个学校 2 万个学生,则有 500 个学校,每个学校 100 个专业,每个专业 8 门课,每张试卷 1MB 存储
500 *100*8*2*1M = 780G ,存储需要 1T
学生答卷存储预估
假设每张试卷的存储大小为 500kB,试卷切分存储,则单张存储大小为 500K*2= 1MB ;
每个学年的试卷缓存容量:1000w * 8 * 1M * 2= 16T;
则存储完整四年大学的存储容量为 64T。
结论
(1) 开始考试时,存在突发高并发查询,因此采用 redis 存储空白答卷
(2) 成绩(总成绩、小题成绩、答案)存储到 mysql,便于数据分析;
2、试卷存储数据结构
key: 学校 code + 专业 code + 年级 code + 试卷 code
value:sorted map
3、试卷读写流程
学生登录管理系统,根据年级及考试安排,选择考试的科目和试卷;
系统根据 key 查询 redis 集群上的试卷内容;
学生答题;
试卷定期自动保存(可保存到本地,也可自动提交到后端存储);
学生提交试卷,答题内容存储到 mysql;
4、redis 集群资源预估
理论上 redis 单机就可以支持 5W-10w/QPS 读取,为了保证高可用,和性能冗余方面的考虑,采用 1 主 2 从 3 哨兵的部署方式,共计需要 6 台服务器,redis 集群单机内存 32G 即可满足需求;
评论