第四周作业 - 千万级学生系统课程存储设计
【作业要求】
基于模块 4 第 6 课的估算结果和 Redis sentinel 的初步方案设计完善考试试卷存储方案具体包括:
完善 Redis 的数据结构设计,明确具体使用哪种 Redis 数据结构。
设计具体的读写流程(可以文字描述也可以序列图描述,序列图要有文字辅助说明)。
对照模块 4 第 6 课的性能结果,计算 Redis Sentinel 集群的服务器数量和性能。
约束限制
学校学生人数按千万人计算
在校学生考试结果存储:1000 万 * 20(课)* 2(考试次数) * 1000(答案)* 2(学期) * 3(学年)= 2.4T
离校学生考试结果存储: 2.4T / 4 = 每年增长 0.6T
试卷请求 QPS:1000 万 * 20(课)/ 20(周末不考试) / 4(每天 4 堂考试)/ 1 分钟 = 5 万/s
提交试卷 TPS:1000 万 * 20(课)/ 20(周末不考试) / 4(每天 4 堂考试)/ 30 分钟 = 1700/s。
存储架构图
Redis 数据结构
试卷
数据结构: String
key : EXAM_学校 ID_学科 ID_学期 ID_考试 ID value:试卷内容(json)
复制代码
答卷
数据结构: String
key : ANSWER_学校 ID_学科 ID_学期 ID_学生 ID value:试卷答案(json)
复制代码
交互流程
Redis sentinel 集群的服务器数量和性能
三台 redis 服务(1 主 2 从) + 三台 sentinel(防止脑列)
试卷请求 TPS:5 万/s、提交试卷 TPS:1700/s、Redis 单机 TPS 5-10w
服务器数量 为 3 台服务器组成集群,性能能到 15~20w+ TPS
评论